diff --git a/src/grammar/trinosql/TrinoSql.g4 b/src/grammar/trinosql/TrinoSql.g4 index 302ab25..a28398b 100644 --- a/src/grammar/trinosql/TrinoSql.g4 +++ b/src/grammar/trinosql/TrinoSql.g4 @@ -45,151 +45,150 @@ standaloneRowPattern: rowPattern SEMICOLON?; statement: query # statementDefault - | USE schema = identifier # use - | USE catalog = identifier '.' schema = identifier # use - | CREATE SCHEMA (IF NOT EXISTS)? qualifiedName ( - AUTHORIZATION principal - )? (WITH properties)? # createSchema - | DROP SCHEMA (IF EXISTS)? qualifiedName (CASCADE | RESTRICT)? # dropSchema - | ALTER SCHEMA qualifiedName RENAME TO identifier # renameSchema - | ALTER SCHEMA qualifiedName SET AUTHORIZATION principal # setSchemaAuthorization - | CREATE TABLE (IF NOT EXISTS)? qualifiedName columnAliases? ( - COMMENT string - )? (WITH properties)? AS (query | '(' query ')') ( - WITH (NO)? DATA + | KW_USE schemaName # use + | KW_CREATE KW_SCHEMA (KW_IF KW_NOT KW_EXISTS)? schemaNameCreate ( + KW_AUTHORIZATION principal + )? (KW_WITH properties)? # createSchema + | KW_DROP KW_SCHEMA (KW_IF KW_EXISTS)? schemaName (KW_CASCADE | KW_RESTRICT)? # dropSchema + | KW_ALTER KW_SCHEMA schemaName KW_RENAME KW_TO schemaNameCreate # renameSchema + | KW_ALTER KW_SCHEMA schemaName KW_SET KW_AUTHORIZATION principal # setSchemaAuthorization + | KW_CREATE KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate columnAliases? ( + KW_COMMENT string + )? (KW_WITH properties)? KW_AS (query | '(' query ')') ( + KW_WITH (KW_NO)? KW_DATA )? # createTableAsSelect - | CREATE TABLE (IF NOT EXISTS)? qualifiedName '(' tableElement ( + | KW_CREATE KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate '(' tableElement ( ',' tableElement - )* ')' (COMMENT string)? (WITH properties)? # createTable - | DROP TABLE (IF EXISTS)? qualifiedName # dropTable - | INSERT INTO qualifiedName columnAliases? query # insertInto - | DELETE FROM qualifiedName (WHERE booleanExpression)? # delete - | TRUNCATE TABLE qualifiedName # truncateTable - | ALTER TABLE (IF EXISTS)? from = qualifiedName RENAME TO to = qualifiedName # renameTable - | COMMENT ON TABLE qualifiedName IS (string | NULL) # commentTable - | COMMENT ON COLUMN qualifiedName IS (string | NULL) # commentColumn - | ALTER TABLE (IF EXISTS)? tableName = qualifiedName RENAME COLUMN ( - IF EXISTS - )? from = identifier TO to = identifier # renameColumn - | ALTER TABLE (IF EXISTS)? tableName = qualifiedName DROP COLUMN ( - IF EXISTS + )* ')' (KW_COMMENT string)? (KW_WITH properties)? # createTable + | KW_DROP KW_TABLE (KW_IF KW_EXISTS)? tableName # dropTable + | KW_INSERT KW_INTO tableName columnAliases? query # insertInto + | KW_DELETE KW_FROM tableName (KW_WHERE booleanExpression)? # delete + | KW_TRUNCATE KW_TABLE tableName # truncateTable + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? from = tableName KW_RENAME KW_TO to = tableNameCreate # renameTable + | KW_COMMENT KW_ON KW_TABLE tableName KW_IS (string | KW_NULL) # commentTable + | KW_COMMENT KW_ON KW_COLUMN qualifiedName KW_IS (string | KW_NULL) # commentColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_RENAME KW_COLUMN ( + KW_IF KW_EXISTS + )? from = identifier KW_TO to = identifier # renameColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_DROP KW_COLUMN ( + KW_IF KW_EXISTS )? column = qualifiedName # dropColumn - | ALTER TABLE (IF EXISTS)? tableName = qualifiedName ADD COLUMN ( - IF NOT EXISTS + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_ADD KW_COLUMN ( + KW_IF KW_NOT KW_EXISTS )? column = columnDefinition # addColumn - | ALTER TABLE tableName = qualifiedName SET AUTHORIZATION principal # setTableAuthorization - | ALTER TABLE tableName = qualifiedName SET PROPERTIES propertyAssignments # setTableProperties - | ALTER TABLE tableName = qualifiedName EXECUTE procedureName = identifier ( + | KW_ALTER KW_TABLE tableName KW_SET KW_AUTHORIZATION principal # setTableAuthorization + | KW_ALTER KW_TABLE tableName KW_SET KW_PROPERTIES propertyAssignments # setTableProperties + | KW_ALTER KW_TABLE tableName KW_EXECUTE procedureName = identifier ( '(' (callArgument (',' callArgument)*)? ')' - )? (WHERE where = booleanExpression)? # tableExecute - | ANALYZE qualifiedName (WITH properties)? # analyze - | CREATE (OR REPLACE)? MATERIALIZED VIEW (IF NOT EXISTS)? qualifiedName ( - COMMENT string - )? (WITH properties)? AS query # createMaterializedView - | CREATE (OR REPLACE)? VIEW qualifiedName (COMMENT string)? ( - SECURITY (DEFINER | INVOKER) - )? AS query # createView - | REFRESH MATERIALIZED VIEW qualifiedName # refreshMaterializedView - | DROP MATERIALIZED VIEW (IF EXISTS)? qualifiedName # dropMaterializedView - | ALTER MATERIALIZED VIEW (IF EXISTS)? from = qualifiedName RENAME TO to = qualifiedName # renameMaterializedView - | ALTER MATERIALIZED VIEW qualifiedName - SET PROPERTIES propertyAssignments # setMaterializedViewProperties - | DROP VIEW (IF EXISTS)? qualifiedName # dropView - | ALTER VIEW from = qualifiedName RENAME TO to = qualifiedName # renameView - | ALTER VIEW from = qualifiedName SET AUTHORIZATION principal # setViewAuthorization - | CALL qualifiedName '(' (callArgument (',' callArgument)*)? ')' # call - | CREATE ROLE name = identifier - (WITH ADMIN grantor)? - (IN catalog = identifier)? # createRole - | DROP ROLE name = identifier # dropRole - | GRANT roles TO principal + )? (KW_WHERE where = booleanExpression)? # tableExecute + | KW_ANALYZE tableName (KW_WITH properties)? # analyze + | KW_CREATE (KW_OR KW_REPLACE)? KW_MATERIALIZED KW_VIEW (KW_IF KW_NOT KW_EXISTS)? viewNameCreate ( + KW_COMMENT string + )? (KW_WITH properties)? KW_AS query # createMaterializedView + | KW_CREATE (KW_OR KW_REPLACE)? KW_VIEW viewNameCreate (KW_COMMENT string)? ( + KW_SECURITY (KW_DEFINER | KW_INVOKER) + )? KW_AS query # createView + | KW_REFRESH KW_MATERIALIZED KW_VIEW viewName # refreshMaterializedView + | KW_DROP KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? viewName # dropMaterializedView + | KW_ALTER KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? from = viewName KW_RENAME KW_TO to = viewNameCreate # renameMaterializedView + | KW_ALTER KW_MATERIALIZED KW_VIEW viewName + KW_SET KW_PROPERTIES propertyAssignments # setMaterializedViewProperties + | KW_DROP KW_VIEW (KW_IF KW_EXISTS)? viewName # dropView + | KW_ALTER KW_VIEW from = viewName KW_RENAME KW_TO to = viewNameCreate # renameView + | KW_ALTER KW_VIEW from = viewName KW_SET KW_AUTHORIZATION principal # setViewAuthorization + | KW_CALL functionName '(' (callArgument (',' callArgument)*)? ')' # call + | KW_CREATE KW_ROLE name = identifier + (KW_WITH KW_ADMIN grantor)? + (KW_IN catalogName)? # createRole + | KW_DROP KW_ROLE name = identifier # dropRole + | KW_GRANT roles KW_TO principal (',' principal)* - (WITH ADMIN OPTION)? - (GRANTED BY grantor)? - (IN catalog = identifier)? # grantRoles - | REVOKE (ADMIN OPTION FOR)? roles FROM principal + (KW_WITH KW_ADMIN KW_OPTION)? + (KW_GRANTED KW_BY grantor)? + (KW_IN catalogName)? # grantRoles + | KW_REVOKE (KW_ADMIN KW_OPTION KW_FOR)? roles KW_FROM principal (',' principal)* - (GRANTED BY grantor)? - (IN catalog = identifier)? # revokeRoles - | SET ROLE (ALL | NONE | role = identifier) ( - IN catalog = identifier - )? # setRole | GRANT (privilege (',' privilege)* | ALL PRIVILEGES) ON ( - SCHEMA - | TABLE - )? qualifiedName TO grantee = principal (WITH GRANT OPTION)? # grant - | DENY (privilege (',' privilege)* | ALL PRIVILEGES) ON ( - SCHEMA - | TABLE - )? qualifiedName TO grantee = principal # deny - | REVOKE (GRANT OPTION FOR)? ( + (KW_GRANTED KW_BY grantor)? + (KW_IN catalogName)? # revokeRoles + | KW_SET KW_ROLE (KW_ALL | KW_NONE | role = identifier) ( + KW_IN catalogName + )? # setRole | KW_GRANT (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( + KW_SCHEMA? schemaName + | KW_TABLE? tableName + )? KW_TO grantee = principal (KW_WITH KW_GRANT KW_OPTION)? # grant + | KW_DENY (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( + KW_SCHEMA? schemaName + | KW_TABLE? tableName + ) KW_TO grantee = principal # deny + | KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? ( privilege (',' privilege)* - | ALL PRIVILEGES - ) ON (SCHEMA | TABLE)? qualifiedName FROM grantee = principal # revoke - | SHOW GRANTS (ON TABLE? qualifiedName)? # showGrants - | EXPLAIN ANALYZE? VERBOSE? ( + | KW_ALL KW_PRIVILEGES + ) KW_ON (KW_SCHEMA? schemaName | KW_TABLE? tableName)? KW_FROM grantee = principal # revoke + | KW_SHOW KW_GRANTS (KW_ON KW_TABLE? tableName)? # showGrants + | KW_EXPLAIN KW_ANALYZE? KW_VERBOSE? ( '(' explainOption (',' explainOption)* ')' )? statement # explain - | SHOW CREATE TABLE qualifiedName # showCreateTable - | SHOW CREATE SCHEMA qualifiedName # showCreateSchema - | SHOW CREATE VIEW qualifiedName # showCreateView - | SHOW CREATE MATERIALIZED VIEW qualifiedName # showCreateMaterializedView - | SHOW TABLES ((FROM | IN) qualifiedName)? ( - LIKE pattern = string (ESCAPE escape = string)? + | KW_SHOW KW_CREATE KW_TABLE tableName # showCreateTable + | KW_SHOW KW_CREATE KW_SCHEMA schemaName # showCreateSchema + | KW_SHOW KW_CREATE KW_VIEW viewName # showCreateView + | KW_SHOW KW_CREATE KW_MATERIALIZED KW_VIEW viewName # showCreateMaterializedView + | KW_SHOW KW_TABLES ((KW_FROM | KW_IN) schemaName)? ( + KW_LIKE pattern = string (KW_ESCAPE escape = string)? )? # showTables - | SHOW SCHEMAS ((FROM | IN) identifier)? ( - LIKE pattern = string (ESCAPE escape = string)? + | KW_SHOW KW_SCHEMAS ((KW_FROM | KW_IN) catalogName)? ( + KW_LIKE pattern = string (KW_ESCAPE escape = string)? )? # showSchemas - | SHOW CATALOGS ( - LIKE pattern = string (ESCAPE escape = string)? + | KW_SHOW KW_CATALOGS ( + KW_LIKE pattern = string (KW_ESCAPE escape = string)? )? # showCatalogs - | SHOW COLUMNS (FROM | IN) qualifiedName? ( - LIKE pattern = string (ESCAPE escape = string)? + | KW_SHOW KW_COLUMNS (KW_FROM | KW_IN) tableOrViewName? ( + KW_LIKE pattern = string (KW_ESCAPE escape = string)? )? # showColumns - | SHOW STATS FOR qualifiedName # showStats - | SHOW STATS FOR '(' query ')' # showStatsForQuery - | SHOW CURRENT? ROLES ((FROM | IN) identifier)? # showRoles - | SHOW ROLE GRANTS ((FROM | IN) identifier)? # showRoleGrants - | DESCRIBE qualifiedName # showColumns - | DESC qualifiedName # showColumns - | SHOW FUNCTIONS ( - LIKE pattern = string (ESCAPE escape = string)? + | KW_SHOW KW_STATS KW_FOR tableName # showStats + | KW_SHOW KW_STATS KW_FOR '(' query ')' # showStatsForQuery + | KW_SHOW KW_CURRENT? KW_ROLES ((KW_FROM | KW_IN) identifier)? # showRoles + | KW_SHOW KW_ROLE KW_GRANTS ((KW_FROM | KW_IN) identifier)? # showRoleGrants + | KW_DESCRIBE tableOrViewName # showColumns + | KW_DESC tableOrViewName # showColumns + | KW_SHOW KW_FUNCTIONS ( + KW_LIKE pattern = string (KW_ESCAPE escape = string)? )? # showFunctions - | SHOW SESSION ( - LIKE pattern = string (ESCAPE escape = string)? + | KW_SHOW KW_SESSION ( + KW_LIKE pattern = string (KW_ESCAPE escape = string)? )? # showSession - | SET SESSION qualifiedName EQ expression # setSession - | RESET SESSION qualifiedName # resetSession - | START TRANSACTION (transactionMode (',' transactionMode)*)? # startTransaction - | COMMIT WORK? # commit - | ROLLBACK WORK? # rollback - | PREPARE identifier FROM statement # prepare - | DEALLOCATE PREPARE identifier # deallocate - | EXECUTE identifier (USING expression (',' expression)*)? # execute - | DESCRIBE INPUT identifier # describeInput - | DESCRIBE OUTPUT identifier # describeOutput - | SET PATH pathSpecification # setPath - | SET TIME ZONE (LOCAL | expression) # setTimeZone - | UPDATE qualifiedName SET updateAssignment ( + | KW_SET KW_SESSION qualifiedName EQ expression # setSession + | KW_RESET KW_SESSION qualifiedName # resetSession + | KW_START KW_TRANSACTION (transactionMode (',' transactionMode)*)? # startTransaction + | KW_COMMIT KW_WORK? # commit + | KW_ROLLBACK KW_WORK? # rollback + | KW_PREPARE identifier KW_FROM statement # prepare + | KW_DEALLOCATE KW_PREPARE identifier # deallocate + | KW_EXECUTE identifier (KW_USING expression (',' expression)*)? # execute + | KW_DESCRIBE KW_INPUT identifier # describeInput + | KW_DESCRIBE KW_OUTPUT identifier # describeOutput + | KW_SET KW_PATH pathSpecification # setPath + | KW_SET KW_TIME KW_ZONE (KW_LOCAL | expression) # setTimeZone + | KW_UPDATE tableName KW_SET updateAssignment ( ',' updateAssignment - )* (WHERE where = booleanExpression)? # update - | MERGE INTO qualifiedName (AS? identifier)? USING relation ON expression mergeCase+ # merge - | SHOW COMMENT ON TABLE qualifiedName # showTableComment - | SHOW COMMENT ON COLUMN qualifiedName # showColumnComment; + )* (KW_WHERE where = booleanExpression)? # update + | KW_MERGE KW_INTO tableName (KW_AS? identifier)? KW_USING relation KW_ON expression mergeCase+ # merge + | KW_SHOW KW_COMMENT KW_ON KW_TABLE tableName # showTableComment + | KW_SHOW KW_COMMENT KW_ON KW_COLUMN qualifiedName # showColumnComment; query: with? queryNoWith; -with: WITH RECURSIVE? namedQuery (',' namedQuery)*; +with: KW_WITH KW_RECURSIVE? namedQuery (',' namedQuery)*; tableElement: columnDefinition | likeClause; columnDefinition: - identifier type (NOT NULL)? (COMMENT string)? ( - WITH properties + identifier type (KW_NOT KW_NULL)? (KW_COMMENT string)? ( + KW_WITH properties )?; likeClause: - LIKE qualifiedName ( - optionType = (INCLUDING | EXCLUDING) PROPERTIES + KW_LIKE tableName ( + optionType = (KW_INCLUDING | KW_EXCLUDING) KW_PROPERTIES )?; properties: '(' propertyAssignments ')'; @@ -199,178 +198,178 @@ propertyAssignments: property (',' property)*; property: identifier EQ propertyValue; propertyValue: - DEFAULT # defaultPropertyValue + KW_DEFAULT # defaultPropertyValue | expression # nonDefaultPropertyValue; queryNoWith: - queryTerm (ORDER BY sortItem (',' sortItem)*)? ( - OFFSET offset = rowCount (ROW | ROWS)? + queryTerm (KW_ORDER KW_BY sortItem (',' sortItem)*)? ( + KW_OFFSET offset = rowCount (KW_ROW | KW_ROWS)? )? ( - (LIMIT limit = limitRowCount) + (KW_LIMIT limit = limitRowCount) | ( - FETCH (FIRST | NEXT) (fetchFirst = rowCount)? ( - ROW - | ROWS - ) (ONLY | WITH TIES) + KW_FETCH (KW_FIRST | KW_NEXT) (fetchFirst = rowCount)? ( + KW_ROW + | KW_ROWS + ) (KW_ONLY | KW_WITH KW_TIES) ) )?; -limitRowCount: ALL | rowCount; +limitRowCount: KW_ALL | rowCount; rowCount: INTEGER_VALUE | QUESTION_MARK; queryTerm: queryPrimary # queryTermDefault - | left = queryTerm operator = INTERSECT setQuantifier? right = queryTerm # setOperation - | left = queryTerm operator = (UNION | EXCEPT) setQuantifier? right = queryTerm # setOperation; + | left = queryTerm operator = KW_INTERSECT setQuantifier? right = queryTerm # setOperation + | left = queryTerm operator = (KW_UNION | KW_EXCEPT) setQuantifier? right = queryTerm # setOperation; queryPrimary: querySpecification # queryPrimaryDefault - | TABLE qualifiedName # table - | VALUES expression (',' expression)* # inlineTable + | KW_TABLE tableName # table + | KW_VALUES expression (',' expression)* # inlineTable | '(' queryNoWith ')' # subquery; sortItem: - expression ordering = (ASC | DESC)? ( - NULLS nullOrdering = (FIRST | LAST) + expression ordering = (KW_ASC | KW_DESC)? ( + KW_NULLS nullOrdering = (KW_FIRST | KW_LAST) )?; querySpecification: - SELECT setQuantifier? selectItem (',' selectItem)* ( - FROM relation (',' relation)* - )? (WHERE where = booleanExpression)? (GROUP BY groupBy)? ( - HAVING having = booleanExpression - )? (WINDOW windowDefinition (',' windowDefinition)*)?; + KW_SELECT setQuantifier? selectItem (',' selectItem)* ( + KW_FROM relation (',' relation)* + )? (KW_WHERE where = booleanExpression)? (KW_GROUP KW_BY groupBy)? ( + KW_HAVING having = booleanExpression + )? (KW_WINDOW windowDefinition (',' windowDefinition)*)?; groupBy: setQuantifier? groupingElement (',' groupingElement)*; groupingElement: groupingSet # singleGroupingSet - | ROLLUP '(' (expression (',' expression)*)? ')' # rollup - | CUBE '(' (expression (',' expression)*)? ')' # cube - | GROUPING SETS '(' groupingSet (',' groupingSet)* ')' # multipleGroupingSets; + | KW_ROLLUP '(' (expression (',' expression)*)? ')' # rollup + | KW_CUBE '(' (expression (',' expression)*)? ')' # cube + | KW_GROUPING KW_SETS '(' groupingSet (',' groupingSet)* ')' # multipleGroupingSets; groupingSet: '(' (expression (',' expression)*)? ')' | expression; windowDefinition: - name = identifier AS '(' windowSpecification ')'; + name = identifier KW_AS '(' windowSpecification ')'; windowSpecification: (existingWindowName = identifier)? ( - PARTITION BY partition += expression ( + KW_PARTITION KW_BY partition += expression ( ',' partition += expression )* - )? (ORDER BY sortItem (',' sortItem)*)? windowFrame?; + )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? windowFrame?; -namedQuery: name = identifier (columnAliases)? AS '(' query ')'; +namedQuery: name = identifier (columnAliases)? KW_AS '(' query ')'; -setQuantifier: DISTINCT | ALL; +setQuantifier: KW_DISTINCT | KW_ALL; selectItem: - expression (AS? identifier)? # selectSingle - | primaryExpression '.' ASTERISK (AS columnAliases)? # selectAll + expression (KW_AS? identifier)? # selectSingle + | primaryExpression '.' ASTERISK (KW_AS columnAliases)? # selectAll | ASTERISK # selectAll; relation: left = relation ( - CROSS JOIN right = sampledRelation - | joinType JOIN rightRelation = relation joinCriteria - | NATURAL joinType JOIN right = sampledRelation + KW_CROSS KW_JOIN right = sampledRelation + | joinType KW_JOIN rightRelation = relation joinCriteria + | KW_NATURAL joinType KW_JOIN right = sampledRelation ) # joinRelation | sampledRelation # relationDefault; -joinType: INNER? | LEFT OUTER? | RIGHT OUTER? | FULL OUTER?; +joinType: KW_INNER? | KW_LEFT KW_OUTER? | KW_RIGHT KW_OUTER? | KW_FULL KW_OUTER?; joinCriteria: - ON booleanExpression - | USING '(' identifier (',' identifier)* ')'; + KW_ON booleanExpression + | KW_USING '(' identifier (',' identifier)* ')'; sampledRelation: patternRecognition ( - TABLESAMPLE sampleType '(' percentage = expression ')' + KW_TABLESAMPLE sampleType '(' percentage = expression ')' )?; -sampleType: BERNOULLI | SYSTEM; +sampleType: KW_BERNOULLI | KW_SYSTEM; patternRecognition: aliasedRelation ( - MATCH_RECOGNIZE '(' ( - PARTITION BY partition += expression ( + KW_MATCH_RECOGNIZE '(' ( + KW_PARTITION KW_BY partition += expression ( ',' partition += expression )* - )? (ORDER BY sortItem (',' sortItem)*)? ( - MEASURES measureDefinition (',' measureDefinition)* - )? rowsPerMatch? (AFTER MATCH skipTo)? (INITIAL | SEEK)? PATTERN '(' rowPattern ')' ( - SUBSET subsetDefinition (',' subsetDefinition)* - )? DEFINE variableDefinition (',' variableDefinition)* ')' ( - AS? identifier columnAliases? + )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? ( + KW_MEASURES measureDefinition (',' measureDefinition)* + )? rowsPerMatch? (KW_AFTER KW_MATCH skipTo)? (KW_INITIAL | KW_SEEK)? KW_PATTERN '(' rowPattern ')' ( + KW_SUBSET subsetDefinition (',' subsetDefinition)* + )? KW_DEFINE variableDefinition (',' variableDefinition)* ')' ( + KW_AS? identifier columnAliases? )? )?; -measureDefinition: expression AS identifier; +measureDefinition: expression KW_AS identifier; rowsPerMatch: - ONE ROW PER MATCH - | ALL ROWS PER MATCH emptyMatchHandling?; + KW_ONE KW_ROW KW_PER KW_MATCH + | KW_ALL KW_ROWS KW_PER KW_MATCH emptyMatchHandling?; emptyMatchHandling: - SHOW EMPTY MATCHES - | OMIT EMPTY MATCHES - | WITH UNMATCHED ROWS; + KW_SHOW KW_EMPTY KW_MATCHES + | KW_OMIT KW_EMPTY KW_MATCHES + | KW_WITH KW_UNMATCHED KW_ROWS; skipTo: - 'SKIP' TO NEXT ROW - | 'SKIP' PAST LAST ROW - | 'SKIP' TO FIRST identifier - | 'SKIP' TO LAST identifier - | 'SKIP' TO identifier; + 'SKIP' KW_TO KW_NEXT KW_ROW + | 'SKIP' KW_PAST KW_LAST KW_ROW + | 'SKIP' KW_TO KW_FIRST identifier + | 'SKIP' KW_TO KW_LAST identifier + | 'SKIP' KW_TO identifier; subsetDefinition: name = identifier EQ '(' union += identifier ( ',' union += identifier )* ')'; -variableDefinition: identifier AS expression; +variableDefinition: identifier KW_AS expression; aliasedRelation: - relationPrimary (AS? identifier columnAliases?)?; + relationPrimary (KW_AS? identifier columnAliases?)?; columnAliases: '(' identifier (',' identifier)* ')'; relationPrimary: - qualifiedName # tableName + tableOrViewName #tableOrViewRelation | '(' query ')' # subqueryRelation - | UNNEST '(' expression (',' expression)* ')' ( - WITH ORDINALITY + | KW_UNNEST '(' expression (',' expression)* ')' ( + KW_WITH KW_ORDINALITY )? # unnest - | LATERAL '(' query ')' # lateral + | KW_LATERAL '(' query ')' # lateral | '(' relation ')' # parenthesizedRelation; expression: booleanExpression; booleanExpression: valueExpression predicate[$valueExpression.ctx]? # predicated - | NOT booleanExpression # logicalNot - | left = booleanExpression operator = AND right = booleanExpression # logicalBinary - | left = booleanExpression operator = OR right = booleanExpression # logicalBinary; + | KW_NOT booleanExpression # logicalNot + | left = booleanExpression operator = KW_AND right = booleanExpression # logicalBinary + | left = booleanExpression operator = KW_OR right = booleanExpression # logicalBinary; // workaround for https://github.com/antlr/antlr4/issues/780 predicate[ParserRuleContext value]: comparisonOperator right = valueExpression # comparison | comparisonOperator comparisonQuantifier '(' query ')' # quantifiedComparison - | NOT? BETWEEN lower = valueExpression AND upper = valueExpression # between - | NOT? IN '(' expression (',' expression)* ')' # inList - | NOT? IN '(' query ')' # inSubquery - | NOT? LIKE pattern = valueExpression ( - ESCAPE escape = valueExpression + | KW_NOT? KW_BETWEEN lower = valueExpression KW_AND upper = valueExpression # between + | KW_NOT? KW_IN '(' expression (',' expression)* ')' # inList + | KW_NOT? KW_IN '(' query ')' # inSubquery + | KW_NOT? KW_LIKE pattern = valueExpression ( + KW_ESCAPE escape = valueExpression )? # like - | IS NOT? NULL # nullPredicate - | IS NOT? DISTINCT FROM right = valueExpression # distinctFrom; + | KW_IS KW_NOT? KW_NULL # nullPredicate + | KW_IS KW_NOT? KW_DISTINCT KW_FROM right = valueExpression # distinctFrom; valueExpression: primaryExpression # valueExpressionDefault - | valueExpression AT timeZoneSpecifier # atTimeZone + | valueExpression KW_AT timeZoneSpecifier # atTimeZone | operator = (MINUS | PLUS) valueExpression # arithmeticUnary | left = valueExpression operator = ( ASTERISK @@ -381,101 +380,101 @@ valueExpression: | left = valueExpression CONCAT right = valueExpression # concatenation; primaryExpression: - NULL # nullLiteral + KW_NULL # nullLiteral | interval # intervalLiteral | identifier string # typeConstructor - | DOUBLE PRECISION string # typeConstructor + | KW_DOUBLE KW_PRECISION string # typeConstructor | number # numericLiteral | booleanValue # booleanLiteral | string # stringLiteral | BINARY_LITERAL # binaryLiteral | QUESTION_MARK # parameter - | POSITION '(' valueExpression IN valueExpression ')' # position + | KW_POSITION '(' valueExpression KW_IN valueExpression ')' # position | '(' expression (',' expression)+ ')' # rowConstructor - | ROW '(' expression (',' expression)* ')' # rowConstructor - | qualifiedName '(' ASTERISK ')' filter? over? # functionCall - | processingMode? qualifiedName '(' ( + | KW_ROW '(' expression (',' expression)* ')' # rowConstructor + | functionName '(' ASTERISK ')' filter? over? # functionCall + | processingMode? functionName '(' ( setQuantifier? expression (',' expression)* - )? (ORDER BY sortItem (',' sortItem)*)? ')' filter? ( + )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? ')' filter? ( nullTreatment? over )? # functionCall | identifier over # measure | identifier '->' expression # lambda | '(' (identifier (',' identifier)*)? ')' '->' expression # lambda | '(' query ')' # subqueryExpression - // This is an extension to ANSI SQL, which considers EXISTS to be a - | EXISTS '(' query ')' # exists - | CASE operand = expression whenClause+ ( - ELSE elseExpression = expression - )? END # simpleCase - | CASE whenClause+ (ELSE elseExpression = expression)? END # searchedCase - | CAST '(' expression AS type ')' # cast - | TRY_CAST '(' expression AS type ')' # cast - | ARRAY '[' (expression (',' expression)*)? ']' # arrayConstructor + // This is an extension to ANSI SQL, which considers KW_EXISTS to be a + | KW_EXISTS '(' query ')' # exists + | KW_CASE operand = expression whenClause+ ( + KW_ELSE elseExpression = expression + )? KW_END # simpleCase + | KW_CASE whenClause+ (KW_ELSE elseExpression = expression)? KW_END # searchedCase + | KW_CAST '(' expression KW_AS type ')' # cast + | KW_TRY_CAST '(' expression KW_AS type ')' # cast + | KW_ARRAY '[' (expression (',' expression)*)? ']' # arrayConstructor | value = primaryExpression '[' index = valueExpression ']' # subscript | identifier # columnReference | base = primaryExpression '.' fieldName = identifier # dereference - | name = CURRENT_DATE # specialDateTimeFunction - | name = CURRENT_TIME ('(' precision = INTEGER_VALUE ')')? # specialDateTimeFunction - | name = CURRENT_TIMESTAMP ( + | name = KW_CURRENT_DATE # specialDateTimeFunction + | name = KW_CURRENT_TIME ('(' precision = INTEGER_VALUE ')')? # specialDateTimeFunction + | name = KW_CURRENT_TIMESTAMP ( '(' precision = INTEGER_VALUE ')' )? # specialDateTimeFunction - | name = LOCALTIME ('(' precision = INTEGER_VALUE ')')? # specialDateTimeFunction - | name = LOCALTIMESTAMP ('(' precision = INTEGER_VALUE ')')? # specialDateTimeFunction - | name = CURRENT_USER # currentUser - | name = CURRENT_CATALOG # currentCatalog - | name = CURRENT_SCHEMA # currentSchema - | name = CURRENT_PATH # currentPath - | SUBSTRING '(' valueExpression FROM valueExpression ( - FOR valueExpression + | name = KW_LOCALTIME ('(' precision = INTEGER_VALUE ')')? # specialDateTimeFunction + | name = KW_LOCALTIMESTAMP ('(' precision = INTEGER_VALUE ')')? # specialDateTimeFunction + | name = KW_CURRENT_USER # currentUser + | name = KW_CURRENT_CATALOG # currentCatalog + | name = KW_CURRENT_SCHEMA # currentSchema + | name = KW_CURRENT_PATH # currentPath + | KW_SUBSTRING '(' valueExpression KW_FROM valueExpression ( + KW_FOR valueExpression )? ')' # substring - | NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize - | EXTRACT '(' identifier FROM valueExpression ')' # extract + | KW_NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize + | KW_EXTRACT '(' identifier KW_FROM valueExpression ')' # extract | '(' expression ')' # parenthesizedExpression - | GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation; + | KW_GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation; -processingMode: RUNNING | FINAL; +processingMode: KW_RUNNING | KW_FINAL; -nullTreatment: IGNORE NULLS | RESPECT NULLS; +nullTreatment: KW_IGNORE KW_NULLS | KW_RESPECT KW_NULLS; string: STRING # basicStringLiteral - | UNICODE_STRING (UESCAPE STRING)? # unicodeStringLiteral; + | UNICODE_STRING (KW_UESCAPE STRING)? # unicodeStringLiteral; timeZoneSpecifier: - TIME ZONE interval # timeZoneInterval - | TIME ZONE string # timeZoneString; + KW_TIME KW_ZONE interval # timeZoneInterval + | KW_TIME KW_ZONE string # timeZoneString; comparisonOperator: EQ | NEQ | LT | LTE | GT | GTE; -comparisonQuantifier: ALL | SOME | ANY; +comparisonQuantifier: KW_ALL | KW_SOME | KW_ANY; -booleanValue: TRUE | FALSE; +booleanValue: KW_TRUE | KW_FALSE; interval: - INTERVAL sign = (PLUS | MINUS)? string from = intervalField ( - TO to = intervalField + KW_INTERVAL sign = (PLUS | MINUS)? string from = intervalField ( + KW_TO to = intervalField )?; -intervalField: YEAR | MONTH | DAY | HOUR | MINUTE | SECOND; +intervalField: KW_YEAR | KW_MONTH | KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND; -normalForm: NFD | NFC | NFKD | NFKC; +normalForm: KW_NFD | KW_NFC | KW_NFKD | KW_NFKC; type: - ROW '(' rowField (',' rowField)* ')' # rowType - | INTERVAL from = intervalField (TO to = intervalField)? # intervalType - | base = TIMESTAMP ('(' precision = typeParameter ')')? ( - WITHOUT TIME ZONE + KW_ROW '(' rowField (',' rowField)* ')' # rowType + | KW_INTERVAL from = intervalField (KW_TO to = intervalField)? # intervalType + | base = KW_TIMESTAMP ('(' precision = typeParameter ')')? ( + KW_WITHOUT KW_TIME KW_ZONE )? # dateTimeType - | base = TIMESTAMP ('(' precision = typeParameter ')')? WITH TIME ZONE # dateTimeType - | base = TIME ('(' precision = typeParameter ')')? ( - WITHOUT TIME ZONE + | base = KW_TIMESTAMP ('(' precision = typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType + | base = KW_TIME ('(' precision = typeParameter ')')? ( + KW_WITHOUT KW_TIME KW_ZONE )? # dateTimeType - | base = TIME ('(' precision = typeParameter ')')? WITH TIME ZONE # dateTimeType - | DOUBLE PRECISION # doublePrecisionType - | ARRAY '<' type '>' # legacyArrayType - | MAP '<' keyType = type ',' valueType = type '>' # legacyMapType - | type ARRAY ('[' INTEGER_VALUE ']')? # arrayType + | base = KW_TIME ('(' precision = typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType + | KW_DOUBLE KW_PRECISION # doublePrecisionType + | KW_ARRAY '<' type '>' # legacyArrayType + | KW_MAP '<' keyType = type ',' valueType = type '>' # legacyMapType + | type KW_ARRAY ('[' INTEGER_VALUE ']')? # arrayType | identifier ('(' typeParameter (',' typeParameter)* ')')? # genericType; rowField: type | identifier type; @@ -483,44 +482,44 @@ rowField: type | identifier type; typeParameter: INTEGER_VALUE | type; whenClause: - WHEN condition = expression THEN result = expression; + KW_WHEN condition = expression KW_THEN result = expression; -filter: FILTER '(' WHERE booleanExpression ')'; +filter: KW_FILTER '(' KW_WHERE booleanExpression ')'; mergeCase: - WHEN MATCHED (AND condition = expression)? THEN UPDATE SET targets += identifier EQ values += + KW_WHEN KW_MATCHED (KW_AND condition = expression)? KW_THEN KW_UPDATE KW_SET targets += identifier EQ values += expression ( ',' targets += identifier EQ values += expression )* # mergeUpdate - | WHEN MATCHED (AND condition = expression)? THEN DELETE # mergeDelete - | WHEN NOT MATCHED (AND condition = expression)? THEN INSERT ( + | KW_WHEN KW_MATCHED (KW_AND condition = expression)? KW_THEN KW_DELETE # mergeDelete + | KW_WHEN KW_NOT KW_MATCHED (KW_AND condition = expression)? KW_THEN KW_INSERT ( '(' targets += identifier (',' targets += identifier)* ')' - )? VALUES '(' values += expression (',' values += expression)* ')' # mergeInsert; + )? KW_VALUES '(' values += expression (',' values += expression)* ')' # mergeInsert; over: - OVER (windowName = identifier | '(' windowSpecification ')'); + KW_OVER (windowName = identifier | '(' windowSpecification ')'); windowFrame: ( - MEASURES measureDefinition (',' measureDefinition)* - )? frameExtent (AFTER MATCH skipTo)? (INITIAL | SEEK)? ( - PATTERN '(' rowPattern ')' - )? (SUBSET subsetDefinition (',' subsetDefinition)*)? ( - DEFINE variableDefinition (',' variableDefinition)* + KW_MEASURES measureDefinition (',' measureDefinition)* + )? frameExtent (KW_AFTER KW_MATCH skipTo)? (KW_INITIAL | KW_SEEK)? ( + KW_PATTERN '(' rowPattern ')' + )? (KW_SUBSET subsetDefinition (',' subsetDefinition)*)? ( + KW_DEFINE variableDefinition (',' variableDefinition)* )?; frameExtent: - frameType = RANGE frameStart = frameBound - | frameType = ROWS frameStart = frameBound - | frameType = GROUPS frameStart = frameBound - | frameType = RANGE BETWEEN frameStart = frameBound AND end = frameBound - | frameType = ROWS BETWEEN frameStart = frameBound AND end = frameBound - | frameType = GROUPS BETWEEN frameStart = frameBound AND end = frameBound; + frameType = KW_RANGE frameStart = frameBound + | frameType = KW_ROWS frameStart = frameBound + | frameType = KW_GROUPS frameStart = frameBound + | frameType = KW_RANGE KW_BETWEEN frameStart = frameBound KW_AND end = frameBound + | frameType = KW_ROWS KW_BETWEEN frameStart = frameBound KW_AND end = frameBound + | frameType = KW_GROUPS KW_BETWEEN frameStart = frameBound KW_AND end = frameBound; frameBound: - UNBOUNDED boundType = PRECEDING # unboundedFrame - | UNBOUNDED boundType = FOLLOWING # unboundedFrame - | CURRENT ROW # currentRowBound - | expression boundType = (PRECEDING | FOLLOWING) # boundedFrame; + KW_UNBOUNDED boundType = KW_PRECEDING # unboundedFrame + | KW_UNBOUNDED boundType = KW_FOLLOWING # unboundedFrame + | KW_CURRENT KW_ROW # currentRowBound + | expression boundType = (KW_PRECEDING | KW_FOLLOWING) # boundedFrame; rowPattern: patternPrimary patternQuantifier? # quantifiedPrimary @@ -530,7 +529,7 @@ rowPattern: patternPrimary: identifier # patternVariable | '(' ')' # emptyPattern - | PERMUTE '(' rowPattern (',' rowPattern)* ')' # patternPermutation + | KW_PERMUTE '(' rowPattern (',' rowPattern)* ')' # patternPermutation | '(' rowPattern ')' # groupedPattern | '^' # partitionStartAnchor | '$' # partitionEndAnchor @@ -548,18 +547,18 @@ patternQuantifier: updateAssignment: identifier EQ expression; explainOption: - FORMAT value = (TEXT | GRAPHVIZ | JSON) # explainFormat - | TYPE value = (LOGICAL | DISTRIBUTED | VALIDATE | IO) # explainType; + KW_FORMAT value = (KW_TEXT | KW_GRAPHVIZ | KW_JSON) # explainFormat + | KW_TYPE value = (KW_LOGICAL | KW_DISTRIBUTED | KW_VALIDATE | KW_IO) # explainType; transactionMode: - ISOLATION LEVEL levelOfIsolation # isolationLevel - | READ accessMode = (ONLY | WRITE) # transactionAccessMode; + KW_ISOLATION KW_LEVEL levelOfIsolation # isolationLevel + | KW_READ accessMode = (KW_ONLY | KW_WRITE) # transactionAccessMode; levelOfIsolation: - READ UNCOMMITTED # readUncommitted - | READ COMMITTED # readCommitted - | REPEATABLE READ # repeatableRead - | SERIALIZABLE # serializable; + KW_READ KW_UNCOMMITTED # readUncommitted + | KW_READ KW_COMMITTED # readCommitted + | KW_REPEATABLE KW_READ # repeatableRead + | KW_SERIALIZABLE # serializable; callArgument: expression # positionalArgument @@ -571,19 +570,58 @@ pathElement: pathSpecification: pathElement (',' pathElement)*; -privilege: SELECT | DELETE | INSERT | UPDATE; +privilege: KW_SELECT | KW_DELETE | KW_INSERT | KW_UPDATE; + +tableOrViewName + : tableName + | viewName; + +tableName: tablePath; + +tableNameCreate: tablePath; + +viewName: viewPath; + +viewNameCreate: viewPath; + +tablePath + : table = identifier + | schema = identifier '.' table = identifier + | catalog = identifier '.' schema = identifier '.' table = identifier + ; + +viewPath + : view = identifier + | schema = identifier '.' view = identifier + | catalog = identifier '.' schema = identifier '.' view = identifier + ; + +schemaName: schemaPath; + +schemaNameCreate: schemaPath; + +schemaPath + : schema = identifier + | catalog = identifier '.' schema = identifier + ; + +catalogName: catalog = identifier; + +catalogNameCreate: catalog = identifier; + +functionName: qualifiedName; qualifiedName: identifier ('.' identifier)*; grantor: principal # specifiedPrincipal - | CURRENT_USER # currentUserGrantor - | CURRENT_ROLE # currentRoleGrantor; + | KW_CURRENT_USER # currentUserGrantor + | KW_CURRENT_ROLE # currentRoleGrantor; principal: identifier # unspecifiedPrincipal - | USER identifier # userPrincipal - | ROLE identifier # rolePrincipal; + | KW_USER identifier # userPrincipal + | KW_ROLE identifier # rolePrincipal; roles: identifier (',' identifier)*; @@ -601,398 +639,398 @@ number: | MINUS? INTEGER_VALUE # integerLiteral; nonReserved - : ADD - | ADMIN - | AFTER - | ALL - | ANALYZE - | ANY - | ARRAY - | ASC - | AT - | AUTHORIZATION - | BERNOULLI - | CALL - | CASCADE - | CATALOGS - | COLUMN - | COLUMNS - | COMMENT - | COMMIT - | COMMITTED - | CURRENT - | DATA - | DATE - | DAY - | DEFAULT - | DEFINE - | DEFINER - | DESC - | DISTRIBUTED - | DOUBLE - | EMPTY - | EXCLUDING - | EXPLAIN - | FETCH - | FILTER - | FINAL - | FIRST - | FOLLOWING - | FORMAT - | FUNCTIONS - | GRANT - | GRANTED - | GRANTS - | DENY - | GRAPHVIZ - | GROUPS - | HOUR - | IF - | IGNORE - | INCLUDING - | INITIAL - | INPUT - | INTERVAL - | INVOKER - | IO - | ISOLATION - | JSON - | LAST - | LATERAL - | LEVEL - | LIMIT - | LOCAL - | LOGICAL - | MAP - | MATCH - | MATCHED - | MATCHES - | MATCH_RECOGNIZE - | MATERIALIZED - | MEASURES - | MERGE - | MINUTE - | MONTH - | NEXT - | NFC - | NFD - | NFKC - | NFKD - | NO - | NONE - | NULLIF - | NULLS - | OFFSET - | OMIT - | ONE - | ONLY - | OPTION - | ORDINALITY - | OUTPUT - | OVER - | PARTITION - | PARTITIONS - | PAST - | PATH - | PATTERN - | PER - | PERMUTE - | POSITION - | PRECEDING - | PRECISION - | PRIVILEGES - | PROPERTIES - | RANGE - | READ - | REFRESH - | RENAME - | REPEATABLE - | REPLACE - | RESET - | RESPECT - | RESTRICT - | REVOKE - | ROLE - | ROLES - | ROLLBACK - | ROW - | ROWS - | RUNNING - | SCHEMA - | SCHEMAS - | SECOND - | SECURITY - | SEEK - | SERIALIZABLE - | SESSION - | SET - | SETS - | SHOW - | SOME - | START - | STATS - | SUBSET - | SUBSTRING - | SYSTEM - | TABLES - | TABLESAMPLE - | TEXT - | TIES - | TIME - | TIMESTAMP - | TO - | TRANSACTION - | TRUNCATE - | TRY_CAST - | TYPE - | UNBOUNDED - | UNCOMMITTED - | UNMATCHED - | UPDATE - | USE - | USER - | VALIDATE - | VERBOSE - | VIEW - | WINDOW - | WITHOUT - | WORK - | WRITE - | YEAR - | ZONE; + : KW_ADD + | KW_ADMIN + | KW_AFTER + | KW_ALL + | KW_ANALYZE + | KW_ANY + | KW_ARRAY + | KW_ASC + | KW_AT + | KW_AUTHORIZATION + | KW_BERNOULLI + | KW_CALL + | KW_CASCADE + | KW_CATALOGS + | KW_COLUMN + | KW_COLUMNS + | KW_COMMENT + | KW_COMMIT + | KW_COMMITTED + | KW_CURRENT + | KW_DATA + | KW_DATE + | KW_DAY + | KW_DEFAULT + | KW_DEFINE + | KW_DEFINER + | KW_DESC + | KW_DISTRIBUTED + | KW_DOUBLE + | KW_EMPTY + | KW_EXCLUDING + | KW_EXPLAIN + | KW_FETCH + | KW_FILTER + | KW_FINAL + | KW_FIRST + | KW_FOLLOWING + | KW_FORMAT + | KW_FUNCTIONS + | KW_GRANT + | KW_GRANTED + | KW_GRANTS + | KW_DENY + | KW_GRAPHVIZ + | KW_GROUPS + | KW_HOUR + | KW_IF + | KW_IGNORE + | KW_INCLUDING + | KW_INITIAL + | KW_INPUT + | KW_INTERVAL + | KW_INVOKER + | KW_IO + | KW_ISOLATION + | KW_JSON + | KW_LAST + | KW_LATERAL + | KW_LEVEL + | KW_LIMIT + | KW_LOCAL + | KW_LOGICAL + | KW_MAP + | KW_MATCH + | KW_MATCHED + | KW_MATCHES + | KW_MATCH_RECOGNIZE + | KW_MATERIALIZED + | KW_MEASURES + | KW_MERGE + | KW_MINUTE + | KW_MONTH + | KW_NEXT + | KW_NFC + | KW_NFD + | KW_NFKC + | KW_NFKD + | KW_NO + | KW_NONE + | KW_NULLIF + | KW_NULLS + | KW_OFFSET + | KW_OMIT + | KW_ONE + | KW_ONLY + | KW_OPTION + | KW_ORDINALITY + | KW_OUTPUT + | KW_OVER + | KW_PARTITION + | KW_PARTITIONS + | KW_PAST + | KW_PATH + | KW_PATTERN + | KW_PER + | KW_PERMUTE + | KW_POSITION + | KW_PRECEDING + | KW_PRECISION + | KW_PRIVILEGES + | KW_PROPERTIES + | KW_RANGE + | KW_READ + | KW_REFRESH + | KW_RENAME + | KW_REPEATABLE + | KW_REPLACE + | KW_RESET + | KW_RESPECT + | KW_RESTRICT + | KW_REVOKE + | KW_ROLE + | KW_ROLES + | KW_ROLLBACK + | KW_ROW + | KW_ROWS + | KW_RUNNING + | KW_SCHEMA + | KW_SCHEMAS + | KW_SECOND + | KW_SECURITY + | KW_SEEK + | KW_SERIALIZABLE + | KW_SESSION + | KW_SET + | KW_SETS + | KW_SHOW + | KW_SOME + | KW_START + | KW_STATS + | KW_SUBSET + | KW_SUBSTRING + | KW_SYSTEM + | KW_TABLES + | KW_TABLESAMPLE + | KW_TEXT + | KW_TIES + | KW_TIME + | KW_TIMESTAMP + | KW_TO + | KW_TRANSACTION + | KW_TRUNCATE + | KW_TRY_CAST + | KW_TYPE + | KW_UNBOUNDED + | KW_UNCOMMITTED + | KW_UNMATCHED + | KW_UPDATE + | KW_USE + | KW_USER + | KW_VALIDATE + | KW_VERBOSE + | KW_VIEW + | KW_WINDOW + | KW_WITHOUT + | KW_WORK + | KW_WRITE + | KW_YEAR + | KW_ZONE; -ADD: 'ADD'; -ADMIN: 'ADMIN'; -AFTER: 'AFTER'; -ALL: 'ALL'; -ALTER: 'ALTER'; -ANALYZE: 'ANALYZE'; -AND: 'AND'; -ANY: 'ANY'; -ARRAY: 'ARRAY'; -AS: 'AS'; -ASC: 'ASC'; -AT: 'AT'; -AUTHORIZATION: 'AUTHORIZATION'; -BERNOULLI: 'BERNOULLI'; -BETWEEN: 'BETWEEN'; -BY: 'BY'; -CALL: 'CALL'; -CASCADE: 'CASCADE'; -CASE: 'CASE'; -CAST: 'CAST'; -CATALOGS: 'CATALOGS'; -COLUMN: 'COLUMN'; -COLUMNS: 'COLUMNS'; -COMMENT: 'COMMENT'; -COMMIT: 'COMMIT'; -COMMITTED: 'COMMITTED'; -CONSTRAINT: 'CONSTRAINT'; -CREATE: 'CREATE'; -CROSS: 'CROSS'; -CUBE: 'CUBE'; -CURRENT: 'CURRENT'; -CURRENT_CATALOG: 'CURRENT_CATALOG'; -CURRENT_DATE: 'CURRENT_DATE'; -CURRENT_PATH: 'CURRENT_PATH'; -CURRENT_ROLE: 'CURRENT_ROLE'; -CURRENT_SCHEMA: 'CURRENT_SCHEMA'; -CURRENT_TIME: 'CURRENT_TIME'; -CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; -CURRENT_USER: 'CURRENT_USER'; -DATA: 'DATA'; -DATE: 'DATE'; -DAY: 'DAY'; -DEFAULT: 'DEFAULT'; -DEALLOCATE: 'DEALLOCATE'; -DEFINER: 'DEFINER'; -DELETE: 'DELETE'; -DESC: 'DESC'; -DESCRIBE: 'DESCRIBE'; -DEFINE: 'DEFINE'; -DISTINCT: 'DISTINCT'; -DISTRIBUTED: 'DISTRIBUTED'; -DOUBLE: 'DOUBLE'; -DROP: 'DROP'; -ELSE: 'ELSE'; -EMPTY: 'EMPTY'; -END: 'END'; -ESCAPE: 'ESCAPE'; -EXCEPT: 'EXCEPT'; -EXCLUDING: 'EXCLUDING'; -EXECUTE: 'EXECUTE'; -EXISTS: 'EXISTS'; -EXPLAIN: 'EXPLAIN'; -EXTRACT: 'EXTRACT'; -FALSE: 'FALSE'; -FETCH: 'FETCH'; -FILTER: 'FILTER'; -FINAL: 'FINAL'; -FIRST: 'FIRST'; -FOLLOWING: 'FOLLOWING'; -FOR: 'FOR'; -FORMAT: 'FORMAT'; -FROM: 'FROM'; -FULL: 'FULL'; -FUNCTIONS: 'FUNCTIONS'; -GRANT: 'GRANT'; -GRANTED: 'GRANTED'; -GRANTS: 'GRANTS'; -DENY: 'DENY'; -GRAPHVIZ: 'GRAPHVIZ'; -GROUP: 'GROUP'; -GROUPING: 'GROUPING'; -GROUPS: 'GROUPS'; -HAVING: 'HAVING'; -HOUR: 'HOUR'; -IF: 'IF'; -IGNORE: 'IGNORE'; -IN: 'IN'; -INCLUDING: 'INCLUDING'; -INITIAL: 'INITIAL'; -INNER: 'INNER'; -INPUT: 'INPUT'; -INSERT: 'INSERT'; -INTERSECT: 'INTERSECT'; -INTERVAL: 'INTERVAL'; -INTO: 'INTO'; -INVOKER: 'INVOKER'; -IO: 'IO'; -IS: 'IS'; -ISOLATION: 'ISOLATION'; -JOIN: 'JOIN'; -JSON: 'JSON'; -LAST: 'LAST'; -LATERAL: 'LATERAL'; -LEFT: 'LEFT'; -LEVEL: 'LEVEL'; -LIKE: 'LIKE'; -LIMIT: 'LIMIT'; -LOCAL: 'LOCAL'; -LOCALTIME: 'LOCALTIME'; -LOCALTIMESTAMP: 'LOCALTIMESTAMP'; -LOGICAL: 'LOGICAL'; -MAP: 'MAP'; -MATCH: 'MATCH'; -MATCHED: 'MATCHED'; -MATCHES: 'MATCHES'; -MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'; -MATERIALIZED: 'MATERIALIZED'; -MEASURES: 'MEASURES'; -MERGE: 'MERGE'; -MINUTE: 'MINUTE'; -MONTH: 'MONTH'; -NATURAL: 'NATURAL'; -NEXT: 'NEXT'; -NFC: 'NFC'; -NFD: 'NFD'; -NFKC: 'NFKC'; -NFKD: 'NFKD'; -NO: 'NO'; -NONE: 'NONE'; -NORMALIZE: 'NORMALIZE'; -NOT: 'NOT'; -NULL: 'NULL'; -NULLIF: 'NULLIF'; -NULLS: 'NULLS'; -OFFSET: 'OFFSET'; -OMIT: 'OMIT'; -ON: 'ON'; -ONE: 'ONE'; -ONLY: 'ONLY'; -OPTION: 'OPTION'; -OR: 'OR'; -ORDER: 'ORDER'; -ORDINALITY: 'ORDINALITY'; -OUTER: 'OUTER'; -OUTPUT: 'OUTPUT'; -OVER: 'OVER'; -PARTITION: 'PARTITION'; -PARTITIONS: 'PARTITIONS'; -PAST: 'PAST'; -PATH: 'PATH'; -PATTERN: 'PATTERN'; -PER: 'PER'; -PERMUTE: 'PERMUTE'; -POSITION: 'POSITION'; -PRECEDING: 'PRECEDING'; -PRECISION: 'PRECISION'; -PREPARE: 'PREPARE'; -PRIVILEGES: 'PRIVILEGES'; -PROPERTIES: 'PROPERTIES'; -RANGE: 'RANGE'; -READ: 'READ'; -RECURSIVE: 'RECURSIVE'; -REFRESH: 'REFRESH'; -RENAME: 'RENAME'; -REPEATABLE: 'REPEATABLE'; -REPLACE: 'REPLACE'; -RESET: 'RESET'; -RESPECT: 'RESPECT'; -RESTRICT: 'RESTRICT'; -REVOKE: 'REVOKE'; -RIGHT: 'RIGHT'; -ROLE: 'ROLE'; -ROLES: 'ROLES'; -ROLLBACK: 'ROLLBACK'; -ROLLUP: 'ROLLUP'; -ROW: 'ROW'; -ROWS: 'ROWS'; -RUNNING: 'RUNNING'; -SCHEMA: 'SCHEMA'; -SCHEMAS: 'SCHEMAS'; -SECOND: 'SECOND'; -SECURITY: 'SECURITY'; -SEEK: 'SEEK'; -SELECT: 'SELECT'; -SERIALIZABLE: 'SERIALIZABLE'; -SESSION: 'SESSION'; -SET: 'SET'; -SETS: 'SETS'; -SHOW: 'SHOW'; -SOME: 'SOME'; -START: 'START'; -STATS: 'STATS'; -SUBSET: 'SUBSET'; -SUBSTRING: 'SUBSTRING'; -SYSTEM: 'SYSTEM'; -TABLE: 'TABLE'; -TABLES: 'TABLES'; -TABLESAMPLE: 'TABLESAMPLE'; -TEXT: 'TEXT'; -THEN: 'THEN'; -TIES: 'TIES'; -TIME: 'TIME'; -TIMESTAMP: 'TIMESTAMP'; -TO: 'TO'; -TRANSACTION: 'TRANSACTION'; -TRUNCATE: 'TRUNCATE'; -TRUE: 'TRUE'; -TRY_CAST: 'TRY_CAST'; -TYPE: 'TYPE'; -UESCAPE: 'UESCAPE'; -UNBOUNDED: 'UNBOUNDED'; -UNCOMMITTED: 'UNCOMMITTED'; -UNION: 'UNION'; -UNMATCHED: 'UNMATCHED'; -UNNEST: 'UNNEST'; -UPDATE: 'UPDATE'; -USE: 'USE'; -USER: 'USER'; -USING: 'USING'; -VALIDATE: 'VALIDATE'; -VALUES: 'VALUES'; -VERBOSE: 'VERBOSE'; -VIEW: 'VIEW'; -WHEN: 'WHEN'; -WHERE: 'WHERE'; -WINDOW: 'WINDOW'; -WITH: 'WITH'; -WITHOUT: 'WITHOUT'; -WORK: 'WORK'; -WRITE: 'WRITE'; -YEAR: 'YEAR'; -ZONE: 'ZONE'; +KW_ADD: 'ADD'; +KW_ADMIN: 'ADMIN'; +KW_AFTER: 'AFTER'; +KW_ALL: 'ALL'; +KW_ALTER: 'ALTER'; +KW_ANALYZE: 'ANALYZE'; +KW_AND: 'AND'; +KW_ANY: 'ANY'; +KW_ARRAY: 'ARRAY'; +KW_AS: 'AS'; +KW_ASC: 'ASC'; +KW_AT: 'AT'; +KW_AUTHORIZATION: 'AUTHORIZATION'; +KW_BERNOULLI: 'BERNOULLI'; +KW_BETWEEN: 'BETWEEN'; +KW_BY: 'BY'; +KW_CALL: 'CALL'; +KW_CASCADE: 'CASCADE'; +KW_CASE: 'CASE'; +KW_CAST: 'CAST'; +KW_CATALOGS: 'CATALOGS'; +KW_COLUMN: 'COLUMN'; +KW_COLUMNS: 'COLUMNS'; +KW_COMMENT: 'COMMENT'; +KW_COMMIT: 'COMMIT'; +KW_COMMITTED: 'COMMITTED'; +KW_CONSTRAINT: 'CONSTRAINT'; +KW_CREATE: 'CREATE'; +KW_CROSS: 'CROSS'; +KW_CUBE: 'CUBE'; +KW_CURRENT: 'CURRENT'; +KW_CURRENT_CATALOG: 'CURRENT_CATALOG'; +KW_CURRENT_DATE: 'CURRENT_DATE'; +KW_CURRENT_PATH: 'CURRENT_PATH'; +KW_CURRENT_ROLE: 'CURRENT_ROLE'; +KW_CURRENT_SCHEMA: 'CURRENT_SCHEMA'; +KW_CURRENT_TIME: 'CURRENT_TIME'; +KW_CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; +KW_CURRENT_USER: 'CURRENT_USER'; +KW_DATA: 'DATA'; +KW_DATE: 'DATE'; +KW_DAY: 'DAY'; +KW_DEFAULT: 'DEFAULT'; +KW_DEALLOCATE: 'DEALLOCATE'; +KW_DEFINER: 'DEFINER'; +KW_DELETE: 'DELETE'; +KW_DESC: 'DESC'; +KW_DESCRIBE: 'DESCRIBE'; +KW_DEFINE: 'DEFINE'; +KW_DISTINCT: 'DISTINCT'; +KW_DISTRIBUTED: 'DISTRIBUTED'; +KW_DOUBLE: 'DOUBLE'; +KW_DROP: 'DROP'; +KW_ELSE: 'ELSE'; +KW_EMPTY: 'EMPTY'; +KW_END: 'END'; +KW_ESCAPE: 'ESCAPE'; +KW_EXCEPT: 'EXCEPT'; +KW_EXCLUDING: 'EXCLUDING'; +KW_EXECUTE: 'EXECUTE'; +KW_EXISTS: 'EXISTS'; +KW_EXPLAIN: 'EXPLAIN'; +KW_EXTRACT: 'EXTRACT'; +KW_FALSE: 'FALSE'; +KW_FETCH: 'FETCH'; +KW_FILTER: 'FILTER'; +KW_FINAL: 'FINAL'; +KW_FIRST: 'FIRST'; +KW_FOLLOWING: 'FOLLOWING'; +KW_FOR: 'FOR'; +KW_FORMAT: 'FORMAT'; +KW_FROM: 'FROM'; +KW_FULL: 'FULL'; +KW_FUNCTIONS: 'FUNCTIONS'; +KW_GRANT: 'GRANT'; +KW_GRANTED: 'GRANTED'; +KW_GRANTS: 'GRANTS'; +KW_DENY: 'DENY'; +KW_GRAPHVIZ: 'GRAPHVIZ'; +KW_GROUP: 'GROUP'; +KW_GROUPING: 'GROUPING'; +KW_GROUPS: 'GROUPS'; +KW_HAVING: 'HAVING'; +KW_HOUR: 'HOUR'; +KW_IF: 'IF'; +KW_IGNORE: 'IGNORE'; +KW_IN: 'IN'; +KW_INCLUDING: 'INCLUDING'; +KW_INITIAL: 'INITIAL'; +KW_INNER: 'INNER'; +KW_INPUT: 'INPUT'; +KW_INSERT: 'INSERT'; +KW_INTERSECT: 'INTERSECT'; +KW_INTERVAL: 'INTERVAL'; +KW_INTO: 'INTO'; +KW_INVOKER: 'INVOKER'; +KW_IO: 'IO'; +KW_IS: 'IS'; +KW_ISOLATION: 'ISOLATION'; +KW_JOIN: 'JOIN'; +KW_JSON: 'JSON'; +KW_LAST: 'LAST'; +KW_LATERAL: 'LATERAL'; +KW_LEFT: 'LEFT'; +KW_LEVEL: 'LEVEL'; +KW_LIKE: 'LIKE'; +KW_LIMIT: 'LIMIT'; +KW_LOCAL: 'LOCAL'; +KW_LOCALTIME: 'LOCALTIME'; +KW_LOCALTIMESTAMP: 'LOCALTIMESTAMP'; +KW_LOGICAL: 'LOGICAL'; +KW_MAP: 'MAP'; +KW_MATCH: 'MATCH'; +KW_MATCHED: 'MATCHED'; +KW_MATCHES: 'MATCHES'; +KW_MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'; +KW_MATERIALIZED: 'MATERIALIZED'; +KW_MEASURES: 'MEASURES'; +KW_MERGE: 'MERGE'; +KW_MINUTE: 'MINUTE'; +KW_MONTH: 'MONTH'; +KW_NATURAL: 'NATURAL'; +KW_NEXT: 'NEXT'; +KW_NFC: 'NFC'; +KW_NFD: 'NFD'; +KW_NFKC: 'NFKC'; +KW_NFKD: 'NFKD'; +KW_NO: 'NO'; +KW_NONE: 'NONE'; +KW_NORMALIZE: 'NORMALIZE'; +KW_NOT: 'NOT'; +KW_NULL: 'NULL'; +KW_NULLIF: 'NULLIF'; +KW_NULLS: 'NULLS'; +KW_OFFSET: 'OFFSET'; +KW_OMIT: 'OMIT'; +KW_ON: 'ON'; +KW_ONE: 'ONE'; +KW_ONLY: 'ONLY'; +KW_OPTION: 'OPTION'; +KW_OR: 'OR'; +KW_ORDER: 'ORDER'; +KW_ORDINALITY: 'ORDINALITY'; +KW_OUTER: 'OUTER'; +KW_OUTPUT: 'OUTPUT'; +KW_OVER: 'OVER'; +KW_PARTITION: 'PARTITION'; +KW_PARTITIONS: 'PARTITIONS'; +KW_PAST: 'PAST'; +KW_PATH: 'PATH'; +KW_PATTERN: 'PATTERN'; +KW_PER: 'PER'; +KW_PERMUTE: 'PERMUTE'; +KW_POSITION: 'POSITION'; +KW_PRECEDING: 'PRECEDING'; +KW_PRECISION: 'PRECISION'; +KW_PREPARE: 'PREPARE'; +KW_PRIVILEGES: 'PRIVILEGES'; +KW_PROPERTIES: 'PROPERTIES'; +KW_RANGE: 'RANGE'; +KW_READ: 'READ'; +KW_RECURSIVE: 'RECURSIVE'; +KW_REFRESH: 'REFRESH'; +KW_RENAME: 'RENAME'; +KW_REPEATABLE: 'REPEATABLE'; +KW_REPLACE: 'REPLACE'; +KW_RESET: 'RESET'; +KW_RESPECT: 'RESPECT'; +KW_RESTRICT: 'RESTRICT'; +KW_REVOKE: 'REVOKE'; +KW_RIGHT: 'RIGHT'; +KW_ROLE: 'ROLE'; +KW_ROLES: 'ROLES'; +KW_ROLLBACK: 'ROLLBACK'; +KW_ROLLUP: 'ROLLUP'; +KW_ROW: 'ROW'; +KW_ROWS: 'ROWS'; +KW_RUNNING: 'RUNNING'; +KW_SCHEMA: 'SCHEMA'; +KW_SCHEMAS: 'SCHEMAS'; +KW_SECOND: 'SECOND'; +KW_SECURITY: 'SECURITY'; +KW_SEEK: 'SEEK'; +KW_SELECT: 'SELECT'; +KW_SERIALIZABLE: 'SERIALIZABLE'; +KW_SESSION: 'SESSION'; +KW_SET: 'SET'; +KW_SETS: 'SETS'; +KW_SHOW: 'SHOW'; +KW_SOME: 'SOME'; +KW_START: 'START'; +KW_STATS: 'STATS'; +KW_SUBSET: 'SUBSET'; +KW_SUBSTRING: 'SUBSTRING'; +KW_SYSTEM: 'SYSTEM'; +KW_TABLE: 'TABLE'; +KW_TABLES: 'TABLES'; +KW_TABLESAMPLE: 'TABLESAMPLE'; +KW_TEXT: 'TEXT'; +KW_THEN: 'THEN'; +KW_TIES: 'TIES'; +KW_TIME: 'TIME'; +KW_TIMESTAMP: 'TIMESTAMP'; +KW_TO: 'TO'; +KW_TRANSACTION: 'TRANSACTION'; +KW_TRUNCATE: 'TRUNCATE'; +KW_TRUE: 'TRUE'; +KW_TRY_CAST: 'TRY_CAST'; +KW_TYPE: 'TYPE'; +KW_UESCAPE: 'UESCAPE'; +KW_UNBOUNDED: 'UNBOUNDED'; +KW_UNCOMMITTED: 'UNCOMMITTED'; +KW_UNION: 'UNION'; +KW_UNMATCHED: 'UNMATCHED'; +KW_UNNEST: 'UNNEST'; +KW_UPDATE: 'UPDATE'; +KW_USE: 'USE'; +KW_USER: 'USER'; +KW_USING: 'USING'; +KW_VALIDATE: 'VALIDATE'; +KW_VALUES: 'VALUES'; +KW_VERBOSE: 'VERBOSE'; +KW_VIEW: 'VIEW'; +KW_WHEN: 'WHEN'; +KW_WHERE: 'WHERE'; +KW_WINDOW: 'WINDOW'; +KW_WITH: 'WITH'; +KW_WITHOUT: 'WITHOUT'; +KW_WORK: 'WORK'; +KW_WRITE: 'WRITE'; +KW_YEAR: 'YEAR'; +KW_ZONE: 'ZONE'; EQ: '='; NEQ: '<>' | '!='; diff --git a/src/lib/trinosql/TrinoSql.interp b/src/lib/trinosql/TrinoSql.interp index 4fa39e5..ae2c363 100644 --- a/src/lib/trinosql/TrinoSql.interp +++ b/src/lib/trinosql/TrinoSql.interp @@ -1,9 +1,9 @@ token literal names: null -'.' '(' ')' ',' +'.' 'SKIP' '->' '[' @@ -296,238 +296,238 @@ null null null null -ADD -ADMIN -AFTER -ALL -ALTER -ANALYZE -AND -ANY -ARRAY -AS -ASC -AT -AUTHORIZATION -BERNOULLI -BETWEEN -BY -CALL -CASCADE -CASE -CAST -CATALOGS -COLUMN -COLUMNS -COMMENT -COMMIT -COMMITTED -CONSTRAINT -CREATE -CROSS -CUBE -CURRENT -CURRENT_CATALOG -CURRENT_DATE -CURRENT_PATH -CURRENT_ROLE -CURRENT_SCHEMA -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DATA -DATE -DAY -DEFAULT -DEALLOCATE -DEFINER -DELETE -DESC -DESCRIBE -DEFINE -DISTINCT -DISTRIBUTED -DOUBLE -DROP -ELSE -EMPTY -END -ESCAPE -EXCEPT -EXCLUDING -EXECUTE -EXISTS -EXPLAIN -EXTRACT -FALSE -FETCH -FILTER -FINAL -FIRST -FOLLOWING -FOR -FORMAT -FROM -FULL -FUNCTIONS -GRANT -GRANTED -GRANTS -DENY -GRAPHVIZ -GROUP -GROUPING -GROUPS -HAVING -HOUR -IF -IGNORE -IN -INCLUDING -INITIAL -INNER -INPUT -INSERT -INTERSECT -INTERVAL -INTO -INVOKER -IO -IS -ISOLATION -JOIN -JSON -LAST -LATERAL -LEFT -LEVEL -LIKE -LIMIT -LOCAL -LOCALTIME -LOCALTIMESTAMP -LOGICAL -MAP -MATCH -MATCHED -MATCHES -MATCH_RECOGNIZE -MATERIALIZED -MEASURES -MERGE -MINUTE -MONTH -NATURAL -NEXT -NFC -NFD -NFKC -NFKD -NO -NONE -NORMALIZE -NOT -NULL -NULLIF -NULLS -OFFSET -OMIT -ON -ONE -ONLY -OPTION -OR -ORDER -ORDINALITY -OUTER -OUTPUT -OVER -PARTITION -PARTITIONS -PAST -PATH -PATTERN -PER -PERMUTE -POSITION -PRECEDING -PRECISION -PREPARE -PRIVILEGES -PROPERTIES -RANGE -READ -RECURSIVE -REFRESH -RENAME -REPEATABLE -REPLACE -RESET -RESPECT -RESTRICT -REVOKE -RIGHT -ROLE -ROLES -ROLLBACK -ROLLUP -ROW -ROWS -RUNNING -SCHEMA -SCHEMAS -SECOND -SECURITY -SEEK -SELECT -SERIALIZABLE -SESSION -SET -SETS -SHOW -SOME -START -STATS -SUBSET -SUBSTRING -SYSTEM -TABLE -TABLES -TABLESAMPLE -TEXT -THEN -TIES -TIME -TIMESTAMP -TO -TRANSACTION -TRUNCATE -TRUE -TRY_CAST -TYPE -UESCAPE -UNBOUNDED -UNCOMMITTED -UNION -UNMATCHED -UNNEST -UPDATE -USE -USER -USING -VALIDATE -VALUES -VERBOSE -VIEW -WHEN -WHERE -WINDOW -WITH -WITHOUT -WORK -WRITE -YEAR -ZONE +KW_ADD +KW_ADMIN +KW_AFTER +KW_ALL +KW_ALTER +KW_ANALYZE +KW_AND +KW_ANY +KW_ARRAY +KW_AS +KW_ASC +KW_AT +KW_AUTHORIZATION +KW_BERNOULLI +KW_BETWEEN +KW_BY +KW_CALL +KW_CASCADE +KW_CASE +KW_CAST +KW_CATALOGS +KW_COLUMN +KW_COLUMNS +KW_COMMENT +KW_COMMIT +KW_COMMITTED +KW_CONSTRAINT +KW_CREATE +KW_CROSS +KW_CUBE +KW_CURRENT +KW_CURRENT_CATALOG +KW_CURRENT_DATE +KW_CURRENT_PATH +KW_CURRENT_ROLE +KW_CURRENT_SCHEMA +KW_CURRENT_TIME +KW_CURRENT_TIMESTAMP +KW_CURRENT_USER +KW_DATA +KW_DATE +KW_DAY +KW_DEFAULT +KW_DEALLOCATE +KW_DEFINER +KW_DELETE +KW_DESC +KW_DESCRIBE +KW_DEFINE +KW_DISTINCT +KW_DISTRIBUTED +KW_DOUBLE +KW_DROP +KW_ELSE +KW_EMPTY +KW_END +KW_ESCAPE +KW_EXCEPT +KW_EXCLUDING +KW_EXECUTE +KW_EXISTS +KW_EXPLAIN +KW_EXTRACT +KW_FALSE +KW_FETCH +KW_FILTER +KW_FINAL +KW_FIRST +KW_FOLLOWING +KW_FOR +KW_FORMAT +KW_FROM +KW_FULL +KW_FUNCTIONS +KW_GRANT +KW_GRANTED +KW_GRANTS +KW_DENY +KW_GRAPHVIZ +KW_GROUP +KW_GROUPING +KW_GROUPS +KW_HAVING +KW_HOUR +KW_IF +KW_IGNORE +KW_IN +KW_INCLUDING +KW_INITIAL +KW_INNER +KW_INPUT +KW_INSERT +KW_INTERSECT +KW_INTERVAL +KW_INTO +KW_INVOKER +KW_IO +KW_IS +KW_ISOLATION +KW_JOIN +KW_JSON +KW_LAST +KW_LATERAL +KW_LEFT +KW_LEVEL +KW_LIKE +KW_LIMIT +KW_LOCAL +KW_LOCALTIME +KW_LOCALTIMESTAMP +KW_LOGICAL +KW_MAP +KW_MATCH +KW_MATCHED +KW_MATCHES +KW_MATCH_RECOGNIZE +KW_MATERIALIZED +KW_MEASURES +KW_MERGE +KW_MINUTE +KW_MONTH +KW_NATURAL +KW_NEXT +KW_NFC +KW_NFD +KW_NFKC +KW_NFKD +KW_NO +KW_NONE +KW_NORMALIZE +KW_NOT +KW_NULL +KW_NULLIF +KW_NULLS +KW_OFFSET +KW_OMIT +KW_ON +KW_ONE +KW_ONLY +KW_OPTION +KW_OR +KW_ORDER +KW_ORDINALITY +KW_OUTER +KW_OUTPUT +KW_OVER +KW_PARTITION +KW_PARTITIONS +KW_PAST +KW_PATH +KW_PATTERN +KW_PER +KW_PERMUTE +KW_POSITION +KW_PRECEDING +KW_PRECISION +KW_PREPARE +KW_PRIVILEGES +KW_PROPERTIES +KW_RANGE +KW_READ +KW_RECURSIVE +KW_REFRESH +KW_RENAME +KW_REPEATABLE +KW_REPLACE +KW_RESET +KW_RESPECT +KW_RESTRICT +KW_REVOKE +KW_RIGHT +KW_ROLE +KW_ROLES +KW_ROLLBACK +KW_ROLLUP +KW_ROW +KW_ROWS +KW_RUNNING +KW_SCHEMA +KW_SCHEMAS +KW_SECOND +KW_SECURITY +KW_SEEK +KW_SELECT +KW_SERIALIZABLE +KW_SESSION +KW_SET +KW_SETS +KW_SHOW +KW_SOME +KW_START +KW_STATS +KW_SUBSET +KW_SUBSTRING +KW_SYSTEM +KW_TABLE +KW_TABLES +KW_TABLESAMPLE +KW_TEXT +KW_THEN +KW_TIES +KW_TIME +KW_TIMESTAMP +KW_TO +KW_TRANSACTION +KW_TRUNCATE +KW_TRUE +KW_TRY_CAST +KW_TYPE +KW_UESCAPE +KW_UNBOUNDED +KW_UNCOMMITTED +KW_UNION +KW_UNMATCHED +KW_UNNEST +KW_UPDATE +KW_USE +KW_USER +KW_USING +KW_VALIDATE +KW_VALUES +KW_VERBOSE +KW_VIEW +KW_WHEN +KW_WHERE +KW_WINDOW +KW_WITH +KW_WITHOUT +KW_WORK +KW_WRITE +KW_YEAR +KW_ZONE EQ NEQ LT @@ -642,6 +642,19 @@ callArgument pathElement pathSpecification privilege +tableOrViewName +tableName +tableNameCreate +viewName +viewNameCreate +tablePath +viewPath +schemaName +schemaNameCreate +schemaPath +catalogName +catalogNameCreate +functionName qualifiedName grantor principal @@ -652,4 +665,4 @@ nonReserved atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 279, 2465, 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, 3, 2, 7, 2, 184, 10, 2, 12, 2, 14, 2, 187, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 196, 10, 3, 3, 4, 3, 4, 5, 4, 200, 10, 4, 3, 5, 3, 5, 5, 5, 204, 10, 5, 3, 6, 3, 6, 5, 6, 208, 10, 6, 3, 7, 3, 7, 5, 7, 212, 10, 7, 3, 8, 3, 8, 5, 8, 216, 10, 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, 5, 9, 231, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 236, 10, 9, 3, 9, 3, 9, 5, 9, 240, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 246, 10, 9, 3, 9, 3, 9, 5, 9, 250, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 271, 10, 9, 3, 9, 3, 9, 5, 9, 275, 10, 9, 3, 9, 3, 9, 5, 9, 279, 10, 9, 3, 9, 3, 9, 5, 9, 283, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 291, 10, 9, 3, 9, 3, 9, 5, 9, 295, 10, 9, 3, 9, 5, 9, 298, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 305, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 312, 10, 9, 12, 9, 14, 9, 315, 11, 9, 3, 9, 3, 9, 3, 9, 5, 9, 320, 10, 9, 3, 9, 3, 9, 5, 9, 324, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 330, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 337, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 346, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 355, 10, 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, 5, 9, 369, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 378, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 384, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 391, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 401, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 408, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 416, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 424, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 451, 10, 9, 12, 9, 14, 9, 454, 11, 9, 5, 9, 456, 10, 9, 3, 9, 5, 9, 459, 10, 9, 3, 9, 3, 9, 5, 9, 463, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 469, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 474, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 481, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 486, 10, 9, 3, 9, 3, 9, 5, 9, 490, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 498, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 504, 10, 9, 3, 9, 3, 9, 5, 9, 508, 10, 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, 5, 9, 522, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 530, 10, 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, 9, 3, 9, 3, 9, 3, 9, 5, 9, 549, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 572, 10, 9, 12, 9, 14, 9, 575, 11, 9, 5, 9, 577, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 587, 10, 9, 3, 9, 3, 9, 5, 9, 591, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 602, 10, 9, 12, 9, 14, 9, 605, 11, 9, 3, 9, 3, 9, 3, 9, 5, 9, 610, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 615, 10, 9, 3, 9, 3, 9, 5, 9, 619, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 625, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 632, 10, 9, 12, 9, 14, 9, 635, 11, 9, 3, 9, 3, 9, 3, 9, 5, 9, 640, 10, 9, 3, 9, 3, 9, 5, 9, 644, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 651, 10, 9, 3, 9, 3, 9, 5, 9, 655, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 661, 10, 9, 12, 9, 14, 9, 664, 11, 9, 3, 9, 3, 9, 5, 9, 668, 10, 9, 3, 9, 3, 9, 5, 9, 672, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 680, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 686, 10, 9, 12, 9, 14, 9, 689, 11, 9, 3, 9, 3, 9, 5, 9, 693, 10, 9, 3, 9, 3, 9, 5, 9, 697, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 707, 10, 9, 3, 9, 3, 9, 3, 9, 7, 9, 712, 10, 9, 12, 9, 14, 9, 715, 11, 9, 3, 9, 3, 9, 5, 9, 719, 10, 9, 3, 9, 3, 9, 5, 9, 723, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 733, 10, 9, 3, 9, 5, 9, 736, 10, 9, 3, 9, 3, 9, 5, 9, 740, 10, 9, 3, 9, 5, 9, 743, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 749, 10, 9, 12, 9, 14, 9, 752, 11, 9, 3, 9, 3, 9, 5, 9, 756, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 780, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 786, 10, 9, 5, 9, 788, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 794, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 800, 10, 9, 5, 9, 802, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 810, 10, 9, 5, 9, 812, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 818, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 824, 10, 9, 5, 9, 826, 10, 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, 5, 9, 841, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 846, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 853, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 865, 10, 9, 5, 9, 867, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 875, 10, 9, 5, 9, 877, 10, 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, 9, 7, 9, 893, 10, 9, 12, 9, 14, 9, 896, 11, 9, 5, 9, 898, 10, 9, 3, 9, 3, 9, 5, 9, 902, 10, 9, 3, 9, 3, 9, 5, 9, 906, 10, 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, 9, 7, 9, 922, 10, 9, 12, 9, 14, 9, 925, 11, 9, 5, 9, 927, 10, 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, 9, 5, 9, 943, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 951, 10, 9, 12, 9, 14, 9, 954, 11, 9, 3, 9, 3, 9, 5, 9, 958, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 964, 10, 9, 3, 9, 5, 9, 967, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 6, 9, 974, 10, 9, 13, 9, 14, 9, 975, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 988, 10, 9, 3, 10, 5, 10, 991, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 997, 10, 11, 3, 11, 3, 11, 3, 11, 7, 11, 1002, 10, 11, 12, 11, 14, 11, 1005, 11, 11, 3, 12, 3, 12, 5, 12, 1009, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 1015, 10, 13, 3, 13, 3, 13, 5, 13, 1019, 10, 13, 3, 13, 3, 13, 5, 13, 1023, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 1029, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 7, 16, 1038, 10, 16, 12, 16, 14, 16, 1041, 11, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 5, 18, 1049, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 7, 19, 1057, 10, 19, 12, 19, 14, 19, 1060, 11, 19, 5, 19, 1062, 10, 19, 3, 19, 3, 19, 3, 19, 5, 19, 1067, 10, 19, 5, 19, 1069, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 1076, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 1082, 10, 19, 5, 19, 1084, 10, 19, 3, 20, 3, 20, 5, 20, 1088, 10, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 1098, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 1104, 10, 22, 3, 22, 7, 22, 1107, 10, 22, 12, 22, 14, 22, 1110, 11, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 1119, 10, 23, 12, 23, 14, 23, 1122, 11, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 1128, 10, 23, 3, 24, 3, 24, 5, 24, 1132, 10, 24, 3, 24, 3, 24, 5, 24, 1136, 10, 24, 3, 25, 3, 25, 5, 25, 1140, 10, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1145, 10, 25, 12, 25, 14, 25, 1148, 11, 25, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1154, 10, 25, 12, 25, 14, 25, 1157, 11, 25, 5, 25, 1159, 10, 25, 3, 25, 3, 25, 5, 25, 1163, 10, 25, 3, 25, 3, 25, 3, 25, 5, 25, 1168, 10, 25, 3, 25, 3, 25, 5, 25, 1172, 10, 25, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1178, 10, 25, 12, 25, 14, 25, 1181, 11, 25, 5, 25, 1183, 10, 25, 3, 26, 5, 26, 1186, 10, 26, 3, 26, 3, 26, 3, 26, 7, 26, 1191, 10, 26, 12, 26, 14, 26, 1194, 11, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 1202, 10, 27, 12, 27, 14, 27, 1205, 11, 27, 5, 27, 1207, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 1215, 10, 27, 12, 27, 14, 27, 1218, 11, 27, 5, 27, 1220, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 1229, 10, 27, 12, 27, 14, 27, 1232, 11, 27, 3, 27, 3, 27, 5, 27, 1236, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 1242, 10, 28, 12, 28, 14, 28, 1245, 11, 28, 5, 28, 1247, 10, 28, 3, 28, 3, 28, 5, 28, 1251, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 5, 30, 1260, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 1267, 10, 30, 12, 30, 14, 30, 1270, 11, 30, 5, 30, 1272, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 1279, 10, 30, 12, 30, 14, 30, 1282, 11, 30, 5, 30, 1284, 10, 30, 3, 30, 5, 30, 1287, 10, 30, 3, 31, 3, 31, 5, 31, 1291, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 5, 33, 1302, 10, 33, 3, 33, 5, 33, 1305, 10, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 1312, 10, 33, 3, 33, 5, 33, 1315, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 1334, 10, 34, 7, 34, 1336, 10, 34, 12, 34, 14, 34, 1339, 11, 34, 3, 35, 5, 35, 1342, 10, 35, 3, 35, 3, 35, 5, 35, 1346, 10, 35, 3, 35, 3, 35, 5, 35, 1350, 10, 35, 3, 35, 3, 35, 5, 35, 1354, 10, 35, 5, 35, 1356, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 1365, 10, 36, 12, 36, 14, 36, 1368, 11, 36, 3, 36, 3, 36, 5, 36, 1372, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1381, 10, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1393, 10, 39, 12, 39, 14, 39, 1396, 11, 39, 5, 39, 1398, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1405, 10, 39, 12, 39, 14, 39, 1408, 11, 39, 5, 39, 1410, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1416, 10, 39, 12, 39, 14, 39, 1419, 11, 39, 5, 39, 1421, 10, 39, 3, 39, 5, 39, 1424, 10, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1429, 10, 39, 3, 39, 5, 39, 1432, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1442, 10, 39, 12, 39, 14, 39, 1445, 11, 39, 5, 39, 1447, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1453, 10, 39, 12, 39, 14, 39, 1456, 11, 39, 3, 39, 3, 39, 5, 39, 1460, 10, 39, 3, 39, 3, 39, 5, 39, 1464, 10, 39, 5, 39, 1466, 10, 39, 5, 39, 1468, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 1483, 10, 41, 5, 41, 1485, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1496, 10, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1517, 10, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 1525, 10, 44, 12, 44, 14, 44, 1528, 11, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 5, 46, 1538, 10, 46, 3, 46, 3, 46, 5, 46, 1542, 10, 46, 5, 46, 1544, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 1550, 10, 47, 12, 47, 14, 47, 1553, 11, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 7, 48, 1567, 10, 48, 12, 48, 14, 48, 1570, 11, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1575, 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1586, 10, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 5, 50, 1593, 10, 50, 3, 50, 3, 50, 5, 50, 1597, 10, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 7, 50, 1605, 10, 50, 12, 50, 14, 50, 1608, 11, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1620, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1628, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 1635, 10, 51, 12, 51, 14, 51, 1638, 11, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1643, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1651, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1657, 10, 51, 3, 51, 3, 51, 5, 51, 1661, 10, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1666, 10, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1671, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1677, 10, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 7, 52, 1691, 10, 52, 12, 52, 14, 52, 1694, 11, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 6, 53, 1721, 10, 53, 13, 53, 14, 53, 1722, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1732, 10, 53, 12, 53, 14, 53, 1735, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1744, 10, 53, 3, 53, 5, 53, 1747, 10, 53, 3, 53, 5, 53, 1750, 10, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1755, 10, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1760, 10, 53, 12, 53, 14, 53, 1763, 11, 53, 5, 53, 1765, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1772, 10, 53, 12, 53, 14, 53, 1775, 11, 53, 5, 53, 1777, 10, 53, 3, 53, 3, 53, 5, 53, 1781, 10, 53, 3, 53, 5, 53, 1784, 10, 53, 3, 53, 5, 53, 1787, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1800, 10, 53, 12, 53, 14, 53, 1803, 11, 53, 5, 53, 1805, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 6, 53, 1822, 10, 53, 13, 53, 14, 53, 1823, 3, 53, 3, 53, 5, 53, 1828, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 6, 53, 1834, 10, 53, 13, 53, 14, 53, 1835, 3, 53, 3, 53, 5, 53, 1840, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1863, 10, 53, 12, 53, 14, 53, 1866, 11, 53, 5, 53, 1868, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1877, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1883, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1889, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1895, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1908, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1917, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1937, 10, 53, 12, 53, 14, 53, 1940, 11, 53, 5, 53, 1942, 10, 53, 3, 53, 5, 53, 1945, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1955, 10, 53, 12, 53, 14, 53, 1958, 11, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 1966, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 1972, 10, 56, 5, 56, 1974, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 1982, 10, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 5, 61, 1992, 10, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 1998, 10, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 2010, 10, 64, 12, 64, 14, 64, 2013, 11, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2021, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2028, 10, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2033, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2040, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2050, 10, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2055, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2062, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 2086, 10, 64, 12, 64, 14, 64, 2089, 11, 64, 3, 64, 3, 64, 5, 64, 2093, 10, 64, 5, 64, 2095, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2102, 10, 64, 7, 64, 2104, 10, 64, 12, 64, 14, 64, 2107, 11, 64, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 2113, 10, 65, 3, 66, 3, 66, 5, 66, 2117, 10, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2134, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 2147, 10, 69, 12, 69, 14, 69, 2150, 11, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2156, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2165, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 2173, 10, 69, 12, 69, 14, 69, 2176, 11, 69, 3, 69, 3, 69, 5, 69, 2180, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 2187, 10, 69, 12, 69, 14, 69, 2190, 11, 69, 3, 69, 3, 69, 5, 69, 2194, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2202, 10, 70, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 2208, 10, 71, 12, 71, 14, 71, 2211, 11, 71, 5, 71, 2213, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2219, 10, 71, 3, 71, 5, 71, 2222, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2229, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 2235, 10, 71, 12, 71, 14, 71, 2238, 11, 71, 5, 71, 2240, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 2246, 10, 71, 12, 71, 14, 71, 2249, 11, 71, 5, 71, 2251, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 2277, 10, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 2288, 10, 73, 3, 74, 3, 74, 3, 74, 5, 74, 2293, 10, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 7, 74, 2300, 10, 74, 12, 74, 14, 74, 2303, 11, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 7, 75, 2313, 10, 75, 12, 75, 14, 75, 2316, 11, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 2330, 10, 75, 3, 76, 3, 76, 5, 76, 2334, 10, 76, 3, 76, 3, 76, 5, 76, 2338, 10, 76, 3, 76, 3, 76, 5, 76, 2342, 10, 76, 3, 76, 3, 76, 3, 76, 3, 76, 5, 76, 2348, 10, 76, 3, 76, 3, 76, 5, 76, 2352, 10, 76, 3, 76, 3, 76, 5, 76, 2356, 10, 76, 3, 76, 3, 76, 5, 76, 2360, 10, 76, 5, 76, 2362, 10, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 2372, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 5, 79, 2379, 10, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 2388, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 2395, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 2402, 10, 82, 3, 83, 3, 83, 3, 83, 7, 83, 2407, 10, 83, 12, 83, 14, 83, 2410, 11, 83, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 7, 85, 2417, 10, 85, 12, 85, 14, 85, 2420, 11, 85, 3, 86, 3, 86, 3, 86, 5, 86, 2425, 10, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 5, 87, 2432, 10, 87, 3, 88, 3, 88, 3, 88, 7, 88, 2437, 10, 88, 12, 88, 14, 88, 2440, 11, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 2447, 10, 89, 3, 90, 5, 90, 2450, 10, 90, 3, 90, 3, 90, 5, 90, 2454, 10, 90, 3, 90, 3, 90, 5, 90, 2458, 10, 90, 3, 90, 5, 90, 2461, 10, 90, 3, 91, 3, 91, 3, 91, 2, 2, 9, 42, 66, 98, 102, 104, 126, 146, 92, 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, 104, 2, 106, 2, 108, 2, 110, 2, 112, 2, 114, 2, 116, 2, 118, 2, 120, 2, 122, 2, 124, 2, 126, 2, 128, 2, 130, 2, 132, 2, 134, 2, 136, 2, 138, 2, 140, 2, 142, 2, 144, 2, 146, 2, 148, 2, 150, 2, 152, 2, 154, 2, 156, 2, 158, 2, 160, 2, 162, 2, 164, 2, 166, 2, 168, 2, 170, 2, 172, 2, 174, 2, 176, 2, 178, 2, 180, 2, 2, 30, 4, 2, 36, 36, 187, 187, 4, 2, 63, 63, 114, 114, 4, 2, 197, 197, 214, 214, 4, 2, 90, 90, 105, 105, 4, 2, 77, 77, 106, 106, 3, 2, 194, 195, 4, 2, 86, 86, 141, 141, 4, 2, 263, 263, 267, 267, 4, 2, 76, 76, 231, 231, 4, 2, 29, 29, 65, 65, 4, 2, 86, 86, 120, 120, 4, 2, 22, 22, 68, 68, 4, 2, 32, 32, 213, 213, 4, 2, 107, 107, 201, 201, 3, 2, 257, 258, 3, 2, 259, 261, 4, 2, 85, 85, 196, 196, 3, 2, 251, 256, 5, 2, 22, 22, 26, 26, 208, 208, 4, 2, 82, 82, 225, 225, 7, 2, 60, 60, 102, 102, 138, 139, 199, 199, 249, 249, 3, 2, 142, 145, 4, 2, 87, 87, 173, 173, 5, 2, 97, 97, 119, 119, 217, 217, 6, 2, 69, 69, 115, 115, 129, 129, 238, 238, 4, 2, 157, 157, 248, 248, 6, 2, 64, 64, 110, 110, 202, 202, 234, 234, 51, 2, 19, 22, 24, 24, 26, 27, 29, 32, 35, 36, 39, 44, 49, 49, 58, 61, 63, 63, 65, 65, 67, 67, 69, 70, 73, 73, 77, 77, 80, 80, 83, 87, 89, 89, 92, 97, 100, 100, 102, 104, 106, 107, 109, 109, 112, 112, 114, 115, 117, 117, 119, 121, 123, 123, 125, 126, 129, 139, 141, 147, 151, 154, 156, 158, 161, 161, 163, 174, 176, 179, 181, 188, 190, 192, 194, 201, 203, 213, 215, 217, 219, 224, 226, 227, 229, 230, 232, 232, 234, 236, 238, 238, 240, 241, 244, 244, 246, 250, 2, 2867, 2, 185, 3, 2, 2, 2, 4, 195, 3, 2, 2, 2, 6, 197, 3, 2, 2, 2, 8, 201, 3, 2, 2, 2, 10, 205, 3, 2, 2, 2, 12, 209, 3, 2, 2, 2, 14, 213, 3, 2, 2, 2, 16, 987, 3, 2, 2, 2, 18, 990, 3, 2, 2, 2, 20, 994, 3, 2, 2, 2, 22, 1008, 3, 2, 2, 2, 24, 1010, 3, 2, 2, 2, 26, 1024, 3, 2, 2, 2, 28, 1030, 3, 2, 2, 2, 30, 1034, 3, 2, 2, 2, 32, 1042, 3, 2, 2, 2, 34, 1048, 3, 2, 2, 2, 36, 1050, 3, 2, 2, 2, 38, 1087, 3, 2, 2, 2, 40, 1089, 3, 2, 2, 2, 42, 1091, 3, 2, 2, 2, 44, 1127, 3, 2, 2, 2, 46, 1129, 3, 2, 2, 2, 48, 1137, 3, 2, 2, 2, 50, 1185, 3, 2, 2, 2, 52, 1235, 3, 2, 2, 2, 54, 1250, 3, 2, 2, 2, 56, 1252, 3, 2, 2, 2, 58, 1259, 3, 2, 2, 2, 60, 1288, 3, 2, 2, 2, 62, 1297, 3, 2, 2, 2, 64, 1314, 3, 2, 2, 2, 66, 1316, 3, 2, 2, 2, 68, 1355, 3, 2, 2, 2, 70, 1371, 3, 2, 2, 2, 72, 1373, 3, 2, 2, 2, 74, 1382, 3, 2, 2, 2, 76, 1384, 3, 2, 2, 2, 78, 1469, 3, 2, 2, 2, 80, 1484, 3, 2, 2, 2, 82, 1495, 3, 2, 2, 2, 84, 1516, 3, 2, 2, 2, 86, 1518, 3, 2, 2, 2, 88, 1531, 3, 2, 2, 2, 90, 1535, 3, 2, 2, 2, 92, 1545, 3, 2, 2, 2, 94, 1585, 3, 2, 2, 2, 96, 1587, 3, 2, 2, 2, 98, 1596, 3, 2, 2, 2, 100, 1670, 3, 2, 2, 2, 102, 1676, 3, 2, 2, 2, 104, 1944, 3, 2, 2, 2, 106, 1959, 3, 2, 2, 2, 108, 1965, 3, 2, 2, 2, 110, 1973, 3, 2, 2, 2, 112, 1981, 3, 2, 2, 2, 114, 1983, 3, 2, 2, 2, 116, 1985, 3, 2, 2, 2, 118, 1987, 3, 2, 2, 2, 120, 1989, 3, 2, 2, 2, 122, 1999, 3, 2, 2, 2, 124, 2001, 3, 2, 2, 2, 126, 2094, 3, 2, 2, 2, 128, 2112, 3, 2, 2, 2, 130, 2116, 3, 2, 2, 2, 132, 2118, 3, 2, 2, 2, 134, 2123, 3, 2, 2, 2, 136, 2193, 3, 2, 2, 2, 138, 2195, 3, 2, 2, 2, 140, 2212, 3, 2, 2, 2, 142, 2276, 3, 2, 2, 2, 144, 2287, 3, 2, 2, 2, 146, 2289, 3, 2, 2, 2, 148, 2329, 3, 2, 2, 2, 150, 2361, 3, 2, 2, 2, 152, 2363, 3, 2, 2, 2, 154, 2371, 3, 2, 2, 2, 156, 2378, 3, 2, 2, 2, 158, 2387, 3, 2, 2, 2, 160, 2394, 3, 2, 2, 2, 162, 2401, 3, 2, 2, 2, 164, 2403, 3, 2, 2, 2, 166, 2411, 3, 2, 2, 2, 168, 2413, 3, 2, 2, 2, 170, 2424, 3, 2, 2, 2, 172, 2431, 3, 2, 2, 2, 174, 2433, 3, 2, 2, 2, 176, 2446, 3, 2, 2, 2, 178, 2460, 3, 2, 2, 2, 180, 2462, 3, 2, 2, 2, 182, 184, 5, 4, 3, 2, 183, 182, 3, 2, 2, 2, 184, 187, 3, 2, 2, 2, 185, 183, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 188, 3, 2, 2, 2, 187, 185, 3, 2, 2, 2, 188, 189, 7, 2, 2, 3, 189, 3, 3, 2, 2, 2, 190, 196, 5, 6, 4, 2, 191, 196, 5, 8, 5, 2, 192, 196, 5, 10, 6, 2, 193, 196, 5, 12, 7, 2, 194, 196, 5, 14, 8, 2, 195, 190, 3, 2, 2, 2, 195, 191, 3, 2, 2, 2, 195, 192, 3, 2, 2, 2, 195, 193, 3, 2, 2, 2, 195, 194, 3, 2, 2, 2, 196, 5, 3, 2, 2, 2, 197, 199, 5, 16, 9, 2, 198, 200, 7, 274, 2, 2, 199, 198, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 7, 3, 2, 2, 2, 201, 203, 5, 96, 49, 2, 202, 204, 7, 274, 2, 2, 203, 202, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 9, 3, 2, 2, 2, 205, 207, 5, 164, 83, 2, 206, 208, 7, 274, 2, 2, 207, 206, 3, 2, 2, 2, 207, 208, 3, 2, 2, 2, 208, 11, 3, 2, 2, 2, 209, 211, 5, 126, 64, 2, 210, 212, 7, 274, 2, 2, 211, 210, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 13, 3, 2, 2, 2, 213, 215, 5, 146, 74, 2, 214, 216, 7, 274, 2, 2, 215, 214, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 15, 3, 2, 2, 2, 217, 988, 5, 18, 10, 2, 218, 219, 7, 235, 2, 2, 219, 988, 5, 176, 89, 2, 220, 221, 7, 235, 2, 2, 221, 222, 5, 176, 89, 2, 222, 223, 7, 3, 2, 2, 223, 224, 5, 176, 89, 2, 224, 988, 3, 2, 2, 2, 225, 226, 7, 46, 2, 2, 226, 230, 7, 197, 2, 2, 227, 228, 7, 103, 2, 2, 228, 229, 7, 149, 2, 2, 229, 231, 7, 79, 2, 2, 230, 227, 3, 2, 2, 2, 230, 231, 3, 2, 2, 2, 231, 232, 3, 2, 2, 2, 232, 235, 5, 168, 85, 2, 233, 234, 7, 31, 2, 2, 234, 236, 5, 172, 87, 2, 235, 233, 3, 2, 2, 2, 235, 236, 3, 2, 2, 2, 236, 239, 3, 2, 2, 2, 237, 238, 7, 245, 2, 2, 238, 240, 5, 28, 15, 2, 239, 237, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 988, 3, 2, 2, 2, 241, 242, 7, 71, 2, 2, 242, 245, 7, 197, 2, 2, 243, 244, 7, 103, 2, 2, 244, 246, 7, 79, 2, 2, 245, 243, 3, 2, 2, 2, 245, 246, 3, 2, 2, 2, 246, 247, 3, 2, 2, 2, 247, 249, 5, 168, 85, 2, 248, 250, 9, 2, 2, 2, 249, 248, 3, 2, 2, 2, 249, 250, 3, 2, 2, 2, 250, 988, 3, 2, 2, 2, 251, 252, 7, 23, 2, 2, 252, 253, 7, 197, 2, 2, 253, 254, 5, 168, 85, 2, 254, 255, 7, 182, 2, 2, 255, 256, 7, 222, 2, 2, 256, 257, 5, 176, 89, 2, 257, 988, 3, 2, 2, 2, 258, 259, 7, 23, 2, 2, 259, 260, 7, 197, 2, 2, 260, 261, 5, 168, 85, 2, 261, 262, 7, 205, 2, 2, 262, 263, 7, 31, 2, 2, 263, 264, 5, 172, 87, 2, 264, 988, 3, 2, 2, 2, 265, 266, 7, 46, 2, 2, 266, 270, 7, 214, 2, 2, 267, 268, 7, 103, 2, 2, 268, 269, 7, 149, 2, 2, 269, 271, 7, 79, 2, 2, 270, 267, 3, 2, 2, 2, 270, 271, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 274, 5, 168, 85, 2, 273, 275, 5, 92, 47, 2, 274, 273, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 275, 278, 3, 2, 2, 2, 276, 277, 7, 42, 2, 2, 277, 279, 5, 110, 56, 2, 278, 276, 3, 2, 2, 2, 278, 279, 3, 2, 2, 2, 279, 282, 3, 2, 2, 2, 280, 281, 7, 245, 2, 2, 281, 283, 5, 28, 15, 2, 282, 280, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 290, 7, 28, 2, 2, 285, 291, 5, 18, 10, 2, 286, 287, 7, 4, 2, 2, 287, 288, 5, 18, 10, 2, 288, 289, 7, 5, 2, 2, 289, 291, 3, 2, 2, 2, 290, 285, 3, 2, 2, 2, 290, 286, 3, 2, 2, 2, 291, 297, 3, 2, 2, 2, 292, 294, 7, 245, 2, 2, 293, 295, 7, 146, 2, 2, 294, 293, 3, 2, 2, 2, 294, 295, 3, 2, 2, 2, 295, 296, 3, 2, 2, 2, 296, 298, 7, 58, 2, 2, 297, 292, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 988, 3, 2, 2, 2, 299, 300, 7, 46, 2, 2, 300, 304, 7, 214, 2, 2, 301, 302, 7, 103, 2, 2, 302, 303, 7, 149, 2, 2, 303, 305, 7, 79, 2, 2, 304, 301, 3, 2, 2, 2, 304, 305, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 307, 5, 168, 85, 2, 307, 308, 7, 4, 2, 2, 308, 313, 5, 22, 12, 2, 309, 310, 7, 6, 2, 2, 310, 312, 5, 22, 12, 2, 311, 309, 3, 2, 2, 2, 312, 315, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 314, 3, 2, 2, 2, 314, 316, 3, 2, 2, 2, 315, 313, 3, 2, 2, 2, 316, 319, 7, 5, 2, 2, 317, 318, 7, 42, 2, 2, 318, 320, 5, 110, 56, 2, 319, 317, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 323, 3, 2, 2, 2, 321, 322, 7, 245, 2, 2, 322, 324, 5, 28, 15, 2, 323, 321, 3, 2, 2, 2, 323, 324, 3, 2, 2, 2, 324, 988, 3, 2, 2, 2, 325, 326, 7, 71, 2, 2, 326, 329, 7, 214, 2, 2, 327, 328, 7, 103, 2, 2, 328, 330, 7, 79, 2, 2, 329, 327, 3, 2, 2, 2, 329, 330, 3, 2, 2, 2, 330, 331, 3, 2, 2, 2, 331, 988, 5, 168, 85, 2, 332, 333, 7, 110, 2, 2, 333, 334, 7, 113, 2, 2, 334, 336, 5, 168, 85, 2, 335, 337, 5, 92, 47, 2, 336, 335, 3, 2, 2, 2, 336, 337, 3, 2, 2, 2, 337, 338, 3, 2, 2, 2, 338, 339, 5, 18, 10, 2, 339, 988, 3, 2, 2, 2, 340, 341, 7, 64, 2, 2, 341, 342, 7, 90, 2, 2, 342, 345, 5, 168, 85, 2, 343, 344, 7, 243, 2, 2, 344, 346, 5, 98, 50, 2, 345, 343, 3, 2, 2, 2, 345, 346, 3, 2, 2, 2, 346, 988, 3, 2, 2, 2, 347, 348, 7, 224, 2, 2, 348, 349, 7, 214, 2, 2, 349, 988, 5, 168, 85, 2, 350, 351, 7, 23, 2, 2, 351, 354, 7, 214, 2, 2, 352, 353, 7, 103, 2, 2, 353, 355, 7, 79, 2, 2, 354, 352, 3, 2, 2, 2, 354, 355, 3, 2, 2, 2, 355, 356, 3, 2, 2, 2, 356, 357, 5, 168, 85, 2, 357, 358, 7, 182, 2, 2, 358, 359, 7, 222, 2, 2, 359, 360, 5, 168, 85, 2, 360, 988, 3, 2, 2, 2, 361, 362, 7, 42, 2, 2, 362, 363, 7, 155, 2, 2, 363, 364, 7, 214, 2, 2, 364, 365, 5, 168, 85, 2, 365, 368, 7, 116, 2, 2, 366, 369, 5, 110, 56, 2, 367, 369, 7, 150, 2, 2, 368, 366, 3, 2, 2, 2, 368, 367, 3, 2, 2, 2, 369, 988, 3, 2, 2, 2, 370, 371, 7, 42, 2, 2, 371, 372, 7, 155, 2, 2, 372, 373, 7, 40, 2, 2, 373, 374, 5, 168, 85, 2, 374, 377, 7, 116, 2, 2, 375, 378, 5, 110, 56, 2, 376, 378, 7, 150, 2, 2, 377, 375, 3, 2, 2, 2, 377, 376, 3, 2, 2, 2, 378, 988, 3, 2, 2, 2, 379, 380, 7, 23, 2, 2, 380, 383, 7, 214, 2, 2, 381, 382, 7, 103, 2, 2, 382, 384, 7, 79, 2, 2, 383, 381, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 385, 3, 2, 2, 2, 385, 386, 5, 168, 85, 2, 386, 387, 7, 182, 2, 2, 387, 390, 7, 40, 2, 2, 388, 389, 7, 103, 2, 2, 389, 391, 7, 79, 2, 2, 390, 388, 3, 2, 2, 2, 390, 391, 3, 2, 2, 2, 391, 392, 3, 2, 2, 2, 392, 393, 5, 176, 89, 2, 393, 394, 7, 222, 2, 2, 394, 395, 5, 176, 89, 2, 395, 988, 3, 2, 2, 2, 396, 397, 7, 23, 2, 2, 397, 400, 7, 214, 2, 2, 398, 399, 7, 103, 2, 2, 399, 401, 7, 79, 2, 2, 400, 398, 3, 2, 2, 2, 400, 401, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 403, 5, 168, 85, 2, 403, 404, 7, 71, 2, 2, 404, 407, 7, 40, 2, 2, 405, 406, 7, 103, 2, 2, 406, 408, 7, 79, 2, 2, 407, 405, 3, 2, 2, 2, 407, 408, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 410, 5, 168, 85, 2, 410, 988, 3, 2, 2, 2, 411, 412, 7, 23, 2, 2, 412, 415, 7, 214, 2, 2, 413, 414, 7, 103, 2, 2, 414, 416, 7, 79, 2, 2, 415, 413, 3, 2, 2, 2, 415, 416, 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 418, 5, 168, 85, 2, 418, 419, 7, 19, 2, 2, 419, 423, 7, 40, 2, 2, 420, 421, 7, 103, 2, 2, 421, 422, 7, 149, 2, 2, 422, 424, 7, 79, 2, 2, 423, 420, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 426, 5, 24, 13, 2, 426, 988, 3, 2, 2, 2, 427, 428, 7, 23, 2, 2, 428, 429, 7, 214, 2, 2, 429, 430, 5, 168, 85, 2, 430, 431, 7, 205, 2, 2, 431, 432, 7, 31, 2, 2, 432, 433, 5, 172, 87, 2, 433, 988, 3, 2, 2, 2, 434, 435, 7, 23, 2, 2, 435, 436, 7, 214, 2, 2, 436, 437, 5, 168, 85, 2, 437, 438, 7, 205, 2, 2, 438, 439, 7, 177, 2, 2, 439, 440, 5, 30, 16, 2, 440, 988, 3, 2, 2, 2, 441, 442, 7, 23, 2, 2, 442, 443, 7, 214, 2, 2, 443, 444, 5, 168, 85, 2, 444, 445, 7, 78, 2, 2, 445, 458, 5, 176, 89, 2, 446, 455, 7, 4, 2, 2, 447, 452, 5, 160, 81, 2, 448, 449, 7, 6, 2, 2, 449, 451, 5, 160, 81, 2, 450, 448, 3, 2, 2, 2, 451, 454, 3, 2, 2, 2, 452, 450, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 456, 3, 2, 2, 2, 454, 452, 3, 2, 2, 2, 455, 447, 3, 2, 2, 2, 455, 456, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 459, 7, 5, 2, 2, 458, 446, 3, 2, 2, 2, 458, 459, 3, 2, 2, 2, 459, 462, 3, 2, 2, 2, 460, 461, 7, 243, 2, 2, 461, 463, 5, 98, 50, 2, 462, 460, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 988, 3, 2, 2, 2, 464, 465, 7, 24, 2, 2, 465, 468, 5, 168, 85, 2, 466, 467, 7, 245, 2, 2, 467, 469, 5, 28, 15, 2, 468, 466, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 988, 3, 2, 2, 2, 470, 473, 7, 46, 2, 2, 471, 472, 7, 159, 2, 2, 472, 474, 7, 184, 2, 2, 473, 471, 3, 2, 2, 2, 473, 474, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 476, 7, 135, 2, 2, 476, 480, 7, 241, 2, 2, 477, 478, 7, 103, 2, 2, 478, 479, 7, 149, 2, 2, 479, 481, 7, 79, 2, 2, 480, 477, 3, 2, 2, 2, 480, 481, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 485, 5, 168, 85, 2, 483, 484, 7, 42, 2, 2, 484, 486, 5, 110, 56, 2, 485, 483, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 489, 3, 2, 2, 2, 487, 488, 7, 245, 2, 2, 488, 490, 5, 28, 15, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 491, 3, 2, 2, 2, 491, 492, 7, 28, 2, 2, 492, 493, 5, 18, 10, 2, 493, 988, 3, 2, 2, 2, 494, 497, 7, 46, 2, 2, 495, 496, 7, 159, 2, 2, 496, 498, 7, 184, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 499, 3, 2, 2, 2, 499, 500, 7, 241, 2, 2, 500, 503, 5, 168, 85, 2, 501, 502, 7, 42, 2, 2, 502, 504, 5, 110, 56, 2, 503, 501, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 507, 3, 2, 2, 2, 505, 506, 7, 200, 2, 2, 506, 508, 9, 3, 2, 2, 507, 505, 3, 2, 2, 2, 507, 508, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 7, 28, 2, 2, 510, 511, 5, 18, 10, 2, 511, 988, 3, 2, 2, 2, 512, 513, 7, 181, 2, 2, 513, 514, 7, 135, 2, 2, 514, 515, 7, 241, 2, 2, 515, 988, 5, 168, 85, 2, 516, 517, 7, 71, 2, 2, 517, 518, 7, 135, 2, 2, 518, 521, 7, 241, 2, 2, 519, 520, 7, 103, 2, 2, 520, 522, 7, 79, 2, 2, 521, 519, 3, 2, 2, 2, 521, 522, 3, 2, 2, 2, 522, 523, 3, 2, 2, 2, 523, 988, 5, 168, 85, 2, 524, 525, 7, 23, 2, 2, 525, 526, 7, 135, 2, 2, 526, 529, 7, 241, 2, 2, 527, 528, 7, 103, 2, 2, 528, 530, 7, 79, 2, 2, 529, 527, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 532, 5, 168, 85, 2, 532, 533, 7, 182, 2, 2, 533, 534, 7, 222, 2, 2, 534, 535, 5, 168, 85, 2, 535, 988, 3, 2, 2, 2, 536, 537, 7, 23, 2, 2, 537, 538, 7, 135, 2, 2, 538, 539, 7, 241, 2, 2, 539, 540, 5, 168, 85, 2, 540, 541, 7, 205, 2, 2, 541, 542, 7, 177, 2, 2, 542, 543, 5, 30, 16, 2, 543, 988, 3, 2, 2, 2, 544, 545, 7, 71, 2, 2, 545, 548, 7, 241, 2, 2, 546, 547, 7, 103, 2, 2, 547, 549, 7, 79, 2, 2, 548, 546, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 988, 5, 168, 85, 2, 551, 552, 7, 23, 2, 2, 552, 553, 7, 241, 2, 2, 553, 554, 5, 168, 85, 2, 554, 555, 7, 182, 2, 2, 555, 556, 7, 222, 2, 2, 556, 557, 5, 168, 85, 2, 557, 988, 3, 2, 2, 2, 558, 559, 7, 23, 2, 2, 559, 560, 7, 241, 2, 2, 560, 561, 5, 168, 85, 2, 561, 562, 7, 205, 2, 2, 562, 563, 7, 31, 2, 2, 563, 564, 5, 172, 87, 2, 564, 988, 3, 2, 2, 2, 565, 566, 7, 35, 2, 2, 566, 567, 5, 168, 85, 2, 567, 576, 7, 4, 2, 2, 568, 573, 5, 160, 81, 2, 569, 570, 7, 6, 2, 2, 570, 572, 5, 160, 81, 2, 571, 569, 3, 2, 2, 2, 572, 575, 3, 2, 2, 2, 573, 571, 3, 2, 2, 2, 573, 574, 3, 2, 2, 2, 574, 577, 3, 2, 2, 2, 575, 573, 3, 2, 2, 2, 576, 568, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 578, 3, 2, 2, 2, 578, 579, 7, 5, 2, 2, 579, 988, 3, 2, 2, 2, 580, 581, 7, 46, 2, 2, 581, 582, 7, 190, 2, 2, 582, 586, 5, 176, 89, 2, 583, 584, 7, 245, 2, 2, 584, 585, 7, 20, 2, 2, 585, 587, 5, 170, 86, 2, 586, 583, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 590, 3, 2, 2, 2, 588, 589, 7, 105, 2, 2, 589, 591, 5, 176, 89, 2, 590, 588, 3, 2, 2, 2, 590, 591, 3, 2, 2, 2, 591, 988, 3, 2, 2, 2, 592, 593, 7, 71, 2, 2, 593, 594, 7, 190, 2, 2, 594, 988, 5, 176, 89, 2, 595, 596, 7, 93, 2, 2, 596, 597, 5, 174, 88, 2, 597, 598, 7, 222, 2, 2, 598, 603, 5, 172, 87, 2, 599, 600, 7, 6, 2, 2, 600, 602, 5, 172, 87, 2, 601, 599, 3, 2, 2, 2, 602, 605, 3, 2, 2, 2, 603, 601, 3, 2, 2, 2, 603, 604, 3, 2, 2, 2, 604, 609, 3, 2, 2, 2, 605, 603, 3, 2, 2, 2, 606, 607, 7, 245, 2, 2, 607, 608, 7, 20, 2, 2, 608, 610, 7, 158, 2, 2, 609, 606, 3, 2, 2, 2, 609, 610, 3, 2, 2, 2, 610, 614, 3, 2, 2, 2, 611, 612, 7, 94, 2, 2, 612, 613, 7, 34, 2, 2, 613, 615, 5, 170, 86, 2, 614, 611, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 618, 3, 2, 2, 2, 616, 617, 7, 105, 2, 2, 617, 619, 5, 176, 89, 2, 618, 616, 3, 2, 2, 2, 618, 619, 3, 2, 2, 2, 619, 988, 3, 2, 2, 2, 620, 624, 7, 188, 2, 2, 621, 622, 7, 20, 2, 2, 622, 623, 7, 158, 2, 2, 623, 625, 7, 88, 2, 2, 624, 621, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 627, 5, 174, 88, 2, 627, 628, 7, 90, 2, 2, 628, 633, 5, 172, 87, 2, 629, 630, 7, 6, 2, 2, 630, 632, 5, 172, 87, 2, 631, 629, 3, 2, 2, 2, 632, 635, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 633, 634, 3, 2, 2, 2, 634, 639, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 636, 637, 7, 94, 2, 2, 637, 638, 7, 34, 2, 2, 638, 640, 5, 170, 86, 2, 639, 636, 3, 2, 2, 2, 639, 640, 3, 2, 2, 2, 640, 643, 3, 2, 2, 2, 641, 642, 7, 105, 2, 2, 642, 644, 5, 176, 89, 2, 643, 641, 3, 2, 2, 2, 643, 644, 3, 2, 2, 2, 644, 988, 3, 2, 2, 2, 645, 646, 7, 205, 2, 2, 646, 650, 7, 190, 2, 2, 647, 651, 7, 22, 2, 2, 648, 651, 7, 147, 2, 2, 649, 651, 5, 176, 89, 2, 650, 647, 3, 2, 2, 2, 650, 648, 3, 2, 2, 2, 650, 649, 3, 2, 2, 2, 651, 654, 3, 2, 2, 2, 652, 653, 7, 105, 2, 2, 653, 655, 5, 176, 89, 2, 654, 652, 3, 2, 2, 2, 654, 655, 3, 2, 2, 2, 655, 988, 3, 2, 2, 2, 656, 667, 7, 93, 2, 2, 657, 662, 5, 166, 84, 2, 658, 659, 7, 6, 2, 2, 659, 661, 5, 166, 84, 2, 660, 658, 3, 2, 2, 2, 661, 664, 3, 2, 2, 2, 662, 660, 3, 2, 2, 2, 662, 663, 3, 2, 2, 2, 663, 668, 3, 2, 2, 2, 664, 662, 3, 2, 2, 2, 665, 666, 7, 22, 2, 2, 666, 668, 7, 176, 2, 2, 667, 657, 3, 2, 2, 2, 667, 665, 3, 2, 2, 2, 668, 669, 3, 2, 2, 2, 669, 671, 7, 155, 2, 2, 670, 672, 9, 4, 2, 2, 671, 670, 3, 2, 2, 2, 671, 672, 3, 2, 2, 2, 672, 673, 3, 2, 2, 2, 673, 674, 5, 168, 85, 2, 674, 675, 7, 222, 2, 2, 675, 679, 5, 172, 87, 2, 676, 677, 7, 245, 2, 2, 677, 678, 7, 93, 2, 2, 678, 680, 7, 158, 2, 2, 679, 676, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 988, 3, 2, 2, 2, 681, 692, 7, 96, 2, 2, 682, 687, 5, 166, 84, 2, 683, 684, 7, 6, 2, 2, 684, 686, 5, 166, 84, 2, 685, 683, 3, 2, 2, 2, 686, 689, 3, 2, 2, 2, 687, 685, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 693, 3, 2, 2, 2, 689, 687, 3, 2, 2, 2, 690, 691, 7, 22, 2, 2, 691, 693, 7, 176, 2, 2, 692, 682, 3, 2, 2, 2, 692, 690, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 696, 7, 155, 2, 2, 695, 697, 9, 4, 2, 2, 696, 695, 3, 2, 2, 2, 696, 697, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 699, 5, 168, 85, 2, 699, 700, 7, 222, 2, 2, 700, 701, 5, 172, 87, 2, 701, 988, 3, 2, 2, 2, 702, 706, 7, 188, 2, 2, 703, 704, 7, 93, 2, 2, 704, 705, 7, 158, 2, 2, 705, 707, 7, 88, 2, 2, 706, 703, 3, 2, 2, 2, 706, 707, 3, 2, 2, 2, 707, 718, 3, 2, 2, 2, 708, 713, 5, 166, 84, 2, 709, 710, 7, 6, 2, 2, 710, 712, 5, 166, 84, 2, 711, 709, 3, 2, 2, 2, 712, 715, 3, 2, 2, 2, 713, 711, 3, 2, 2, 2, 713, 714, 3, 2, 2, 2, 714, 719, 3, 2, 2, 2, 715, 713, 3, 2, 2, 2, 716, 717, 7, 22, 2, 2, 717, 719, 7, 176, 2, 2, 718, 708, 3, 2, 2, 2, 718, 716, 3, 2, 2, 2, 719, 720, 3, 2, 2, 2, 720, 722, 7, 155, 2, 2, 721, 723, 9, 4, 2, 2, 722, 721, 3, 2, 2, 2, 722, 723, 3, 2, 2, 2, 723, 724, 3, 2, 2, 2, 724, 725, 5, 168, 85, 2, 725, 726, 7, 90, 2, 2, 726, 727, 5, 172, 87, 2, 727, 988, 3, 2, 2, 2, 728, 729, 7, 207, 2, 2, 729, 735, 7, 95, 2, 2, 730, 732, 7, 155, 2, 2, 731, 733, 7, 214, 2, 2, 732, 731, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 734, 3, 2, 2, 2, 734, 736, 5, 168, 85, 2, 735, 730, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 988, 3, 2, 2, 2, 737, 739, 7, 80, 2, 2, 738, 740, 7, 24, 2, 2, 739, 738, 3, 2, 2, 2, 739, 740, 3, 2, 2, 2, 740, 742, 3, 2, 2, 2, 741, 743, 7, 240, 2, 2, 742, 741, 3, 2, 2, 2, 742, 743, 3, 2, 2, 2, 743, 755, 3, 2, 2, 2, 744, 745, 7, 4, 2, 2, 745, 750, 5, 154, 78, 2, 746, 747, 7, 6, 2, 2, 747, 749, 5, 154, 78, 2, 748, 746, 3, 2, 2, 2, 749, 752, 3, 2, 2, 2, 750, 748, 3, 2, 2, 2, 750, 751, 3, 2, 2, 2, 751, 753, 3, 2, 2, 2, 752, 750, 3, 2, 2, 2, 753, 754, 7, 5, 2, 2, 754, 756, 3, 2, 2, 2, 755, 744, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 757, 3, 2, 2, 2, 757, 988, 5, 16, 9, 2, 758, 759, 7, 207, 2, 2, 759, 760, 7, 46, 2, 2, 760, 761, 7, 214, 2, 2, 761, 988, 5, 168, 85, 2, 762, 763, 7, 207, 2, 2, 763, 764, 7, 46, 2, 2, 764, 765, 7, 197, 2, 2, 765, 988, 5, 168, 85, 2, 766, 767, 7, 207, 2, 2, 767, 768, 7, 46, 2, 2, 768, 769, 7, 241, 2, 2, 769, 988, 5, 168, 85, 2, 770, 771, 7, 207, 2, 2, 771, 772, 7, 46, 2, 2, 772, 773, 7, 135, 2, 2, 773, 774, 7, 241, 2, 2, 774, 988, 5, 168, 85, 2, 775, 776, 7, 207, 2, 2, 776, 779, 7, 215, 2, 2, 777, 778, 9, 5, 2, 2, 778, 780, 5, 168, 85, 2, 779, 777, 3, 2, 2, 2, 779, 780, 3, 2, 2, 2, 780, 787, 3, 2, 2, 2, 781, 782, 7, 124, 2, 2, 782, 785, 5, 110, 56, 2, 783, 784, 7, 75, 2, 2, 784, 786, 5, 110, 56, 2, 785, 783, 3, 2, 2, 2, 785, 786, 3, 2, 2, 2, 786, 788, 3, 2, 2, 2, 787, 781, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 788, 988, 3, 2, 2, 2, 789, 790, 7, 207, 2, 2, 790, 793, 7, 198, 2, 2, 791, 792, 9, 5, 2, 2, 792, 794, 5, 176, 89, 2, 793, 791, 3, 2, 2, 2, 793, 794, 3, 2, 2, 2, 794, 801, 3, 2, 2, 2, 795, 796, 7, 124, 2, 2, 796, 799, 5, 110, 56, 2, 797, 798, 7, 75, 2, 2, 798, 800, 5, 110, 56, 2, 799, 797, 3, 2, 2, 2, 799, 800, 3, 2, 2, 2, 800, 802, 3, 2, 2, 2, 801, 795, 3, 2, 2, 2, 801, 802, 3, 2, 2, 2, 802, 988, 3, 2, 2, 2, 803, 804, 7, 207, 2, 2, 804, 811, 7, 39, 2, 2, 805, 806, 7, 124, 2, 2, 806, 809, 5, 110, 56, 2, 807, 808, 7, 75, 2, 2, 808, 810, 5, 110, 56, 2, 809, 807, 3, 2, 2, 2, 809, 810, 3, 2, 2, 2, 810, 812, 3, 2, 2, 2, 811, 805, 3, 2, 2, 2, 811, 812, 3, 2, 2, 2, 812, 988, 3, 2, 2, 2, 813, 814, 7, 207, 2, 2, 814, 815, 7, 41, 2, 2, 815, 817, 9, 5, 2, 2, 816, 818, 5, 168, 85, 2, 817, 816, 3, 2, 2, 2, 817, 818, 3, 2, 2, 2, 818, 825, 3, 2, 2, 2, 819, 820, 7, 124, 2, 2, 820, 823, 5, 110, 56, 2, 821, 822, 7, 75, 2, 2, 822, 824, 5, 110, 56, 2, 823, 821, 3, 2, 2, 2, 823, 824, 3, 2, 2, 2, 824, 826, 3, 2, 2, 2, 825, 819, 3, 2, 2, 2, 825, 826, 3, 2, 2, 2, 826, 988, 3, 2, 2, 2, 827, 828, 7, 207, 2, 2, 828, 829, 7, 210, 2, 2, 829, 830, 7, 88, 2, 2, 830, 988, 5, 168, 85, 2, 831, 832, 7, 207, 2, 2, 832, 833, 7, 210, 2, 2, 833, 834, 7, 88, 2, 2, 834, 835, 7, 4, 2, 2, 835, 836, 5, 18, 10, 2, 836, 837, 7, 5, 2, 2, 837, 988, 3, 2, 2, 2, 838, 840, 7, 207, 2, 2, 839, 841, 7, 49, 2, 2, 840, 839, 3, 2, 2, 2, 840, 841, 3, 2, 2, 2, 841, 842, 3, 2, 2, 2, 842, 845, 7, 191, 2, 2, 843, 844, 9, 5, 2, 2, 844, 846, 5, 176, 89, 2, 845, 843, 3, 2, 2, 2, 845, 846, 3, 2, 2, 2, 846, 988, 3, 2, 2, 2, 847, 848, 7, 207, 2, 2, 848, 849, 7, 190, 2, 2, 849, 852, 7, 95, 2, 2, 850, 851, 9, 5, 2, 2, 851, 853, 5, 176, 89, 2, 852, 850, 3, 2, 2, 2, 852, 853, 3, 2, 2, 2, 853, 988, 3, 2, 2, 2, 854, 855, 7, 66, 2, 2, 855, 988, 5, 168, 85, 2, 856, 857, 7, 65, 2, 2, 857, 988, 5, 168, 85, 2, 858, 859, 7, 207, 2, 2, 859, 866, 7, 92, 2, 2, 860, 861, 7, 124, 2, 2, 861, 864, 5, 110, 56, 2, 862, 863, 7, 75, 2, 2, 863, 865, 5, 110, 56, 2, 864, 862, 3, 2, 2, 2, 864, 865, 3, 2, 2, 2, 865, 867, 3, 2, 2, 2, 866, 860, 3, 2, 2, 2, 866, 867, 3, 2, 2, 2, 867, 988, 3, 2, 2, 2, 868, 869, 7, 207, 2, 2, 869, 876, 7, 204, 2, 2, 870, 871, 7, 124, 2, 2, 871, 874, 5, 110, 56, 2, 872, 873, 7, 75, 2, 2, 873, 875, 5, 110, 56, 2, 874, 872, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 877, 3, 2, 2, 2, 876, 870, 3, 2, 2, 2, 876, 877, 3, 2, 2, 2, 877, 988, 3, 2, 2, 2, 878, 879, 7, 205, 2, 2, 879, 880, 7, 204, 2, 2, 880, 881, 5, 168, 85, 2, 881, 882, 7, 251, 2, 2, 882, 883, 5, 96, 49, 2, 883, 988, 3, 2, 2, 2, 884, 885, 7, 185, 2, 2, 885, 886, 7, 204, 2, 2, 886, 988, 5, 168, 85, 2, 887, 888, 7, 209, 2, 2, 888, 897, 7, 223, 2, 2, 889, 894, 5, 156, 79, 2, 890, 891, 7, 6, 2, 2, 891, 893, 5, 156, 79, 2, 892, 890, 3, 2, 2, 2, 893, 896, 3, 2, 2, 2, 894, 892, 3, 2, 2, 2, 894, 895, 3, 2, 2, 2, 895, 898, 3, 2, 2, 2, 896, 894, 3, 2, 2, 2, 897, 889, 3, 2, 2, 2, 897, 898, 3, 2, 2, 2, 898, 988, 3, 2, 2, 2, 899, 901, 7, 43, 2, 2, 900, 902, 7, 247, 2, 2, 901, 900, 3, 2, 2, 2, 901, 902, 3, 2, 2, 2, 902, 988, 3, 2, 2, 2, 903, 905, 7, 192, 2, 2, 904, 906, 7, 247, 2, 2, 905, 904, 3, 2, 2, 2, 905, 906, 3, 2, 2, 2, 906, 988, 3, 2, 2, 2, 907, 908, 7, 175, 2, 2, 908, 909, 5, 176, 89, 2, 909, 910, 7, 90, 2, 2, 910, 911, 5, 16, 9, 2, 911, 988, 3, 2, 2, 2, 912, 913, 7, 62, 2, 2, 913, 914, 7, 175, 2, 2, 914, 988, 5, 176, 89, 2, 915, 916, 7, 78, 2, 2, 916, 926, 5, 176, 89, 2, 917, 918, 7, 237, 2, 2, 918, 923, 5, 96, 49, 2, 919, 920, 7, 6, 2, 2, 920, 922, 5, 96, 49, 2, 921, 919, 3, 2, 2, 2, 922, 925, 3, 2, 2, 2, 923, 921, 3, 2, 2, 2, 923, 924, 3, 2, 2, 2, 924, 927, 3, 2, 2, 2, 925, 923, 3, 2, 2, 2, 926, 917, 3, 2, 2, 2, 926, 927, 3, 2, 2, 2, 927, 988, 3, 2, 2, 2, 928, 929, 7, 66, 2, 2, 929, 930, 7, 109, 2, 2, 930, 988, 5, 176, 89, 2, 931, 932, 7, 66, 2, 2, 932, 933, 7, 163, 2, 2, 933, 988, 5, 176, 89, 2, 934, 935, 7, 205, 2, 2, 935, 936, 7, 168, 2, 2, 936, 988, 5, 164, 83, 2, 937, 938, 7, 205, 2, 2, 938, 939, 7, 220, 2, 2, 939, 942, 7, 250, 2, 2, 940, 943, 7, 126, 2, 2, 941, 943, 5, 96, 49, 2, 942, 940, 3, 2, 2, 2, 942, 941, 3, 2, 2, 2, 943, 988, 3, 2, 2, 2, 944, 945, 7, 234, 2, 2, 945, 946, 5, 168, 85, 2, 946, 947, 7, 205, 2, 2, 947, 952, 5, 152, 77, 2, 948, 949, 7, 6, 2, 2, 949, 951, 5, 152, 77, 2, 950, 948, 3, 2, 2, 2, 951, 954, 3, 2, 2, 2, 952, 950, 3, 2, 2, 2, 952, 953, 3, 2, 2, 2, 953, 957, 3, 2, 2, 2, 954, 952, 3, 2, 2, 2, 955, 956, 7, 243, 2, 2, 956, 958, 5, 98, 50, 2, 957, 955, 3, 2, 2, 2, 957, 958, 3, 2, 2, 2, 958, 988, 3, 2, 2, 2, 959, 960, 7, 137, 2, 2, 960, 961, 7, 113, 2, 2, 961, 966, 5, 168, 85, 2, 962, 964, 7, 28, 2, 2, 963, 962, 3, 2, 2, 2, 963, 964, 3, 2, 2, 2, 964, 965, 3, 2, 2, 2, 965, 967, 5, 176, 89, 2, 966, 963, 3, 2, 2, 2, 966, 967, 3, 2, 2, 2, 967, 968, 3, 2, 2, 2, 968, 969, 7, 237, 2, 2, 969, 970, 5, 66, 34, 2, 970, 971, 7, 155, 2, 2, 971, 973, 5, 96, 49, 2, 972, 974, 5, 136, 69, 2, 973, 972, 3, 2, 2, 2, 974, 975, 3, 2, 2, 2, 975, 973, 3, 2, 2, 2, 975, 976, 3, 2, 2, 2, 976, 988, 3, 2, 2, 2, 977, 978, 7, 207, 2, 2, 978, 979, 7, 42, 2, 2, 979, 980, 7, 155, 2, 2, 980, 981, 7, 214, 2, 2, 981, 988, 5, 168, 85, 2, 982, 983, 7, 207, 2, 2, 983, 984, 7, 42, 2, 2, 984, 985, 7, 155, 2, 2, 985, 986, 7, 40, 2, 2, 986, 988, 5, 168, 85, 2, 987, 217, 3, 2, 2, 2, 987, 218, 3, 2, 2, 2, 987, 220, 3, 2, 2, 2, 987, 225, 3, 2, 2, 2, 987, 241, 3, 2, 2, 2, 987, 251, 3, 2, 2, 2, 987, 258, 3, 2, 2, 2, 987, 265, 3, 2, 2, 2, 987, 299, 3, 2, 2, 2, 987, 325, 3, 2, 2, 2, 987, 332, 3, 2, 2, 2, 987, 340, 3, 2, 2, 2, 987, 347, 3, 2, 2, 2, 987, 350, 3, 2, 2, 2, 987, 361, 3, 2, 2, 2, 987, 370, 3, 2, 2, 2, 987, 379, 3, 2, 2, 2, 987, 396, 3, 2, 2, 2, 987, 411, 3, 2, 2, 2, 987, 427, 3, 2, 2, 2, 987, 434, 3, 2, 2, 2, 987, 441, 3, 2, 2, 2, 987, 464, 3, 2, 2, 2, 987, 470, 3, 2, 2, 2, 987, 494, 3, 2, 2, 2, 987, 512, 3, 2, 2, 2, 987, 516, 3, 2, 2, 2, 987, 524, 3, 2, 2, 2, 987, 536, 3, 2, 2, 2, 987, 544, 3, 2, 2, 2, 987, 551, 3, 2, 2, 2, 987, 558, 3, 2, 2, 2, 987, 565, 3, 2, 2, 2, 987, 580, 3, 2, 2, 2, 987, 592, 3, 2, 2, 2, 987, 595, 3, 2, 2, 2, 987, 620, 3, 2, 2, 2, 987, 645, 3, 2, 2, 2, 987, 656, 3, 2, 2, 2, 987, 681, 3, 2, 2, 2, 987, 702, 3, 2, 2, 2, 987, 728, 3, 2, 2, 2, 987, 737, 3, 2, 2, 2, 987, 758, 3, 2, 2, 2, 987, 762, 3, 2, 2, 2, 987, 766, 3, 2, 2, 2, 987, 770, 3, 2, 2, 2, 987, 775, 3, 2, 2, 2, 987, 789, 3, 2, 2, 2, 987, 803, 3, 2, 2, 2, 987, 813, 3, 2, 2, 2, 987, 827, 3, 2, 2, 2, 987, 831, 3, 2, 2, 2, 987, 838, 3, 2, 2, 2, 987, 847, 3, 2, 2, 2, 987, 854, 3, 2, 2, 2, 987, 856, 3, 2, 2, 2, 987, 858, 3, 2, 2, 2, 987, 868, 3, 2, 2, 2, 987, 878, 3, 2, 2, 2, 987, 884, 3, 2, 2, 2, 987, 887, 3, 2, 2, 2, 987, 899, 3, 2, 2, 2, 987, 903, 3, 2, 2, 2, 987, 907, 3, 2, 2, 2, 987, 912, 3, 2, 2, 2, 987, 915, 3, 2, 2, 2, 987, 928, 3, 2, 2, 2, 987, 931, 3, 2, 2, 2, 987, 934, 3, 2, 2, 2, 987, 937, 3, 2, 2, 2, 987, 944, 3, 2, 2, 2, 987, 959, 3, 2, 2, 2, 987, 977, 3, 2, 2, 2, 987, 982, 3, 2, 2, 2, 988, 17, 3, 2, 2, 2, 989, 991, 5, 20, 11, 2, 990, 989, 3, 2, 2, 2, 990, 991, 3, 2, 2, 2, 991, 992, 3, 2, 2, 2, 992, 993, 5, 36, 19, 2, 993, 19, 3, 2, 2, 2, 994, 996, 7, 245, 2, 2, 995, 997, 7, 180, 2, 2, 996, 995, 3, 2, 2, 2, 996, 997, 3, 2, 2, 2, 997, 998, 3, 2, 2, 2, 998, 1003, 5, 60, 31, 2, 999, 1000, 7, 6, 2, 2, 1000, 1002, 5, 60, 31, 2, 1001, 999, 3, 2, 2, 2, 1002, 1005, 3, 2, 2, 2, 1003, 1001, 3, 2, 2, 2, 1003, 1004, 3, 2, 2, 2, 1004, 21, 3, 2, 2, 2, 1005, 1003, 3, 2, 2, 2, 1006, 1009, 5, 24, 13, 2, 1007, 1009, 5, 26, 14, 2, 1008, 1006, 3, 2, 2, 2, 1008, 1007, 3, 2, 2, 2, 1009, 23, 3, 2, 2, 2, 1010, 1011, 5, 176, 89, 2, 1011, 1014, 5, 126, 64, 2, 1012, 1013, 7, 149, 2, 2, 1013, 1015, 7, 150, 2, 2, 1014, 1012, 3, 2, 2, 2, 1014, 1015, 3, 2, 2, 2, 1015, 1018, 3, 2, 2, 2, 1016, 1017, 7, 42, 2, 2, 1017, 1019, 5, 110, 56, 2, 1018, 1016, 3, 2, 2, 2, 1018, 1019, 3, 2, 2, 2, 1019, 1022, 3, 2, 2, 2, 1020, 1021, 7, 245, 2, 2, 1021, 1023, 5, 28, 15, 2, 1022, 1020, 3, 2, 2, 2, 1022, 1023, 3, 2, 2, 2, 1023, 25, 3, 2, 2, 2, 1024, 1025, 7, 124, 2, 2, 1025, 1028, 5, 168, 85, 2, 1026, 1027, 9, 6, 2, 2, 1027, 1029, 7, 177, 2, 2, 1028, 1026, 3, 2, 2, 2, 1028, 1029, 3, 2, 2, 2, 1029, 27, 3, 2, 2, 2, 1030, 1031, 7, 4, 2, 2, 1031, 1032, 5, 30, 16, 2, 1032, 1033, 7, 5, 2, 2, 1033, 29, 3, 2, 2, 2, 1034, 1039, 5, 32, 17, 2, 1035, 1036, 7, 6, 2, 2, 1036, 1038, 5, 32, 17, 2, 1037, 1035, 3, 2, 2, 2, 1038, 1041, 3, 2, 2, 2, 1039, 1037, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 31, 3, 2, 2, 2, 1041, 1039, 3, 2, 2, 2, 1042, 1043, 5, 176, 89, 2, 1043, 1044, 7, 251, 2, 2, 1044, 1045, 5, 34, 18, 2, 1045, 33, 3, 2, 2, 2, 1046, 1049, 7, 61, 2, 2, 1047, 1049, 5, 96, 49, 2, 1048, 1046, 3, 2, 2, 2, 1048, 1047, 3, 2, 2, 2, 1049, 35, 3, 2, 2, 2, 1050, 1061, 5, 42, 22, 2, 1051, 1052, 7, 160, 2, 2, 1052, 1053, 7, 34, 2, 2, 1053, 1058, 5, 46, 24, 2, 1054, 1055, 7, 6, 2, 2, 1055, 1057, 5, 46, 24, 2, 1056, 1054, 3, 2, 2, 2, 1057, 1060, 3, 2, 2, 2, 1058, 1056, 3, 2, 2, 2, 1058, 1059, 3, 2, 2, 2, 1059, 1062, 3, 2, 2, 2, 1060, 1058, 3, 2, 2, 2, 1061, 1051, 3, 2, 2, 2, 1061, 1062, 3, 2, 2, 2, 1062, 1068, 3, 2, 2, 2, 1063, 1064, 7, 153, 2, 2, 1064, 1066, 5, 40, 21, 2, 1065, 1067, 9, 7, 2, 2, 1066, 1065, 3, 2, 2, 2, 1066, 1067, 3, 2, 2, 2, 1067, 1069, 3, 2, 2, 2, 1068, 1063, 3, 2, 2, 2, 1068, 1069, 3, 2, 2, 2, 1069, 1083, 3, 2, 2, 2, 1070, 1071, 7, 125, 2, 2, 1071, 1084, 5, 38, 20, 2, 1072, 1073, 7, 83, 2, 2, 1073, 1075, 9, 8, 2, 2, 1074, 1076, 5, 40, 21, 2, 1075, 1074, 3, 2, 2, 2, 1075, 1076, 3, 2, 2, 2, 1076, 1077, 3, 2, 2, 2, 1077, 1081, 9, 7, 2, 2, 1078, 1082, 7, 157, 2, 2, 1079, 1080, 7, 245, 2, 2, 1080, 1082, 7, 219, 2, 2, 1081, 1078, 3, 2, 2, 2, 1081, 1079, 3, 2, 2, 2, 1082, 1084, 3, 2, 2, 2, 1083, 1070, 3, 2, 2, 2, 1083, 1072, 3, 2, 2, 2, 1083, 1084, 3, 2, 2, 2, 1084, 37, 3, 2, 2, 2, 1085, 1088, 7, 22, 2, 2, 1086, 1088, 5, 40, 21, 2, 1087, 1085, 3, 2, 2, 2, 1087, 1086, 3, 2, 2, 2, 1088, 39, 3, 2, 2, 2, 1089, 1090, 9, 9, 2, 2, 1090, 41, 3, 2, 2, 2, 1091, 1092, 8, 22, 1, 2, 1092, 1093, 5, 44, 23, 2, 1093, 1108, 3, 2, 2, 2, 1094, 1095, 12, 4, 2, 2, 1095, 1097, 7, 111, 2, 2, 1096, 1098, 5, 62, 32, 2, 1097, 1096, 3, 2, 2, 2, 1097, 1098, 3, 2, 2, 2, 1098, 1099, 3, 2, 2, 2, 1099, 1107, 5, 42, 22, 5, 1100, 1101, 12, 3, 2, 2, 1101, 1103, 9, 10, 2, 2, 1102, 1104, 5, 62, 32, 2, 1103, 1102, 3, 2, 2, 2, 1103, 1104, 3, 2, 2, 2, 1104, 1105, 3, 2, 2, 2, 1105, 1107, 5, 42, 22, 4, 1106, 1094, 3, 2, 2, 2, 1106, 1100, 3, 2, 2, 2, 1107, 1110, 3, 2, 2, 2, 1108, 1106, 3, 2, 2, 2, 1108, 1109, 3, 2, 2, 2, 1109, 43, 3, 2, 2, 2, 1110, 1108, 3, 2, 2, 2, 1111, 1128, 5, 48, 25, 2, 1112, 1113, 7, 214, 2, 2, 1113, 1128, 5, 168, 85, 2, 1114, 1115, 7, 239, 2, 2, 1115, 1120, 5, 96, 49, 2, 1116, 1117, 7, 6, 2, 2, 1117, 1119, 5, 96, 49, 2, 1118, 1116, 3, 2, 2, 2, 1119, 1122, 3, 2, 2, 2, 1120, 1118, 3, 2, 2, 2, 1120, 1121, 3, 2, 2, 2, 1121, 1128, 3, 2, 2, 2, 1122, 1120, 3, 2, 2, 2, 1123, 1124, 7, 4, 2, 2, 1124, 1125, 5, 36, 19, 2, 1125, 1126, 7, 5, 2, 2, 1126, 1128, 3, 2, 2, 2, 1127, 1111, 3, 2, 2, 2, 1127, 1112, 3, 2, 2, 2, 1127, 1114, 3, 2, 2, 2, 1127, 1123, 3, 2, 2, 2, 1128, 45, 3, 2, 2, 2, 1129, 1131, 5, 96, 49, 2, 1130, 1132, 9, 11, 2, 2, 1131, 1130, 3, 2, 2, 2, 1131, 1132, 3, 2, 2, 2, 1132, 1135, 3, 2, 2, 2, 1133, 1134, 7, 152, 2, 2, 1134, 1136, 9, 12, 2, 2, 1135, 1133, 3, 2, 2, 2, 1135, 1136, 3, 2, 2, 2, 1136, 47, 3, 2, 2, 2, 1137, 1139, 7, 202, 2, 2, 1138, 1140, 5, 62, 32, 2, 1139, 1138, 3, 2, 2, 2, 1139, 1140, 3, 2, 2, 2, 1140, 1141, 3, 2, 2, 2, 1141, 1146, 5, 64, 33, 2, 1142, 1143, 7, 6, 2, 2, 1143, 1145, 5, 64, 33, 2, 1144, 1142, 3, 2, 2, 2, 1145, 1148, 3, 2, 2, 2, 1146, 1144, 3, 2, 2, 2, 1146, 1147, 3, 2, 2, 2, 1147, 1158, 3, 2, 2, 2, 1148, 1146, 3, 2, 2, 2, 1149, 1150, 7, 90, 2, 2, 1150, 1155, 5, 66, 34, 2, 1151, 1152, 7, 6, 2, 2, 1152, 1154, 5, 66, 34, 2, 1153, 1151, 3, 2, 2, 2, 1154, 1157, 3, 2, 2, 2, 1155, 1153, 3, 2, 2, 2, 1155, 1156, 3, 2, 2, 2, 1156, 1159, 3, 2, 2, 2, 1157, 1155, 3, 2, 2, 2, 1158, 1149, 3, 2, 2, 2, 1158, 1159, 3, 2, 2, 2, 1159, 1162, 3, 2, 2, 2, 1160, 1161, 7, 243, 2, 2, 1161, 1163, 5, 98, 50, 2, 1162, 1160, 3, 2, 2, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1167, 3, 2, 2, 2, 1164, 1165, 7, 98, 2, 2, 1165, 1166, 7, 34, 2, 2, 1166, 1168, 5, 50, 26, 2, 1167, 1164, 3, 2, 2, 2, 1167, 1168, 3, 2, 2, 2, 1168, 1171, 3, 2, 2, 2, 1169, 1170, 7, 101, 2, 2, 1170, 1172, 5, 98, 50, 2, 1171, 1169, 3, 2, 2, 2, 1171, 1172, 3, 2, 2, 2, 1172, 1182, 3, 2, 2, 2, 1173, 1174, 7, 244, 2, 2, 1174, 1179, 5, 56, 29, 2, 1175, 1176, 7, 6, 2, 2, 1176, 1178, 5, 56, 29, 2, 1177, 1175, 3, 2, 2, 2, 1178, 1181, 3, 2, 2, 2, 1179, 1177, 3, 2, 2, 2, 1179, 1180, 3, 2, 2, 2, 1180, 1183, 3, 2, 2, 2, 1181, 1179, 3, 2, 2, 2, 1182, 1173, 3, 2, 2, 2, 1182, 1183, 3, 2, 2, 2, 1183, 49, 3, 2, 2, 2, 1184, 1186, 5, 62, 32, 2, 1185, 1184, 3, 2, 2, 2, 1185, 1186, 3, 2, 2, 2, 1186, 1187, 3, 2, 2, 2, 1187, 1192, 5, 52, 27, 2, 1188, 1189, 7, 6, 2, 2, 1189, 1191, 5, 52, 27, 2, 1190, 1188, 3, 2, 2, 2, 1191, 1194, 3, 2, 2, 2, 1192, 1190, 3, 2, 2, 2, 1192, 1193, 3, 2, 2, 2, 1193, 51, 3, 2, 2, 2, 1194, 1192, 3, 2, 2, 2, 1195, 1236, 5, 54, 28, 2, 1196, 1197, 7, 193, 2, 2, 1197, 1206, 7, 4, 2, 2, 1198, 1203, 5, 96, 49, 2, 1199, 1200, 7, 6, 2, 2, 1200, 1202, 5, 96, 49, 2, 1201, 1199, 3, 2, 2, 2, 1202, 1205, 3, 2, 2, 2, 1203, 1201, 3, 2, 2, 2, 1203, 1204, 3, 2, 2, 2, 1204, 1207, 3, 2, 2, 2, 1205, 1203, 3, 2, 2, 2, 1206, 1198, 3, 2, 2, 2, 1206, 1207, 3, 2, 2, 2, 1207, 1208, 3, 2, 2, 2, 1208, 1236, 7, 5, 2, 2, 1209, 1210, 7, 48, 2, 2, 1210, 1219, 7, 4, 2, 2, 1211, 1216, 5, 96, 49, 2, 1212, 1213, 7, 6, 2, 2, 1213, 1215, 5, 96, 49, 2, 1214, 1212, 3, 2, 2, 2, 1215, 1218, 3, 2, 2, 2, 1216, 1214, 3, 2, 2, 2, 1216, 1217, 3, 2, 2, 2, 1217, 1220, 3, 2, 2, 2, 1218, 1216, 3, 2, 2, 2, 1219, 1211, 3, 2, 2, 2, 1219, 1220, 3, 2, 2, 2, 1220, 1221, 3, 2, 2, 2, 1221, 1236, 7, 5, 2, 2, 1222, 1223, 7, 99, 2, 2, 1223, 1224, 7, 206, 2, 2, 1224, 1225, 7, 4, 2, 2, 1225, 1230, 5, 54, 28, 2, 1226, 1227, 7, 6, 2, 2, 1227, 1229, 5, 54, 28, 2, 1228, 1226, 3, 2, 2, 2, 1229, 1232, 3, 2, 2, 2, 1230, 1228, 3, 2, 2, 2, 1230, 1231, 3, 2, 2, 2, 1231, 1233, 3, 2, 2, 2, 1232, 1230, 3, 2, 2, 2, 1233, 1234, 7, 5, 2, 2, 1234, 1236, 3, 2, 2, 2, 1235, 1195, 3, 2, 2, 2, 1235, 1196, 3, 2, 2, 2, 1235, 1209, 3, 2, 2, 2, 1235, 1222, 3, 2, 2, 2, 1236, 53, 3, 2, 2, 2, 1237, 1246, 7, 4, 2, 2, 1238, 1243, 5, 96, 49, 2, 1239, 1240, 7, 6, 2, 2, 1240, 1242, 5, 96, 49, 2, 1241, 1239, 3, 2, 2, 2, 1242, 1245, 3, 2, 2, 2, 1243, 1241, 3, 2, 2, 2, 1243, 1244, 3, 2, 2, 2, 1244, 1247, 3, 2, 2, 2, 1245, 1243, 3, 2, 2, 2, 1246, 1238, 3, 2, 2, 2, 1246, 1247, 3, 2, 2, 2, 1247, 1248, 3, 2, 2, 2, 1248, 1251, 7, 5, 2, 2, 1249, 1251, 5, 96, 49, 2, 1250, 1237, 3, 2, 2, 2, 1250, 1249, 3, 2, 2, 2, 1251, 55, 3, 2, 2, 2, 1252, 1253, 5, 176, 89, 2, 1253, 1254, 7, 28, 2, 2, 1254, 1255, 7, 4, 2, 2, 1255, 1256, 5, 58, 30, 2, 1256, 1257, 7, 5, 2, 2, 1257, 57, 3, 2, 2, 2, 1258, 1260, 5, 176, 89, 2, 1259, 1258, 3, 2, 2, 2, 1259, 1260, 3, 2, 2, 2, 1260, 1271, 3, 2, 2, 2, 1261, 1262, 7, 165, 2, 2, 1262, 1263, 7, 34, 2, 2, 1263, 1268, 5, 96, 49, 2, 1264, 1265, 7, 6, 2, 2, 1265, 1267, 5, 96, 49, 2, 1266, 1264, 3, 2, 2, 2, 1267, 1270, 3, 2, 2, 2, 1268, 1266, 3, 2, 2, 2, 1268, 1269, 3, 2, 2, 2, 1269, 1272, 3, 2, 2, 2, 1270, 1268, 3, 2, 2, 2, 1271, 1261, 3, 2, 2, 2, 1271, 1272, 3, 2, 2, 2, 1272, 1283, 3, 2, 2, 2, 1273, 1274, 7, 160, 2, 2, 1274, 1275, 7, 34, 2, 2, 1275, 1280, 5, 46, 24, 2, 1276, 1277, 7, 6, 2, 2, 1277, 1279, 5, 46, 24, 2, 1278, 1276, 3, 2, 2, 2, 1279, 1282, 3, 2, 2, 2, 1280, 1278, 3, 2, 2, 2, 1280, 1281, 3, 2, 2, 2, 1281, 1284, 3, 2, 2, 2, 1282, 1280, 3, 2, 2, 2, 1283, 1273, 3, 2, 2, 2, 1283, 1284, 3, 2, 2, 2, 1284, 1286, 3, 2, 2, 2, 1285, 1287, 5, 140, 71, 2, 1286, 1285, 3, 2, 2, 2, 1286, 1287, 3, 2, 2, 2, 1287, 59, 3, 2, 2, 2, 1288, 1290, 5, 176, 89, 2, 1289, 1291, 5, 92, 47, 2, 1290, 1289, 3, 2, 2, 2, 1290, 1291, 3, 2, 2, 2, 1291, 1292, 3, 2, 2, 2, 1292, 1293, 7, 28, 2, 2, 1293, 1294, 7, 4, 2, 2, 1294, 1295, 5, 18, 10, 2, 1295, 1296, 7, 5, 2, 2, 1296, 61, 3, 2, 2, 2, 1297, 1298, 9, 13, 2, 2, 1298, 63, 3, 2, 2, 2, 1299, 1304, 5, 96, 49, 2, 1300, 1302, 7, 28, 2, 2, 1301, 1300, 3, 2, 2, 2, 1301, 1302, 3, 2, 2, 2, 1302, 1303, 3, 2, 2, 2, 1303, 1305, 5, 176, 89, 2, 1304, 1301, 3, 2, 2, 2, 1304, 1305, 3, 2, 2, 2, 1305, 1315, 3, 2, 2, 2, 1306, 1307, 5, 104, 53, 2, 1307, 1308, 7, 3, 2, 2, 1308, 1311, 7, 259, 2, 2, 1309, 1310, 7, 28, 2, 2, 1310, 1312, 5, 92, 47, 2, 1311, 1309, 3, 2, 2, 2, 1311, 1312, 3, 2, 2, 2, 1312, 1315, 3, 2, 2, 2, 1313, 1315, 7, 259, 2, 2, 1314, 1299, 3, 2, 2, 2, 1314, 1306, 3, 2, 2, 2, 1314, 1313, 3, 2, 2, 2, 1315, 65, 3, 2, 2, 2, 1316, 1317, 8, 34, 1, 2, 1317, 1318, 5, 72, 37, 2, 1318, 1337, 3, 2, 2, 2, 1319, 1333, 12, 4, 2, 2, 1320, 1321, 7, 47, 2, 2, 1321, 1322, 7, 118, 2, 2, 1322, 1334, 5, 72, 37, 2, 1323, 1324, 5, 68, 35, 2, 1324, 1325, 7, 118, 2, 2, 1325, 1326, 5, 66, 34, 2, 1326, 1327, 5, 70, 36, 2, 1327, 1334, 3, 2, 2, 2, 1328, 1329, 7, 140, 2, 2, 1329, 1330, 5, 68, 35, 2, 1330, 1331, 7, 118, 2, 2, 1331, 1332, 5, 72, 37, 2, 1332, 1334, 3, 2, 2, 2, 1333, 1320, 3, 2, 2, 2, 1333, 1323, 3, 2, 2, 2, 1333, 1328, 3, 2, 2, 2, 1334, 1336, 3, 2, 2, 2, 1335, 1319, 3, 2, 2, 2, 1336, 1339, 3, 2, 2, 2, 1337, 1335, 3, 2, 2, 2, 1337, 1338, 3, 2, 2, 2, 1338, 67, 3, 2, 2, 2, 1339, 1337, 3, 2, 2, 2, 1340, 1342, 7, 108, 2, 2, 1341, 1340, 3, 2, 2, 2, 1341, 1342, 3, 2, 2, 2, 1342, 1356, 3, 2, 2, 2, 1343, 1345, 7, 122, 2, 2, 1344, 1346, 7, 162, 2, 2, 1345, 1344, 3, 2, 2, 2, 1345, 1346, 3, 2, 2, 2, 1346, 1356, 3, 2, 2, 2, 1347, 1349, 7, 189, 2, 2, 1348, 1350, 7, 162, 2, 2, 1349, 1348, 3, 2, 2, 2, 1349, 1350, 3, 2, 2, 2, 1350, 1356, 3, 2, 2, 2, 1351, 1353, 7, 91, 2, 2, 1352, 1354, 7, 162, 2, 2, 1353, 1352, 3, 2, 2, 2, 1353, 1354, 3, 2, 2, 2, 1354, 1356, 3, 2, 2, 2, 1355, 1341, 3, 2, 2, 2, 1355, 1343, 3, 2, 2, 2, 1355, 1347, 3, 2, 2, 2, 1355, 1351, 3, 2, 2, 2, 1356, 69, 3, 2, 2, 2, 1357, 1358, 7, 155, 2, 2, 1358, 1372, 5, 98, 50, 2, 1359, 1360, 7, 237, 2, 2, 1360, 1361, 7, 4, 2, 2, 1361, 1366, 5, 176, 89, 2, 1362, 1363, 7, 6, 2, 2, 1363, 1365, 5, 176, 89, 2, 1364, 1362, 3, 2, 2, 2, 1365, 1368, 3, 2, 2, 2, 1366, 1364, 3, 2, 2, 2, 1366, 1367, 3, 2, 2, 2, 1367, 1369, 3, 2, 2, 2, 1368, 1366, 3, 2, 2, 2, 1369, 1370, 7, 5, 2, 2, 1370, 1372, 3, 2, 2, 2, 1371, 1357, 3, 2, 2, 2, 1371, 1359, 3, 2, 2, 2, 1372, 71, 3, 2, 2, 2, 1373, 1380, 5, 76, 39, 2, 1374, 1375, 7, 216, 2, 2, 1375, 1376, 5, 74, 38, 2, 1376, 1377, 7, 4, 2, 2, 1377, 1378, 5, 96, 49, 2, 1378, 1379, 7, 5, 2, 2, 1379, 1381, 3, 2, 2, 2, 1380, 1374, 3, 2, 2, 2, 1380, 1381, 3, 2, 2, 2, 1381, 73, 3, 2, 2, 2, 1382, 1383, 9, 14, 2, 2, 1383, 75, 3, 2, 2, 2, 1384, 1467, 5, 90, 46, 2, 1385, 1386, 7, 134, 2, 2, 1386, 1397, 7, 4, 2, 2, 1387, 1388, 7, 165, 2, 2, 1388, 1389, 7, 34, 2, 2, 1389, 1394, 5, 96, 49, 2, 1390, 1391, 7, 6, 2, 2, 1391, 1393, 5, 96, 49, 2, 1392, 1390, 3, 2, 2, 2, 1393, 1396, 3, 2, 2, 2, 1394, 1392, 3, 2, 2, 2, 1394, 1395, 3, 2, 2, 2, 1395, 1398, 3, 2, 2, 2, 1396, 1394, 3, 2, 2, 2, 1397, 1387, 3, 2, 2, 2, 1397, 1398, 3, 2, 2, 2, 1398, 1409, 3, 2, 2, 2, 1399, 1400, 7, 160, 2, 2, 1400, 1401, 7, 34, 2, 2, 1401, 1406, 5, 46, 24, 2, 1402, 1403, 7, 6, 2, 2, 1403, 1405, 5, 46, 24, 2, 1404, 1402, 3, 2, 2, 2, 1405, 1408, 3, 2, 2, 2, 1406, 1404, 3, 2, 2, 2, 1406, 1407, 3, 2, 2, 2, 1407, 1410, 3, 2, 2, 2, 1408, 1406, 3, 2, 2, 2, 1409, 1399, 3, 2, 2, 2, 1409, 1410, 3, 2, 2, 2, 1410, 1420, 3, 2, 2, 2, 1411, 1412, 7, 136, 2, 2, 1412, 1417, 5, 78, 40, 2, 1413, 1414, 7, 6, 2, 2, 1414, 1416, 5, 78, 40, 2, 1415, 1413, 3, 2, 2, 2, 1416, 1419, 3, 2, 2, 2, 1417, 1415, 3, 2, 2, 2, 1417, 1418, 3, 2, 2, 2, 1418, 1421, 3, 2, 2, 2, 1419, 1417, 3, 2, 2, 2, 1420, 1411, 3, 2, 2, 2, 1420, 1421, 3, 2, 2, 2, 1421, 1423, 3, 2, 2, 2, 1422, 1424, 5, 80, 41, 2, 1423, 1422, 3, 2, 2, 2, 1423, 1424, 3, 2, 2, 2, 1424, 1428, 3, 2, 2, 2, 1425, 1426, 7, 21, 2, 2, 1426, 1427, 7, 131, 2, 2, 1427, 1429, 5, 84, 43, 2, 1428, 1425, 3, 2, 2, 2, 1428, 1429, 3, 2, 2, 2, 1429, 1431, 3, 2, 2, 2, 1430, 1432, 9, 15, 2, 2, 1431, 1430, 3, 2, 2, 2, 1431, 1432, 3, 2, 2, 2, 1432, 1433, 3, 2, 2, 2, 1433, 1434, 7, 169, 2, 2, 1434, 1435, 7, 4, 2, 2, 1435, 1436, 5, 146, 74, 2, 1436, 1446, 7, 5, 2, 2, 1437, 1438, 7, 211, 2, 2, 1438, 1443, 5, 86, 44, 2, 1439, 1440, 7, 6, 2, 2, 1440, 1442, 5, 86, 44, 2, 1441, 1439, 3, 2, 2, 2, 1442, 1445, 3, 2, 2, 2, 1443, 1441, 3, 2, 2, 2, 1443, 1444, 3, 2, 2, 2, 1444, 1447, 3, 2, 2, 2, 1445, 1443, 3, 2, 2, 2, 1446, 1437, 3, 2, 2, 2, 1446, 1447, 3, 2, 2, 2, 1447, 1448, 3, 2, 2, 2, 1448, 1449, 7, 67, 2, 2, 1449, 1454, 5, 88, 45, 2, 1450, 1451, 7, 6, 2, 2, 1451, 1453, 5, 88, 45, 2, 1452, 1450, 3, 2, 2, 2, 1453, 1456, 3, 2, 2, 2, 1454, 1452, 3, 2, 2, 2, 1454, 1455, 3, 2, 2, 2, 1455, 1457, 3, 2, 2, 2, 1456, 1454, 3, 2, 2, 2, 1457, 1465, 7, 5, 2, 2, 1458, 1460, 7, 28, 2, 2, 1459, 1458, 3, 2, 2, 2, 1459, 1460, 3, 2, 2, 2, 1460, 1461, 3, 2, 2, 2, 1461, 1463, 5, 176, 89, 2, 1462, 1464, 5, 92, 47, 2, 1463, 1462, 3, 2, 2, 2, 1463, 1464, 3, 2, 2, 2, 1464, 1466, 3, 2, 2, 2, 1465, 1459, 3, 2, 2, 2, 1465, 1466, 3, 2, 2, 2, 1466, 1468, 3, 2, 2, 2, 1467, 1385, 3, 2, 2, 2, 1467, 1468, 3, 2, 2, 2, 1468, 77, 3, 2, 2, 2, 1469, 1470, 5, 96, 49, 2, 1470, 1471, 7, 28, 2, 2, 1471, 1472, 5, 176, 89, 2, 1472, 79, 3, 2, 2, 2, 1473, 1474, 7, 156, 2, 2, 1474, 1475, 7, 194, 2, 2, 1475, 1476, 7, 170, 2, 2, 1476, 1485, 7, 131, 2, 2, 1477, 1478, 7, 22, 2, 2, 1478, 1479, 7, 195, 2, 2, 1479, 1480, 7, 170, 2, 2, 1480, 1482, 7, 131, 2, 2, 1481, 1483, 5, 82, 42, 2, 1482, 1481, 3, 2, 2, 2, 1482, 1483, 3, 2, 2, 2, 1483, 1485, 3, 2, 2, 2, 1484, 1473, 3, 2, 2, 2, 1484, 1477, 3, 2, 2, 2, 1485, 81, 3, 2, 2, 2, 1486, 1487, 7, 207, 2, 2, 1487, 1488, 7, 73, 2, 2, 1488, 1496, 7, 133, 2, 2, 1489, 1490, 7, 154, 2, 2, 1490, 1491, 7, 73, 2, 2, 1491, 1496, 7, 133, 2, 2, 1492, 1493, 7, 245, 2, 2, 1493, 1494, 7, 232, 2, 2, 1494, 1496, 7, 195, 2, 2, 1495, 1486, 3, 2, 2, 2, 1495, 1489, 3, 2, 2, 2, 1495, 1492, 3, 2, 2, 2, 1496, 83, 3, 2, 2, 2, 1497, 1498, 7, 7, 2, 2, 1498, 1499, 7, 222, 2, 2, 1499, 1500, 7, 141, 2, 2, 1500, 1517, 7, 194, 2, 2, 1501, 1502, 7, 7, 2, 2, 1502, 1503, 7, 167, 2, 2, 1503, 1504, 7, 120, 2, 2, 1504, 1517, 7, 194, 2, 2, 1505, 1506, 7, 7, 2, 2, 1506, 1507, 7, 222, 2, 2, 1507, 1508, 7, 86, 2, 2, 1508, 1517, 5, 176, 89, 2, 1509, 1510, 7, 7, 2, 2, 1510, 1511, 7, 222, 2, 2, 1511, 1512, 7, 120, 2, 2, 1512, 1517, 5, 176, 89, 2, 1513, 1514, 7, 7, 2, 2, 1514, 1515, 7, 222, 2, 2, 1515, 1517, 5, 176, 89, 2, 1516, 1497, 3, 2, 2, 2, 1516, 1501, 3, 2, 2, 2, 1516, 1505, 3, 2, 2, 2, 1516, 1509, 3, 2, 2, 2, 1516, 1513, 3, 2, 2, 2, 1517, 85, 3, 2, 2, 2, 1518, 1519, 5, 176, 89, 2, 1519, 1520, 7, 251, 2, 2, 1520, 1521, 7, 4, 2, 2, 1521, 1526, 5, 176, 89, 2, 1522, 1523, 7, 6, 2, 2, 1523, 1525, 5, 176, 89, 2, 1524, 1522, 3, 2, 2, 2, 1525, 1528, 3, 2, 2, 2, 1526, 1524, 3, 2, 2, 2, 1526, 1527, 3, 2, 2, 2, 1527, 1529, 3, 2, 2, 2, 1528, 1526, 3, 2, 2, 2, 1529, 1530, 7, 5, 2, 2, 1530, 87, 3, 2, 2, 2, 1531, 1532, 5, 176, 89, 2, 1532, 1533, 7, 28, 2, 2, 1533, 1534, 5, 96, 49, 2, 1534, 89, 3, 2, 2, 2, 1535, 1543, 5, 94, 48, 2, 1536, 1538, 7, 28, 2, 2, 1537, 1536, 3, 2, 2, 2, 1537, 1538, 3, 2, 2, 2, 1538, 1539, 3, 2, 2, 2, 1539, 1541, 5, 176, 89, 2, 1540, 1542, 5, 92, 47, 2, 1541, 1540, 3, 2, 2, 2, 1541, 1542, 3, 2, 2, 2, 1542, 1544, 3, 2, 2, 2, 1543, 1537, 3, 2, 2, 2, 1543, 1544, 3, 2, 2, 2, 1544, 91, 3, 2, 2, 2, 1545, 1546, 7, 4, 2, 2, 1546, 1551, 5, 176, 89, 2, 1547, 1548, 7, 6, 2, 2, 1548, 1550, 5, 176, 89, 2, 1549, 1547, 3, 2, 2, 2, 1550, 1553, 3, 2, 2, 2, 1551, 1549, 3, 2, 2, 2, 1551, 1552, 3, 2, 2, 2, 1552, 1554, 3, 2, 2, 2, 1553, 1551, 3, 2, 2, 2, 1554, 1555, 7, 5, 2, 2, 1555, 93, 3, 2, 2, 2, 1556, 1586, 5, 168, 85, 2, 1557, 1558, 7, 4, 2, 2, 1558, 1559, 5, 18, 10, 2, 1559, 1560, 7, 5, 2, 2, 1560, 1586, 3, 2, 2, 2, 1561, 1562, 7, 233, 2, 2, 1562, 1563, 7, 4, 2, 2, 1563, 1568, 5, 96, 49, 2, 1564, 1565, 7, 6, 2, 2, 1565, 1567, 5, 96, 49, 2, 1566, 1564, 3, 2, 2, 2, 1567, 1570, 3, 2, 2, 2, 1568, 1566, 3, 2, 2, 2, 1568, 1569, 3, 2, 2, 2, 1569, 1571, 3, 2, 2, 2, 1570, 1568, 3, 2, 2, 2, 1571, 1574, 7, 5, 2, 2, 1572, 1573, 7, 245, 2, 2, 1573, 1575, 7, 161, 2, 2, 1574, 1572, 3, 2, 2, 2, 1574, 1575, 3, 2, 2, 2, 1575, 1586, 3, 2, 2, 2, 1576, 1577, 7, 121, 2, 2, 1577, 1578, 7, 4, 2, 2, 1578, 1579, 5, 18, 10, 2, 1579, 1580, 7, 5, 2, 2, 1580, 1586, 3, 2, 2, 2, 1581, 1582, 7, 4, 2, 2, 1582, 1583, 5, 66, 34, 2, 1583, 1584, 7, 5, 2, 2, 1584, 1586, 3, 2, 2, 2, 1585, 1556, 3, 2, 2, 2, 1585, 1557, 3, 2, 2, 2, 1585, 1561, 3, 2, 2, 2, 1585, 1576, 3, 2, 2, 2, 1585, 1581, 3, 2, 2, 2, 1586, 95, 3, 2, 2, 2, 1587, 1588, 5, 98, 50, 2, 1588, 97, 3, 2, 2, 2, 1589, 1590, 8, 50, 1, 2, 1590, 1592, 5, 102, 52, 2, 1591, 1593, 5, 100, 51, 2, 1592, 1591, 3, 2, 2, 2, 1592, 1593, 3, 2, 2, 2, 1593, 1597, 3, 2, 2, 2, 1594, 1595, 7, 149, 2, 2, 1595, 1597, 5, 98, 50, 5, 1596, 1589, 3, 2, 2, 2, 1596, 1594, 3, 2, 2, 2, 1597, 1606, 3, 2, 2, 2, 1598, 1599, 12, 4, 2, 2, 1599, 1600, 7, 25, 2, 2, 1600, 1605, 5, 98, 50, 5, 1601, 1602, 12, 3, 2, 2, 1602, 1603, 7, 159, 2, 2, 1603, 1605, 5, 98, 50, 4, 1604, 1598, 3, 2, 2, 2, 1604, 1601, 3, 2, 2, 2, 1605, 1608, 3, 2, 2, 2, 1606, 1604, 3, 2, 2, 2, 1606, 1607, 3, 2, 2, 2, 1607, 99, 3, 2, 2, 2, 1608, 1606, 3, 2, 2, 2, 1609, 1610, 5, 114, 58, 2, 1610, 1611, 5, 102, 52, 2, 1611, 1671, 3, 2, 2, 2, 1612, 1613, 5, 114, 58, 2, 1613, 1614, 5, 116, 59, 2, 1614, 1615, 7, 4, 2, 2, 1615, 1616, 5, 18, 10, 2, 1616, 1617, 7, 5, 2, 2, 1617, 1671, 3, 2, 2, 2, 1618, 1620, 7, 149, 2, 2, 1619, 1618, 3, 2, 2, 2, 1619, 1620, 3, 2, 2, 2, 1620, 1621, 3, 2, 2, 2, 1621, 1622, 7, 33, 2, 2, 1622, 1623, 5, 102, 52, 2, 1623, 1624, 7, 25, 2, 2, 1624, 1625, 5, 102, 52, 2, 1625, 1671, 3, 2, 2, 2, 1626, 1628, 7, 149, 2, 2, 1627, 1626, 3, 2, 2, 2, 1627, 1628, 3, 2, 2, 2, 1628, 1629, 3, 2, 2, 2, 1629, 1630, 7, 105, 2, 2, 1630, 1631, 7, 4, 2, 2, 1631, 1636, 5, 96, 49, 2, 1632, 1633, 7, 6, 2, 2, 1633, 1635, 5, 96, 49, 2, 1634, 1632, 3, 2, 2, 2, 1635, 1638, 3, 2, 2, 2, 1636, 1634, 3, 2, 2, 2, 1636, 1637, 3, 2, 2, 2, 1637, 1639, 3, 2, 2, 2, 1638, 1636, 3, 2, 2, 2, 1639, 1640, 7, 5, 2, 2, 1640, 1671, 3, 2, 2, 2, 1641, 1643, 7, 149, 2, 2, 1642, 1641, 3, 2, 2, 2, 1642, 1643, 3, 2, 2, 2, 1643, 1644, 3, 2, 2, 2, 1644, 1645, 7, 105, 2, 2, 1645, 1646, 7, 4, 2, 2, 1646, 1647, 5, 18, 10, 2, 1647, 1648, 7, 5, 2, 2, 1648, 1671, 3, 2, 2, 2, 1649, 1651, 7, 149, 2, 2, 1650, 1649, 3, 2, 2, 2, 1650, 1651, 3, 2, 2, 2, 1651, 1652, 3, 2, 2, 2, 1652, 1653, 7, 124, 2, 2, 1653, 1656, 5, 102, 52, 2, 1654, 1655, 7, 75, 2, 2, 1655, 1657, 5, 102, 52, 2, 1656, 1654, 3, 2, 2, 2, 1656, 1657, 3, 2, 2, 2, 1657, 1671, 3, 2, 2, 2, 1658, 1660, 7, 116, 2, 2, 1659, 1661, 7, 149, 2, 2, 1660, 1659, 3, 2, 2, 2, 1660, 1661, 3, 2, 2, 2, 1661, 1662, 3, 2, 2, 2, 1662, 1671, 7, 150, 2, 2, 1663, 1665, 7, 116, 2, 2, 1664, 1666, 7, 149, 2, 2, 1665, 1664, 3, 2, 2, 2, 1665, 1666, 3, 2, 2, 2, 1666, 1667, 3, 2, 2, 2, 1667, 1668, 7, 68, 2, 2, 1668, 1669, 7, 90, 2, 2, 1669, 1671, 5, 102, 52, 2, 1670, 1609, 3, 2, 2, 2, 1670, 1612, 3, 2, 2, 2, 1670, 1619, 3, 2, 2, 2, 1670, 1627, 3, 2, 2, 2, 1670, 1642, 3, 2, 2, 2, 1670, 1650, 3, 2, 2, 2, 1670, 1658, 3, 2, 2, 2, 1670, 1663, 3, 2, 2, 2, 1671, 101, 3, 2, 2, 2, 1672, 1673, 8, 52, 1, 2, 1673, 1677, 5, 104, 53, 2, 1674, 1675, 9, 16, 2, 2, 1675, 1677, 5, 102, 52, 6, 1676, 1672, 3, 2, 2, 2, 1676, 1674, 3, 2, 2, 2, 1677, 1692, 3, 2, 2, 2, 1678, 1679, 12, 5, 2, 2, 1679, 1680, 9, 17, 2, 2, 1680, 1691, 5, 102, 52, 6, 1681, 1682, 12, 4, 2, 2, 1682, 1683, 9, 16, 2, 2, 1683, 1691, 5, 102, 52, 5, 1684, 1685, 12, 3, 2, 2, 1685, 1686, 7, 262, 2, 2, 1686, 1691, 5, 102, 52, 4, 1687, 1688, 12, 7, 2, 2, 1688, 1689, 7, 30, 2, 2, 1689, 1691, 5, 112, 57, 2, 1690, 1678, 3, 2, 2, 2, 1690, 1681, 3, 2, 2, 2, 1690, 1684, 3, 2, 2, 2, 1690, 1687, 3, 2, 2, 2, 1691, 1694, 3, 2, 2, 2, 1692, 1690, 3, 2, 2, 2, 1692, 1693, 3, 2, 2, 2, 1693, 103, 3, 2, 2, 2, 1694, 1692, 3, 2, 2, 2, 1695, 1696, 8, 53, 1, 2, 1696, 1945, 7, 150, 2, 2, 1697, 1945, 5, 120, 61, 2, 1698, 1699, 5, 176, 89, 2, 1699, 1700, 5, 110, 56, 2, 1700, 1945, 3, 2, 2, 2, 1701, 1702, 7, 70, 2, 2, 1702, 1703, 7, 174, 2, 2, 1703, 1945, 5, 110, 56, 2, 1704, 1945, 5, 178, 90, 2, 1705, 1945, 5, 118, 60, 2, 1706, 1945, 5, 110, 56, 2, 1707, 1945, 7, 266, 2, 2, 1708, 1945, 7, 263, 2, 2, 1709, 1710, 7, 172, 2, 2, 1710, 1711, 7, 4, 2, 2, 1711, 1712, 5, 102, 52, 2, 1712, 1713, 7, 105, 2, 2, 1713, 1714, 5, 102, 52, 2, 1714, 1715, 7, 5, 2, 2, 1715, 1945, 3, 2, 2, 2, 1716, 1717, 7, 4, 2, 2, 1717, 1720, 5, 96, 49, 2, 1718, 1719, 7, 6, 2, 2, 1719, 1721, 5, 96, 49, 2, 1720, 1718, 3, 2, 2, 2, 1721, 1722, 3, 2, 2, 2, 1722, 1720, 3, 2, 2, 2, 1722, 1723, 3, 2, 2, 2, 1723, 1724, 3, 2, 2, 2, 1724, 1725, 7, 5, 2, 2, 1725, 1945, 3, 2, 2, 2, 1726, 1727, 7, 194, 2, 2, 1727, 1728, 7, 4, 2, 2, 1728, 1733, 5, 96, 49, 2, 1729, 1730, 7, 6, 2, 2, 1730, 1732, 5, 96, 49, 2, 1731, 1729, 3, 2, 2, 2, 1732, 1735, 3, 2, 2, 2, 1733, 1731, 3, 2, 2, 2, 1733, 1734, 3, 2, 2, 2, 1734, 1736, 3, 2, 2, 2, 1735, 1733, 3, 2, 2, 2, 1736, 1737, 7, 5, 2, 2, 1737, 1945, 3, 2, 2, 2, 1738, 1739, 5, 168, 85, 2, 1739, 1740, 7, 4, 2, 2, 1740, 1741, 7, 259, 2, 2, 1741, 1743, 7, 5, 2, 2, 1742, 1744, 5, 134, 68, 2, 1743, 1742, 3, 2, 2, 2, 1743, 1744, 3, 2, 2, 2, 1744, 1746, 3, 2, 2, 2, 1745, 1747, 5, 138, 70, 2, 1746, 1745, 3, 2, 2, 2, 1746, 1747, 3, 2, 2, 2, 1747, 1945, 3, 2, 2, 2, 1748, 1750, 5, 106, 54, 2, 1749, 1748, 3, 2, 2, 2, 1749, 1750, 3, 2, 2, 2, 1750, 1751, 3, 2, 2, 2, 1751, 1752, 5, 168, 85, 2, 1752, 1764, 7, 4, 2, 2, 1753, 1755, 5, 62, 32, 2, 1754, 1753, 3, 2, 2, 2, 1754, 1755, 3, 2, 2, 2, 1755, 1756, 3, 2, 2, 2, 1756, 1761, 5, 96, 49, 2, 1757, 1758, 7, 6, 2, 2, 1758, 1760, 5, 96, 49, 2, 1759, 1757, 3, 2, 2, 2, 1760, 1763, 3, 2, 2, 2, 1761, 1759, 3, 2, 2, 2, 1761, 1762, 3, 2, 2, 2, 1762, 1765, 3, 2, 2, 2, 1763, 1761, 3, 2, 2, 2, 1764, 1754, 3, 2, 2, 2, 1764, 1765, 3, 2, 2, 2, 1765, 1776, 3, 2, 2, 2, 1766, 1767, 7, 160, 2, 2, 1767, 1768, 7, 34, 2, 2, 1768, 1773, 5, 46, 24, 2, 1769, 1770, 7, 6, 2, 2, 1770, 1772, 5, 46, 24, 2, 1771, 1769, 3, 2, 2, 2, 1772, 1775, 3, 2, 2, 2, 1773, 1771, 3, 2, 2, 2, 1773, 1774, 3, 2, 2, 2, 1774, 1777, 3, 2, 2, 2, 1775, 1773, 3, 2, 2, 2, 1776, 1766, 3, 2, 2, 2, 1776, 1777, 3, 2, 2, 2, 1777, 1778, 3, 2, 2, 2, 1778, 1780, 7, 5, 2, 2, 1779, 1781, 5, 134, 68, 2, 1780, 1779, 3, 2, 2, 2, 1780, 1781, 3, 2, 2, 2, 1781, 1786, 3, 2, 2, 2, 1782, 1784, 5, 108, 55, 2, 1783, 1782, 3, 2, 2, 2, 1783, 1784, 3, 2, 2, 2, 1784, 1785, 3, 2, 2, 2, 1785, 1787, 5, 138, 70, 2, 1786, 1783, 3, 2, 2, 2, 1786, 1787, 3, 2, 2, 2, 1787, 1945, 3, 2, 2, 2, 1788, 1789, 5, 176, 89, 2, 1789, 1790, 5, 138, 70, 2, 1790, 1945, 3, 2, 2, 2, 1791, 1792, 5, 176, 89, 2, 1792, 1793, 7, 8, 2, 2, 1793, 1794, 5, 96, 49, 2, 1794, 1945, 3, 2, 2, 2, 1795, 1804, 7, 4, 2, 2, 1796, 1801, 5, 176, 89, 2, 1797, 1798, 7, 6, 2, 2, 1798, 1800, 5, 176, 89, 2, 1799, 1797, 3, 2, 2, 2, 1800, 1803, 3, 2, 2, 2, 1801, 1799, 3, 2, 2, 2, 1801, 1802, 3, 2, 2, 2, 1802, 1805, 3, 2, 2, 2, 1803, 1801, 3, 2, 2, 2, 1804, 1796, 3, 2, 2, 2, 1804, 1805, 3, 2, 2, 2, 1805, 1806, 3, 2, 2, 2, 1806, 1807, 7, 5, 2, 2, 1807, 1808, 7, 8, 2, 2, 1808, 1945, 5, 96, 49, 2, 1809, 1810, 7, 4, 2, 2, 1810, 1811, 5, 18, 10, 2, 1811, 1812, 7, 5, 2, 2, 1812, 1945, 3, 2, 2, 2, 1813, 1814, 7, 79, 2, 2, 1814, 1815, 7, 4, 2, 2, 1815, 1816, 5, 18, 10, 2, 1816, 1817, 7, 5, 2, 2, 1817, 1945, 3, 2, 2, 2, 1818, 1819, 7, 37, 2, 2, 1819, 1821, 5, 96, 49, 2, 1820, 1822, 5, 132, 67, 2, 1821, 1820, 3, 2, 2, 2, 1822, 1823, 3, 2, 2, 2, 1823, 1821, 3, 2, 2, 2, 1823, 1824, 3, 2, 2, 2, 1824, 1827, 3, 2, 2, 2, 1825, 1826, 7, 72, 2, 2, 1826, 1828, 5, 96, 49, 2, 1827, 1825, 3, 2, 2, 2, 1827, 1828, 3, 2, 2, 2, 1828, 1829, 3, 2, 2, 2, 1829, 1830, 7, 74, 2, 2, 1830, 1945, 3, 2, 2, 2, 1831, 1833, 7, 37, 2, 2, 1832, 1834, 5, 132, 67, 2, 1833, 1832, 3, 2, 2, 2, 1834, 1835, 3, 2, 2, 2, 1835, 1833, 3, 2, 2, 2, 1835, 1836, 3, 2, 2, 2, 1836, 1839, 3, 2, 2, 2, 1837, 1838, 7, 72, 2, 2, 1838, 1840, 5, 96, 49, 2, 1839, 1837, 3, 2, 2, 2, 1839, 1840, 3, 2, 2, 2, 1840, 1841, 3, 2, 2, 2, 1841, 1842, 7, 74, 2, 2, 1842, 1945, 3, 2, 2, 2, 1843, 1844, 7, 38, 2, 2, 1844, 1845, 7, 4, 2, 2, 1845, 1846, 5, 96, 49, 2, 1846, 1847, 7, 28, 2, 2, 1847, 1848, 5, 126, 64, 2, 1848, 1849, 7, 5, 2, 2, 1849, 1945, 3, 2, 2, 2, 1850, 1851, 7, 226, 2, 2, 1851, 1852, 7, 4, 2, 2, 1852, 1853, 5, 96, 49, 2, 1853, 1854, 7, 28, 2, 2, 1854, 1855, 5, 126, 64, 2, 1855, 1856, 7, 5, 2, 2, 1856, 1945, 3, 2, 2, 2, 1857, 1858, 7, 27, 2, 2, 1858, 1867, 7, 9, 2, 2, 1859, 1864, 5, 96, 49, 2, 1860, 1861, 7, 6, 2, 2, 1861, 1863, 5, 96, 49, 2, 1862, 1860, 3, 2, 2, 2, 1863, 1866, 3, 2, 2, 2, 1864, 1862, 3, 2, 2, 2, 1864, 1865, 3, 2, 2, 2, 1865, 1868, 3, 2, 2, 2, 1866, 1864, 3, 2, 2, 2, 1867, 1859, 3, 2, 2, 2, 1867, 1868, 3, 2, 2, 2, 1868, 1869, 3, 2, 2, 2, 1869, 1945, 7, 10, 2, 2, 1870, 1945, 5, 176, 89, 2, 1871, 1945, 7, 51, 2, 2, 1872, 1876, 7, 55, 2, 2, 1873, 1874, 7, 4, 2, 2, 1874, 1875, 7, 267, 2, 2, 1875, 1877, 7, 5, 2, 2, 1876, 1873, 3, 2, 2, 2, 1876, 1877, 3, 2, 2, 2, 1877, 1945, 3, 2, 2, 2, 1878, 1882, 7, 56, 2, 2, 1879, 1880, 7, 4, 2, 2, 1880, 1881, 7, 267, 2, 2, 1881, 1883, 7, 5, 2, 2, 1882, 1879, 3, 2, 2, 2, 1882, 1883, 3, 2, 2, 2, 1883, 1945, 3, 2, 2, 2, 1884, 1888, 7, 127, 2, 2, 1885, 1886, 7, 4, 2, 2, 1886, 1887, 7, 267, 2, 2, 1887, 1889, 7, 5, 2, 2, 1888, 1885, 3, 2, 2, 2, 1888, 1889, 3, 2, 2, 2, 1889, 1945, 3, 2, 2, 2, 1890, 1894, 7, 128, 2, 2, 1891, 1892, 7, 4, 2, 2, 1892, 1893, 7, 267, 2, 2, 1893, 1895, 7, 5, 2, 2, 1894, 1891, 3, 2, 2, 2, 1894, 1895, 3, 2, 2, 2, 1895, 1945, 3, 2, 2, 2, 1896, 1945, 7, 57, 2, 2, 1897, 1945, 7, 50, 2, 2, 1898, 1945, 7, 54, 2, 2, 1899, 1945, 7, 52, 2, 2, 1900, 1901, 7, 212, 2, 2, 1901, 1902, 7, 4, 2, 2, 1902, 1903, 5, 102, 52, 2, 1903, 1904, 7, 90, 2, 2, 1904, 1907, 5, 102, 52, 2, 1905, 1906, 7, 88, 2, 2, 1906, 1908, 5, 102, 52, 2, 1907, 1905, 3, 2, 2, 2, 1907, 1908, 3, 2, 2, 2, 1908, 1909, 3, 2, 2, 2, 1909, 1910, 7, 5, 2, 2, 1910, 1945, 3, 2, 2, 2, 1911, 1912, 7, 148, 2, 2, 1912, 1913, 7, 4, 2, 2, 1913, 1916, 5, 102, 52, 2, 1914, 1915, 7, 6, 2, 2, 1915, 1917, 5, 124, 63, 2, 1916, 1914, 3, 2, 2, 2, 1916, 1917, 3, 2, 2, 2, 1917, 1918, 3, 2, 2, 2, 1918, 1919, 7, 5, 2, 2, 1919, 1945, 3, 2, 2, 2, 1920, 1921, 7, 81, 2, 2, 1921, 1922, 7, 4, 2, 2, 1922, 1923, 5, 176, 89, 2, 1923, 1924, 7, 90, 2, 2, 1924, 1925, 5, 102, 52, 2, 1925, 1926, 7, 5, 2, 2, 1926, 1945, 3, 2, 2, 2, 1927, 1928, 7, 4, 2, 2, 1928, 1929, 5, 96, 49, 2, 1929, 1930, 7, 5, 2, 2, 1930, 1945, 3, 2, 2, 2, 1931, 1932, 7, 99, 2, 2, 1932, 1941, 7, 4, 2, 2, 1933, 1938, 5, 168, 85, 2, 1934, 1935, 7, 6, 2, 2, 1935, 1937, 5, 168, 85, 2, 1936, 1934, 3, 2, 2, 2, 1937, 1940, 3, 2, 2, 2, 1938, 1936, 3, 2, 2, 2, 1938, 1939, 3, 2, 2, 2, 1939, 1942, 3, 2, 2, 2, 1940, 1938, 3, 2, 2, 2, 1941, 1933, 3, 2, 2, 2, 1941, 1942, 3, 2, 2, 2, 1942, 1943, 3, 2, 2, 2, 1943, 1945, 7, 5, 2, 2, 1944, 1695, 3, 2, 2, 2, 1944, 1697, 3, 2, 2, 2, 1944, 1698, 3, 2, 2, 2, 1944, 1701, 3, 2, 2, 2, 1944, 1704, 3, 2, 2, 2, 1944, 1705, 3, 2, 2, 2, 1944, 1706, 3, 2, 2, 2, 1944, 1707, 3, 2, 2, 2, 1944, 1708, 3, 2, 2, 2, 1944, 1709, 3, 2, 2, 2, 1944, 1716, 3, 2, 2, 2, 1944, 1726, 3, 2, 2, 2, 1944, 1738, 3, 2, 2, 2, 1944, 1749, 3, 2, 2, 2, 1944, 1788, 3, 2, 2, 2, 1944, 1791, 3, 2, 2, 2, 1944, 1795, 3, 2, 2, 2, 1944, 1809, 3, 2, 2, 2, 1944, 1813, 3, 2, 2, 2, 1944, 1818, 3, 2, 2, 2, 1944, 1831, 3, 2, 2, 2, 1944, 1843, 3, 2, 2, 2, 1944, 1850, 3, 2, 2, 2, 1944, 1857, 3, 2, 2, 2, 1944, 1870, 3, 2, 2, 2, 1944, 1871, 3, 2, 2, 2, 1944, 1872, 3, 2, 2, 2, 1944, 1878, 3, 2, 2, 2, 1944, 1884, 3, 2, 2, 2, 1944, 1890, 3, 2, 2, 2, 1944, 1896, 3, 2, 2, 2, 1944, 1897, 3, 2, 2, 2, 1944, 1898, 3, 2, 2, 2, 1944, 1899, 3, 2, 2, 2, 1944, 1900, 3, 2, 2, 2, 1944, 1911, 3, 2, 2, 2, 1944, 1920, 3, 2, 2, 2, 1944, 1927, 3, 2, 2, 2, 1944, 1931, 3, 2, 2, 2, 1945, 1956, 3, 2, 2, 2, 1946, 1947, 12, 19, 2, 2, 1947, 1948, 7, 9, 2, 2, 1948, 1949, 5, 102, 52, 2, 1949, 1950, 7, 10, 2, 2, 1950, 1955, 3, 2, 2, 2, 1951, 1952, 12, 17, 2, 2, 1952, 1953, 7, 3, 2, 2, 1953, 1955, 5, 176, 89, 2, 1954, 1946, 3, 2, 2, 2, 1954, 1951, 3, 2, 2, 2, 1955, 1958, 3, 2, 2, 2, 1956, 1954, 3, 2, 2, 2, 1956, 1957, 3, 2, 2, 2, 1957, 105, 3, 2, 2, 2, 1958, 1956, 3, 2, 2, 2, 1959, 1960, 9, 18, 2, 2, 1960, 107, 3, 2, 2, 2, 1961, 1962, 7, 104, 2, 2, 1962, 1966, 7, 152, 2, 2, 1963, 1964, 7, 186, 2, 2, 1964, 1966, 7, 152, 2, 2, 1965, 1961, 3, 2, 2, 2, 1965, 1963, 3, 2, 2, 2, 1966, 109, 3, 2, 2, 2, 1967, 1974, 7, 264, 2, 2, 1968, 1971, 7, 265, 2, 2, 1969, 1970, 7, 228, 2, 2, 1970, 1972, 7, 264, 2, 2, 1971, 1969, 3, 2, 2, 2, 1971, 1972, 3, 2, 2, 2, 1972, 1974, 3, 2, 2, 2, 1973, 1967, 3, 2, 2, 2, 1973, 1968, 3, 2, 2, 2, 1974, 111, 3, 2, 2, 2, 1975, 1976, 7, 220, 2, 2, 1976, 1977, 7, 250, 2, 2, 1977, 1982, 5, 120, 61, 2, 1978, 1979, 7, 220, 2, 2, 1979, 1980, 7, 250, 2, 2, 1980, 1982, 5, 110, 56, 2, 1981, 1975, 3, 2, 2, 2, 1981, 1978, 3, 2, 2, 2, 1982, 113, 3, 2, 2, 2, 1983, 1984, 9, 19, 2, 2, 1984, 115, 3, 2, 2, 2, 1985, 1986, 9, 20, 2, 2, 1986, 117, 3, 2, 2, 2, 1987, 1988, 9, 21, 2, 2, 1988, 119, 3, 2, 2, 2, 1989, 1991, 7, 112, 2, 2, 1990, 1992, 9, 16, 2, 2, 1991, 1990, 3, 2, 2, 2, 1991, 1992, 3, 2, 2, 2, 1992, 1993, 3, 2, 2, 2, 1993, 1994, 5, 110, 56, 2, 1994, 1997, 5, 122, 62, 2, 1995, 1996, 7, 222, 2, 2, 1996, 1998, 5, 122, 62, 2, 1997, 1995, 3, 2, 2, 2, 1997, 1998, 3, 2, 2, 2, 1998, 121, 3, 2, 2, 2, 1999, 2000, 9, 22, 2, 2, 2000, 123, 3, 2, 2, 2, 2001, 2002, 9, 23, 2, 2, 2002, 125, 3, 2, 2, 2, 2003, 2004, 8, 64, 1, 2, 2004, 2005, 7, 194, 2, 2, 2005, 2006, 7, 4, 2, 2, 2006, 2011, 5, 128, 65, 2, 2007, 2008, 7, 6, 2, 2, 2008, 2010, 5, 128, 65, 2, 2009, 2007, 3, 2, 2, 2, 2010, 2013, 3, 2, 2, 2, 2011, 2009, 3, 2, 2, 2, 2011, 2012, 3, 2, 2, 2, 2012, 2014, 3, 2, 2, 2, 2013, 2011, 3, 2, 2, 2, 2014, 2015, 7, 5, 2, 2, 2015, 2095, 3, 2, 2, 2, 2016, 2017, 7, 112, 2, 2, 2017, 2020, 5, 122, 62, 2, 2018, 2019, 7, 222, 2, 2, 2019, 2021, 5, 122, 62, 2, 2020, 2018, 3, 2, 2, 2, 2020, 2021, 3, 2, 2, 2, 2021, 2095, 3, 2, 2, 2, 2022, 2027, 7, 221, 2, 2, 2023, 2024, 7, 4, 2, 2, 2024, 2025, 5, 130, 66, 2, 2025, 2026, 7, 5, 2, 2, 2026, 2028, 3, 2, 2, 2, 2027, 2023, 3, 2, 2, 2, 2027, 2028, 3, 2, 2, 2, 2028, 2032, 3, 2, 2, 2, 2029, 2030, 7, 246, 2, 2, 2030, 2031, 7, 220, 2, 2, 2031, 2033, 7, 250, 2, 2, 2032, 2029, 3, 2, 2, 2, 2032, 2033, 3, 2, 2, 2, 2033, 2095, 3, 2, 2, 2, 2034, 2039, 7, 221, 2, 2, 2035, 2036, 7, 4, 2, 2, 2036, 2037, 5, 130, 66, 2, 2037, 2038, 7, 5, 2, 2, 2038, 2040, 3, 2, 2, 2, 2039, 2035, 3, 2, 2, 2, 2039, 2040, 3, 2, 2, 2, 2040, 2041, 3, 2, 2, 2, 2041, 2042, 7, 245, 2, 2, 2042, 2043, 7, 220, 2, 2, 2043, 2095, 7, 250, 2, 2, 2044, 2049, 7, 220, 2, 2, 2045, 2046, 7, 4, 2, 2, 2046, 2047, 5, 130, 66, 2, 2047, 2048, 7, 5, 2, 2, 2048, 2050, 3, 2, 2, 2, 2049, 2045, 3, 2, 2, 2, 2049, 2050, 3, 2, 2, 2, 2050, 2054, 3, 2, 2, 2, 2051, 2052, 7, 246, 2, 2, 2052, 2053, 7, 220, 2, 2, 2053, 2055, 7, 250, 2, 2, 2054, 2051, 3, 2, 2, 2, 2054, 2055, 3, 2, 2, 2, 2055, 2095, 3, 2, 2, 2, 2056, 2061, 7, 220, 2, 2, 2057, 2058, 7, 4, 2, 2, 2058, 2059, 5, 130, 66, 2, 2059, 2060, 7, 5, 2, 2, 2060, 2062, 3, 2, 2, 2, 2061, 2057, 3, 2, 2, 2, 2061, 2062, 3, 2, 2, 2, 2062, 2063, 3, 2, 2, 2, 2063, 2064, 7, 245, 2, 2, 2064, 2065, 7, 220, 2, 2, 2065, 2095, 7, 250, 2, 2, 2066, 2067, 7, 70, 2, 2, 2067, 2095, 7, 174, 2, 2, 2068, 2069, 7, 27, 2, 2, 2069, 2070, 7, 253, 2, 2, 2070, 2071, 5, 126, 64, 2, 2071, 2072, 7, 255, 2, 2, 2072, 2095, 3, 2, 2, 2, 2073, 2074, 7, 130, 2, 2, 2074, 2075, 7, 253, 2, 2, 2075, 2076, 5, 126, 64, 2, 2076, 2077, 7, 6, 2, 2, 2077, 2078, 5, 126, 64, 2, 2078, 2079, 7, 255, 2, 2, 2079, 2095, 3, 2, 2, 2, 2080, 2092, 5, 176, 89, 2, 2081, 2082, 7, 4, 2, 2, 2082, 2087, 5, 130, 66, 2, 2083, 2084, 7, 6, 2, 2, 2084, 2086, 5, 130, 66, 2, 2085, 2083, 3, 2, 2, 2, 2086, 2089, 3, 2, 2, 2, 2087, 2085, 3, 2, 2, 2, 2087, 2088, 3, 2, 2, 2, 2088, 2090, 3, 2, 2, 2, 2089, 2087, 3, 2, 2, 2, 2090, 2091, 7, 5, 2, 2, 2091, 2093, 3, 2, 2, 2, 2092, 2081, 3, 2, 2, 2, 2092, 2093, 3, 2, 2, 2, 2093, 2095, 3, 2, 2, 2, 2094, 2003, 3, 2, 2, 2, 2094, 2016, 3, 2, 2, 2, 2094, 2022, 3, 2, 2, 2, 2094, 2034, 3, 2, 2, 2, 2094, 2044, 3, 2, 2, 2, 2094, 2056, 3, 2, 2, 2, 2094, 2066, 3, 2, 2, 2, 2094, 2068, 3, 2, 2, 2, 2094, 2073, 3, 2, 2, 2, 2094, 2080, 3, 2, 2, 2, 2095, 2105, 3, 2, 2, 2, 2096, 2097, 12, 4, 2, 2, 2097, 2101, 7, 27, 2, 2, 2098, 2099, 7, 9, 2, 2, 2099, 2100, 7, 267, 2, 2, 2100, 2102, 7, 10, 2, 2, 2101, 2098, 3, 2, 2, 2, 2101, 2102, 3, 2, 2, 2, 2102, 2104, 3, 2, 2, 2, 2103, 2096, 3, 2, 2, 2, 2104, 2107, 3, 2, 2, 2, 2105, 2103, 3, 2, 2, 2, 2105, 2106, 3, 2, 2, 2, 2106, 127, 3, 2, 2, 2, 2107, 2105, 3, 2, 2, 2, 2108, 2113, 5, 126, 64, 2, 2109, 2110, 5, 176, 89, 2, 2110, 2111, 5, 126, 64, 2, 2111, 2113, 3, 2, 2, 2, 2112, 2108, 3, 2, 2, 2, 2112, 2109, 3, 2, 2, 2, 2113, 129, 3, 2, 2, 2, 2114, 2117, 7, 267, 2, 2, 2115, 2117, 5, 126, 64, 2, 2116, 2114, 3, 2, 2, 2, 2116, 2115, 3, 2, 2, 2, 2117, 131, 3, 2, 2, 2, 2118, 2119, 7, 242, 2, 2, 2119, 2120, 5, 96, 49, 2, 2120, 2121, 7, 218, 2, 2, 2121, 2122, 5, 96, 49, 2, 2122, 133, 3, 2, 2, 2, 2123, 2124, 7, 84, 2, 2, 2124, 2125, 7, 4, 2, 2, 2125, 2126, 7, 243, 2, 2, 2126, 2127, 5, 98, 50, 2, 2127, 2128, 7, 5, 2, 2, 2128, 135, 3, 2, 2, 2, 2129, 2130, 7, 242, 2, 2, 2130, 2133, 7, 132, 2, 2, 2131, 2132, 7, 25, 2, 2, 2132, 2134, 5, 96, 49, 2, 2133, 2131, 3, 2, 2, 2, 2133, 2134, 3, 2, 2, 2, 2134, 2135, 3, 2, 2, 2, 2135, 2136, 7, 218, 2, 2, 2136, 2137, 7, 234, 2, 2, 2137, 2138, 7, 205, 2, 2, 2138, 2139, 5, 176, 89, 2, 2139, 2140, 7, 251, 2, 2, 2140, 2148, 5, 96, 49, 2, 2141, 2142, 7, 6, 2, 2, 2142, 2143, 5, 176, 89, 2, 2143, 2144, 7, 251, 2, 2, 2144, 2145, 5, 96, 49, 2, 2145, 2147, 3, 2, 2, 2, 2146, 2141, 3, 2, 2, 2, 2147, 2150, 3, 2, 2, 2, 2148, 2146, 3, 2, 2, 2, 2148, 2149, 3, 2, 2, 2, 2149, 2194, 3, 2, 2, 2, 2150, 2148, 3, 2, 2, 2, 2151, 2152, 7, 242, 2, 2, 2152, 2155, 7, 132, 2, 2, 2153, 2154, 7, 25, 2, 2, 2154, 2156, 5, 96, 49, 2, 2155, 2153, 3, 2, 2, 2, 2155, 2156, 3, 2, 2, 2, 2156, 2157, 3, 2, 2, 2, 2157, 2158, 7, 218, 2, 2, 2158, 2194, 7, 64, 2, 2, 2159, 2160, 7, 242, 2, 2, 2160, 2161, 7, 149, 2, 2, 2161, 2164, 7, 132, 2, 2, 2162, 2163, 7, 25, 2, 2, 2163, 2165, 5, 96, 49, 2, 2164, 2162, 3, 2, 2, 2, 2164, 2165, 3, 2, 2, 2, 2165, 2166, 3, 2, 2, 2, 2166, 2167, 7, 218, 2, 2, 2167, 2179, 7, 110, 2, 2, 2168, 2169, 7, 4, 2, 2, 2169, 2174, 5, 176, 89, 2, 2170, 2171, 7, 6, 2, 2, 2171, 2173, 5, 176, 89, 2, 2172, 2170, 3, 2, 2, 2, 2173, 2176, 3, 2, 2, 2, 2174, 2172, 3, 2, 2, 2, 2174, 2175, 3, 2, 2, 2, 2175, 2177, 3, 2, 2, 2, 2176, 2174, 3, 2, 2, 2, 2177, 2178, 7, 5, 2, 2, 2178, 2180, 3, 2, 2, 2, 2179, 2168, 3, 2, 2, 2, 2179, 2180, 3, 2, 2, 2, 2180, 2181, 3, 2, 2, 2, 2181, 2182, 7, 239, 2, 2, 2182, 2183, 7, 4, 2, 2, 2183, 2188, 5, 96, 49, 2, 2184, 2185, 7, 6, 2, 2, 2185, 2187, 5, 96, 49, 2, 2186, 2184, 3, 2, 2, 2, 2187, 2190, 3, 2, 2, 2, 2188, 2186, 3, 2, 2, 2, 2188, 2189, 3, 2, 2, 2, 2189, 2191, 3, 2, 2, 2, 2190, 2188, 3, 2, 2, 2, 2191, 2192, 7, 5, 2, 2, 2192, 2194, 3, 2, 2, 2, 2193, 2129, 3, 2, 2, 2, 2193, 2151, 3, 2, 2, 2, 2193, 2159, 3, 2, 2, 2, 2194, 137, 3, 2, 2, 2, 2195, 2201, 7, 164, 2, 2, 2196, 2202, 5, 176, 89, 2, 2197, 2198, 7, 4, 2, 2, 2198, 2199, 5, 58, 30, 2, 2199, 2200, 7, 5, 2, 2, 2200, 2202, 3, 2, 2, 2, 2201, 2196, 3, 2, 2, 2, 2201, 2197, 3, 2, 2, 2, 2202, 139, 3, 2, 2, 2, 2203, 2204, 7, 136, 2, 2, 2204, 2209, 5, 78, 40, 2, 2205, 2206, 7, 6, 2, 2, 2206, 2208, 5, 78, 40, 2, 2207, 2205, 3, 2, 2, 2, 2208, 2211, 3, 2, 2, 2, 2209, 2207, 3, 2, 2, 2, 2209, 2210, 3, 2, 2, 2, 2210, 2213, 3, 2, 2, 2, 2211, 2209, 3, 2, 2, 2, 2212, 2203, 3, 2, 2, 2, 2212, 2213, 3, 2, 2, 2, 2213, 2214, 3, 2, 2, 2, 2214, 2218, 5, 142, 72, 2, 2215, 2216, 7, 21, 2, 2, 2216, 2217, 7, 131, 2, 2, 2217, 2219, 5, 84, 43, 2, 2218, 2215, 3, 2, 2, 2, 2218, 2219, 3, 2, 2, 2, 2219, 2221, 3, 2, 2, 2, 2220, 2222, 9, 15, 2, 2, 2221, 2220, 3, 2, 2, 2, 2221, 2222, 3, 2, 2, 2, 2222, 2228, 3, 2, 2, 2, 2223, 2224, 7, 169, 2, 2, 2224, 2225, 7, 4, 2, 2, 2225, 2226, 5, 146, 74, 2, 2226, 2227, 7, 5, 2, 2, 2227, 2229, 3, 2, 2, 2, 2228, 2223, 3, 2, 2, 2, 2228, 2229, 3, 2, 2, 2, 2229, 2239, 3, 2, 2, 2, 2230, 2231, 7, 211, 2, 2, 2231, 2236, 5, 86, 44, 2, 2232, 2233, 7, 6, 2, 2, 2233, 2235, 5, 86, 44, 2, 2234, 2232, 3, 2, 2, 2, 2235, 2238, 3, 2, 2, 2, 2236, 2234, 3, 2, 2, 2, 2236, 2237, 3, 2, 2, 2, 2237, 2240, 3, 2, 2, 2, 2238, 2236, 3, 2, 2, 2, 2239, 2230, 3, 2, 2, 2, 2239, 2240, 3, 2, 2, 2, 2240, 2250, 3, 2, 2, 2, 2241, 2242, 7, 67, 2, 2, 2242, 2247, 5, 88, 45, 2, 2243, 2244, 7, 6, 2, 2, 2244, 2246, 5, 88, 45, 2, 2245, 2243, 3, 2, 2, 2, 2246, 2249, 3, 2, 2, 2, 2247, 2245, 3, 2, 2, 2, 2247, 2248, 3, 2, 2, 2, 2248, 2251, 3, 2, 2, 2, 2249, 2247, 3, 2, 2, 2, 2250, 2241, 3, 2, 2, 2, 2250, 2251, 3, 2, 2, 2, 2251, 141, 3, 2, 2, 2, 2252, 2253, 7, 178, 2, 2, 2253, 2277, 5, 144, 73, 2, 2254, 2255, 7, 195, 2, 2, 2255, 2277, 5, 144, 73, 2, 2256, 2257, 7, 100, 2, 2, 2257, 2277, 5, 144, 73, 2, 2258, 2259, 7, 178, 2, 2, 2259, 2260, 7, 33, 2, 2, 2260, 2261, 5, 144, 73, 2, 2261, 2262, 7, 25, 2, 2, 2262, 2263, 5, 144, 73, 2, 2263, 2277, 3, 2, 2, 2, 2264, 2265, 7, 195, 2, 2, 2265, 2266, 7, 33, 2, 2, 2266, 2267, 5, 144, 73, 2, 2267, 2268, 7, 25, 2, 2, 2268, 2269, 5, 144, 73, 2, 2269, 2277, 3, 2, 2, 2, 2270, 2271, 7, 100, 2, 2, 2271, 2272, 7, 33, 2, 2, 2272, 2273, 5, 144, 73, 2, 2273, 2274, 7, 25, 2, 2, 2274, 2275, 5, 144, 73, 2, 2275, 2277, 3, 2, 2, 2, 2276, 2252, 3, 2, 2, 2, 2276, 2254, 3, 2, 2, 2, 2276, 2256, 3, 2, 2, 2, 2276, 2258, 3, 2, 2, 2, 2276, 2264, 3, 2, 2, 2, 2276, 2270, 3, 2, 2, 2, 2277, 143, 3, 2, 2, 2, 2278, 2279, 7, 229, 2, 2, 2279, 2288, 7, 173, 2, 2, 2280, 2281, 7, 229, 2, 2, 2281, 2288, 7, 87, 2, 2, 2282, 2283, 7, 49, 2, 2, 2283, 2288, 7, 194, 2, 2, 2284, 2285, 5, 96, 49, 2, 2285, 2286, 9, 24, 2, 2, 2286, 2288, 3, 2, 2, 2, 2287, 2278, 3, 2, 2, 2, 2287, 2280, 3, 2, 2, 2, 2287, 2282, 3, 2, 2, 2, 2287, 2284, 3, 2, 2, 2, 2288, 145, 3, 2, 2, 2, 2289, 2290, 8, 74, 1, 2, 2290, 2292, 5, 148, 75, 2, 2291, 2293, 5, 150, 76, 2, 2292, 2291, 3, 2, 2, 2, 2292, 2293, 3, 2, 2, 2, 2293, 2301, 3, 2, 2, 2, 2294, 2295, 12, 4, 2, 2, 2295, 2300, 5, 146, 74, 5, 2296, 2297, 12, 3, 2, 2, 2297, 2298, 7, 11, 2, 2, 2298, 2300, 5, 146, 74, 4, 2299, 2294, 3, 2, 2, 2, 2299, 2296, 3, 2, 2, 2, 2300, 2303, 3, 2, 2, 2, 2301, 2299, 3, 2, 2, 2, 2301, 2302, 3, 2, 2, 2, 2302, 147, 3, 2, 2, 2, 2303, 2301, 3, 2, 2, 2, 2304, 2330, 5, 176, 89, 2, 2305, 2306, 7, 4, 2, 2, 2306, 2330, 7, 5, 2, 2, 2307, 2308, 7, 171, 2, 2, 2308, 2309, 7, 4, 2, 2, 2309, 2314, 5, 146, 74, 2, 2310, 2311, 7, 6, 2, 2, 2311, 2313, 5, 146, 74, 2, 2312, 2310, 3, 2, 2, 2, 2313, 2316, 3, 2, 2, 2, 2314, 2312, 3, 2, 2, 2, 2314, 2315, 3, 2, 2, 2, 2315, 2317, 3, 2, 2, 2, 2316, 2314, 3, 2, 2, 2, 2317, 2318, 7, 5, 2, 2, 2318, 2330, 3, 2, 2, 2, 2319, 2320, 7, 4, 2, 2, 2320, 2321, 5, 146, 74, 2, 2321, 2322, 7, 5, 2, 2, 2322, 2330, 3, 2, 2, 2, 2323, 2330, 7, 12, 2, 2, 2324, 2330, 7, 13, 2, 2, 2325, 2326, 7, 14, 2, 2, 2326, 2327, 5, 146, 74, 2, 2327, 2328, 7, 15, 2, 2, 2328, 2330, 3, 2, 2, 2, 2329, 2304, 3, 2, 2, 2, 2329, 2305, 3, 2, 2, 2, 2329, 2307, 3, 2, 2, 2, 2329, 2319, 3, 2, 2, 2, 2329, 2323, 3, 2, 2, 2, 2329, 2324, 3, 2, 2, 2, 2329, 2325, 3, 2, 2, 2, 2330, 149, 3, 2, 2, 2, 2331, 2333, 7, 259, 2, 2, 2332, 2334, 7, 263, 2, 2, 2333, 2332, 3, 2, 2, 2, 2333, 2334, 3, 2, 2, 2, 2334, 2362, 3, 2, 2, 2, 2335, 2337, 7, 257, 2, 2, 2336, 2338, 7, 263, 2, 2, 2337, 2336, 3, 2, 2, 2, 2337, 2338, 3, 2, 2, 2, 2338, 2362, 3, 2, 2, 2, 2339, 2341, 7, 263, 2, 2, 2340, 2342, 7, 263, 2, 2, 2341, 2340, 3, 2, 2, 2, 2341, 2342, 3, 2, 2, 2, 2342, 2362, 3, 2, 2, 2, 2343, 2344, 7, 16, 2, 2, 2344, 2345, 7, 267, 2, 2, 2345, 2347, 7, 17, 2, 2, 2346, 2348, 7, 263, 2, 2, 2347, 2346, 3, 2, 2, 2, 2347, 2348, 3, 2, 2, 2, 2348, 2362, 3, 2, 2, 2, 2349, 2351, 7, 16, 2, 2, 2350, 2352, 7, 267, 2, 2, 2351, 2350, 3, 2, 2, 2, 2351, 2352, 3, 2, 2, 2, 2352, 2353, 3, 2, 2, 2, 2353, 2355, 7, 6, 2, 2, 2354, 2356, 7, 267, 2, 2, 2355, 2354, 3, 2, 2, 2, 2355, 2356, 3, 2, 2, 2, 2356, 2357, 3, 2, 2, 2, 2357, 2359, 7, 17, 2, 2, 2358, 2360, 7, 263, 2, 2, 2359, 2358, 3, 2, 2, 2, 2359, 2360, 3, 2, 2, 2, 2360, 2362, 3, 2, 2, 2, 2361, 2331, 3, 2, 2, 2, 2361, 2335, 3, 2, 2, 2, 2361, 2339, 3, 2, 2, 2, 2361, 2343, 3, 2, 2, 2, 2361, 2349, 3, 2, 2, 2, 2362, 151, 3, 2, 2, 2, 2363, 2364, 5, 176, 89, 2, 2364, 2365, 7, 251, 2, 2, 2365, 2366, 5, 96, 49, 2, 2366, 153, 3, 2, 2, 2, 2367, 2368, 7, 89, 2, 2, 2368, 2372, 9, 25, 2, 2, 2369, 2370, 7, 227, 2, 2, 2370, 2372, 9, 26, 2, 2, 2371, 2367, 3, 2, 2, 2, 2371, 2369, 3, 2, 2, 2, 2372, 155, 3, 2, 2, 2, 2373, 2374, 7, 117, 2, 2, 2374, 2375, 7, 123, 2, 2, 2375, 2379, 5, 158, 80, 2, 2376, 2377, 7, 179, 2, 2, 2377, 2379, 9, 27, 2, 2, 2378, 2373, 3, 2, 2, 2, 2378, 2376, 3, 2, 2, 2, 2379, 157, 3, 2, 2, 2, 2380, 2381, 7, 179, 2, 2, 2381, 2388, 7, 230, 2, 2, 2382, 2383, 7, 179, 2, 2, 2383, 2388, 7, 44, 2, 2, 2384, 2385, 7, 183, 2, 2, 2385, 2388, 7, 179, 2, 2, 2386, 2388, 7, 203, 2, 2, 2387, 2380, 3, 2, 2, 2, 2387, 2382, 3, 2, 2, 2, 2387, 2384, 3, 2, 2, 2, 2387, 2386, 3, 2, 2, 2, 2388, 159, 3, 2, 2, 2, 2389, 2395, 5, 96, 49, 2, 2390, 2391, 5, 176, 89, 2, 2391, 2392, 7, 18, 2, 2, 2392, 2393, 5, 96, 49, 2, 2393, 2395, 3, 2, 2, 2, 2394, 2389, 3, 2, 2, 2, 2394, 2390, 3, 2, 2, 2, 2395, 161, 3, 2, 2, 2, 2396, 2397, 5, 176, 89, 2, 2397, 2398, 7, 3, 2, 2, 2398, 2399, 5, 176, 89, 2, 2399, 2402, 3, 2, 2, 2, 2400, 2402, 5, 176, 89, 2, 2401, 2396, 3, 2, 2, 2, 2401, 2400, 3, 2, 2, 2, 2402, 163, 3, 2, 2, 2, 2403, 2408, 5, 162, 82, 2, 2404, 2405, 7, 6, 2, 2, 2405, 2407, 5, 162, 82, 2, 2406, 2404, 3, 2, 2, 2, 2407, 2410, 3, 2, 2, 2, 2408, 2406, 3, 2, 2, 2, 2408, 2409, 3, 2, 2, 2, 2409, 165, 3, 2, 2, 2, 2410, 2408, 3, 2, 2, 2, 2411, 2412, 9, 28, 2, 2, 2412, 167, 3, 2, 2, 2, 2413, 2418, 5, 176, 89, 2, 2414, 2415, 7, 3, 2, 2, 2415, 2417, 5, 176, 89, 2, 2416, 2414, 3, 2, 2, 2, 2417, 2420, 3, 2, 2, 2, 2418, 2416, 3, 2, 2, 2, 2418, 2419, 3, 2, 2, 2, 2419, 169, 3, 2, 2, 2, 2420, 2418, 3, 2, 2, 2, 2421, 2425, 5, 172, 87, 2, 2422, 2425, 7, 57, 2, 2, 2423, 2425, 7, 53, 2, 2, 2424, 2421, 3, 2, 2, 2, 2424, 2422, 3, 2, 2, 2, 2424, 2423, 3, 2, 2, 2, 2425, 171, 3, 2, 2, 2, 2426, 2432, 5, 176, 89, 2, 2427, 2428, 7, 236, 2, 2, 2428, 2432, 5, 176, 89, 2, 2429, 2430, 7, 190, 2, 2, 2430, 2432, 5, 176, 89, 2, 2431, 2426, 3, 2, 2, 2, 2431, 2427, 3, 2, 2, 2, 2431, 2429, 3, 2, 2, 2, 2432, 173, 3, 2, 2, 2, 2433, 2438, 5, 176, 89, 2, 2434, 2435, 7, 6, 2, 2, 2435, 2437, 5, 176, 89, 2, 2436, 2434, 3, 2, 2, 2, 2437, 2440, 3, 2, 2, 2, 2438, 2436, 3, 2, 2, 2, 2438, 2439, 3, 2, 2, 2, 2439, 175, 3, 2, 2, 2, 2440, 2438, 3, 2, 2, 2, 2441, 2447, 7, 270, 2, 2, 2442, 2447, 7, 272, 2, 2, 2443, 2447, 5, 180, 91, 2, 2444, 2447, 7, 273, 2, 2, 2445, 2447, 7, 271, 2, 2, 2446, 2441, 3, 2, 2, 2, 2446, 2442, 3, 2, 2, 2, 2446, 2443, 3, 2, 2, 2, 2446, 2444, 3, 2, 2, 2, 2446, 2445, 3, 2, 2, 2, 2447, 177, 3, 2, 2, 2, 2448, 2450, 7, 258, 2, 2, 2449, 2448, 3, 2, 2, 2, 2449, 2450, 3, 2, 2, 2, 2450, 2451, 3, 2, 2, 2, 2451, 2461, 7, 268, 2, 2, 2452, 2454, 7, 258, 2, 2, 2453, 2452, 3, 2, 2, 2, 2453, 2454, 3, 2, 2, 2, 2454, 2455, 3, 2, 2, 2, 2455, 2461, 7, 269, 2, 2, 2456, 2458, 7, 258, 2, 2, 2457, 2456, 3, 2, 2, 2, 2457, 2458, 3, 2, 2, 2, 2458, 2459, 3, 2, 2, 2, 2459, 2461, 7, 267, 2, 2, 2460, 2449, 3, 2, 2, 2, 2460, 2453, 3, 2, 2, 2, 2460, 2457, 3, 2, 2, 2, 2461, 179, 3, 2, 2, 2, 2462, 2463, 9, 29, 2, 2, 2463, 181, 3, 2, 2, 2, 326, 185, 195, 199, 203, 207, 211, 215, 230, 235, 239, 245, 249, 270, 274, 278, 282, 290, 294, 297, 304, 313, 319, 323, 329, 336, 345, 354, 368, 377, 383, 390, 400, 407, 415, 423, 452, 455, 458, 462, 468, 473, 480, 485, 489, 497, 503, 507, 521, 529, 548, 573, 576, 586, 590, 603, 609, 614, 618, 624, 633, 639, 643, 650, 654, 662, 667, 671, 679, 687, 692, 696, 706, 713, 718, 722, 732, 735, 739, 742, 750, 755, 779, 785, 787, 793, 799, 801, 809, 811, 817, 823, 825, 840, 845, 852, 864, 866, 874, 876, 894, 897, 901, 905, 923, 926, 942, 952, 957, 963, 966, 975, 987, 990, 996, 1003, 1008, 1014, 1018, 1022, 1028, 1039, 1048, 1058, 1061, 1066, 1068, 1075, 1081, 1083, 1087, 1097, 1103, 1106, 1108, 1120, 1127, 1131, 1135, 1139, 1146, 1155, 1158, 1162, 1167, 1171, 1179, 1182, 1185, 1192, 1203, 1206, 1216, 1219, 1230, 1235, 1243, 1246, 1250, 1259, 1268, 1271, 1280, 1283, 1286, 1290, 1301, 1304, 1311, 1314, 1333, 1337, 1341, 1345, 1349, 1353, 1355, 1366, 1371, 1380, 1394, 1397, 1406, 1409, 1417, 1420, 1423, 1428, 1431, 1443, 1446, 1454, 1459, 1463, 1465, 1467, 1482, 1484, 1495, 1516, 1526, 1537, 1541, 1543, 1551, 1568, 1574, 1585, 1592, 1596, 1604, 1606, 1619, 1627, 1636, 1642, 1650, 1656, 1660, 1665, 1670, 1676, 1690, 1692, 1722, 1733, 1743, 1746, 1749, 1754, 1761, 1764, 1773, 1776, 1780, 1783, 1786, 1801, 1804, 1823, 1827, 1835, 1839, 1864, 1867, 1876, 1882, 1888, 1894, 1907, 1916, 1938, 1941, 1944, 1954, 1956, 1965, 1971, 1973, 1981, 1991, 1997, 2011, 2020, 2027, 2032, 2039, 2049, 2054, 2061, 2087, 2092, 2094, 2101, 2105, 2112, 2116, 2133, 2148, 2155, 2164, 2174, 2179, 2188, 2193, 2201, 2209, 2212, 2218, 2221, 2228, 2236, 2239, 2247, 2250, 2276, 2287, 2292, 2299, 2301, 2314, 2329, 2333, 2337, 2341, 2347, 2351, 2355, 2359, 2361, 2371, 2378, 2387, 2394, 2401, 2408, 2418, 2424, 2431, 2438, 2446, 2449, 2453, 2457, 2460] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 279, 2558, 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, 3, 2, 7, 2, 210, 10, 2, 12, 2, 14, 2, 213, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 222, 10, 3, 3, 4, 3, 4, 5, 4, 226, 10, 4, 3, 5, 3, 5, 5, 5, 230, 10, 5, 3, 6, 3, 6, 5, 6, 234, 10, 6, 3, 7, 3, 7, 5, 7, 238, 10, 7, 3, 8, 3, 8, 5, 8, 242, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 252, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 257, 10, 9, 3, 9, 3, 9, 5, 9, 261, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 267, 10, 9, 3, 9, 3, 9, 5, 9, 271, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 292, 10, 9, 3, 9, 3, 9, 5, 9, 296, 10, 9, 3, 9, 3, 9, 5, 9, 300, 10, 9, 3, 9, 3, 9, 5, 9, 304, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 312, 10, 9, 3, 9, 3, 9, 5, 9, 316, 10, 9, 3, 9, 5, 9, 319, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 326, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 333, 10, 9, 12, 9, 14, 9, 336, 11, 9, 3, 9, 3, 9, 3, 9, 5, 9, 341, 10, 9, 3, 9, 3, 9, 5, 9, 345, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 351, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 358, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 367, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 376, 10, 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, 5, 9, 390, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 399, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 405, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 412, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 422, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 429, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 437, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 445, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 472, 10, 9, 12, 9, 14, 9, 475, 11, 9, 5, 9, 477, 10, 9, 3, 9, 5, 9, 480, 10, 9, 3, 9, 3, 9, 5, 9, 484, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 490, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 495, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 502, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 507, 10, 9, 3, 9, 3, 9, 5, 9, 511, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 519, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 525, 10, 9, 3, 9, 3, 9, 5, 9, 529, 10, 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, 5, 9, 543, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 551, 10, 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, 9, 3, 9, 3, 9, 3, 9, 5, 9, 570, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 593, 10, 9, 12, 9, 14, 9, 596, 11, 9, 5, 9, 598, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 608, 10, 9, 3, 9, 3, 9, 5, 9, 612, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 623, 10, 9, 12, 9, 14, 9, 626, 11, 9, 3, 9, 3, 9, 3, 9, 5, 9, 631, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 636, 10, 9, 3, 9, 3, 9, 5, 9, 640, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 646, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 653, 10, 9, 12, 9, 14, 9, 656, 11, 9, 3, 9, 3, 9, 3, 9, 5, 9, 661, 10, 9, 3, 9, 3, 9, 5, 9, 665, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 672, 10, 9, 3, 9, 3, 9, 5, 9, 676, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 682, 10, 9, 12, 9, 14, 9, 685, 11, 9, 3, 9, 3, 9, 5, 9, 689, 10, 9, 3, 9, 3, 9, 5, 9, 693, 10, 9, 3, 9, 3, 9, 5, 9, 697, 10, 9, 3, 9, 5, 9, 700, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 707, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 713, 10, 9, 12, 9, 14, 9, 716, 11, 9, 3, 9, 3, 9, 5, 9, 720, 10, 9, 3, 9, 3, 9, 5, 9, 724, 10, 9, 3, 9, 3, 9, 5, 9, 728, 10, 9, 3, 9, 5, 9, 731, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 740, 10, 9, 3, 9, 3, 9, 3, 9, 7, 9, 745, 10, 9, 12, 9, 14, 9, 748, 11, 9, 3, 9, 3, 9, 5, 9, 752, 10, 9, 3, 9, 3, 9, 5, 9, 756, 10, 9, 3, 9, 3, 9, 5, 9, 760, 10, 9, 3, 9, 5, 9, 763, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 771, 10, 9, 3, 9, 5, 9, 774, 10, 9, 3, 9, 3, 9, 5, 9, 778, 10, 9, 3, 9, 5, 9, 781, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 787, 10, 9, 12, 9, 14, 9, 790, 11, 9, 3, 9, 3, 9, 5, 9, 794, 10, 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, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 818, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 824, 10, 9, 5, 9, 826, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 832, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 838, 10, 9, 5, 9, 840, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 848, 10, 9, 5, 9, 850, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 856, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 862, 10, 9, 5, 9, 864, 10, 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, 5, 9, 879, 10, 9, 3, 9, 3, 9, 3, 9, 5, 9, 884, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 891, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 903, 10, 9, 5, 9, 905, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 913, 10, 9, 5, 9, 915, 10, 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, 9, 7, 9, 931, 10, 9, 12, 9, 14, 9, 934, 11, 9, 5, 9, 936, 10, 9, 3, 9, 3, 9, 5, 9, 940, 10, 9, 3, 9, 3, 9, 5, 9, 944, 10, 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, 9, 7, 9, 960, 10, 9, 12, 9, 14, 9, 963, 11, 9, 5, 9, 965, 10, 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, 9, 5, 9, 981, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 989, 10, 9, 12, 9, 14, 9, 992, 11, 9, 3, 9, 3, 9, 5, 9, 996, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 1002, 10, 9, 3, 9, 5, 9, 1005, 10, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 6, 9, 1012, 10, 9, 13, 9, 14, 9, 1013, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 1026, 10, 9, 3, 10, 5, 10, 1029, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 1035, 10, 11, 3, 11, 3, 11, 3, 11, 7, 11, 1040, 10, 11, 12, 11, 14, 11, 1043, 11, 11, 3, 12, 3, 12, 5, 12, 1047, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 1053, 10, 13, 3, 13, 3, 13, 5, 13, 1057, 10, 13, 3, 13, 3, 13, 5, 13, 1061, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 1067, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 7, 16, 1076, 10, 16, 12, 16, 14, 16, 1079, 11, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 5, 18, 1087, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 7, 19, 1095, 10, 19, 12, 19, 14, 19, 1098, 11, 19, 5, 19, 1100, 10, 19, 3, 19, 3, 19, 3, 19, 5, 19, 1105, 10, 19, 5, 19, 1107, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 1114, 10, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 1120, 10, 19, 5, 19, 1122, 10, 19, 3, 20, 3, 20, 5, 20, 1126, 10, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 1136, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 1142, 10, 22, 3, 22, 7, 22, 1145, 10, 22, 12, 22, 14, 22, 1148, 11, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 7, 23, 1157, 10, 23, 12, 23, 14, 23, 1160, 11, 23, 3, 23, 3, 23, 3, 23, 3, 23, 5, 23, 1166, 10, 23, 3, 24, 3, 24, 5, 24, 1170, 10, 24, 3, 24, 3, 24, 5, 24, 1174, 10, 24, 3, 25, 3, 25, 5, 25, 1178, 10, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1183, 10, 25, 12, 25, 14, 25, 1186, 11, 25, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1192, 10, 25, 12, 25, 14, 25, 1195, 11, 25, 5, 25, 1197, 10, 25, 3, 25, 3, 25, 5, 25, 1201, 10, 25, 3, 25, 3, 25, 3, 25, 5, 25, 1206, 10, 25, 3, 25, 3, 25, 5, 25, 1210, 10, 25, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 1216, 10, 25, 12, 25, 14, 25, 1219, 11, 25, 5, 25, 1221, 10, 25, 3, 26, 5, 26, 1224, 10, 26, 3, 26, 3, 26, 3, 26, 7, 26, 1229, 10, 26, 12, 26, 14, 26, 1232, 11, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 1240, 10, 27, 12, 27, 14, 27, 1243, 11, 27, 5, 27, 1245, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 1253, 10, 27, 12, 27, 14, 27, 1256, 11, 27, 5, 27, 1258, 10, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 1267, 10, 27, 12, 27, 14, 27, 1270, 11, 27, 3, 27, 3, 27, 5, 27, 1274, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 1280, 10, 28, 12, 28, 14, 28, 1283, 11, 28, 5, 28, 1285, 10, 28, 3, 28, 3, 28, 5, 28, 1289, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 5, 30, 1298, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 1305, 10, 30, 12, 30, 14, 30, 1308, 11, 30, 5, 30, 1310, 10, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 1317, 10, 30, 12, 30, 14, 30, 1320, 11, 30, 5, 30, 1322, 10, 30, 3, 30, 5, 30, 1325, 10, 30, 3, 31, 3, 31, 5, 31, 1329, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 5, 33, 1340, 10, 33, 3, 33, 5, 33, 1343, 10, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 1350, 10, 33, 3, 33, 5, 33, 1353, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 1372, 10, 34, 7, 34, 1374, 10, 34, 12, 34, 14, 34, 1377, 11, 34, 3, 35, 5, 35, 1380, 10, 35, 3, 35, 3, 35, 5, 35, 1384, 10, 35, 3, 35, 3, 35, 5, 35, 1388, 10, 35, 3, 35, 3, 35, 5, 35, 1392, 10, 35, 5, 35, 1394, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 1403, 10, 36, 12, 36, 14, 36, 1406, 11, 36, 3, 36, 3, 36, 5, 36, 1410, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 1419, 10, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1431, 10, 39, 12, 39, 14, 39, 1434, 11, 39, 5, 39, 1436, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1443, 10, 39, 12, 39, 14, 39, 1446, 11, 39, 5, 39, 1448, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1454, 10, 39, 12, 39, 14, 39, 1457, 11, 39, 5, 39, 1459, 10, 39, 3, 39, 5, 39, 1462, 10, 39, 3, 39, 3, 39, 3, 39, 5, 39, 1467, 10, 39, 3, 39, 5, 39, 1470, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1480, 10, 39, 12, 39, 14, 39, 1483, 11, 39, 5, 39, 1485, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 1491, 10, 39, 12, 39, 14, 39, 1494, 11, 39, 3, 39, 3, 39, 5, 39, 1498, 10, 39, 3, 39, 3, 39, 5, 39, 1502, 10, 39, 5, 39, 1504, 10, 39, 5, 39, 1506, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 1521, 10, 41, 5, 41, 1523, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 1534, 10, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 1555, 10, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 1563, 10, 44, 12, 44, 14, 44, 1566, 11, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 5, 46, 1576, 10, 46, 3, 46, 3, 46, 5, 46, 1580, 10, 46, 5, 46, 1582, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 1588, 10, 47, 12, 47, 14, 47, 1591, 11, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 7, 48, 1605, 10, 48, 12, 48, 14, 48, 1608, 11, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1613, 10, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 1624, 10, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 5, 50, 1631, 10, 50, 3, 50, 3, 50, 5, 50, 1635, 10, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 7, 50, 1643, 10, 50, 12, 50, 14, 50, 1646, 11, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1658, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1666, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 1673, 10, 51, 12, 51, 14, 51, 1676, 11, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1681, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1689, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1695, 10, 51, 3, 51, 3, 51, 5, 51, 1699, 10, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1704, 10, 51, 3, 51, 3, 51, 3, 51, 5, 51, 1709, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 1715, 10, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 7, 52, 1729, 10, 52, 12, 52, 14, 52, 1732, 11, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 6, 53, 1759, 10, 53, 13, 53, 14, 53, 1760, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1770, 10, 53, 12, 53, 14, 53, 1773, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1782, 10, 53, 3, 53, 5, 53, 1785, 10, 53, 3, 53, 5, 53, 1788, 10, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1793, 10, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1798, 10, 53, 12, 53, 14, 53, 1801, 11, 53, 5, 53, 1803, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1810, 10, 53, 12, 53, 14, 53, 1813, 11, 53, 5, 53, 1815, 10, 53, 3, 53, 3, 53, 5, 53, 1819, 10, 53, 3, 53, 5, 53, 1822, 10, 53, 3, 53, 5, 53, 1825, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1838, 10, 53, 12, 53, 14, 53, 1841, 11, 53, 5, 53, 1843, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 6, 53, 1860, 10, 53, 13, 53, 14, 53, 1861, 3, 53, 3, 53, 5, 53, 1866, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 6, 53, 1872, 10, 53, 13, 53, 14, 53, 1873, 3, 53, 3, 53, 5, 53, 1878, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1901, 10, 53, 12, 53, 14, 53, 1904, 11, 53, 5, 53, 1906, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1915, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1921, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1927, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1933, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1946, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 1955, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1975, 10, 53, 12, 53, 14, 53, 1978, 11, 53, 5, 53, 1980, 10, 53, 3, 53, 5, 53, 1983, 10, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 1993, 10, 53, 12, 53, 14, 53, 1996, 11, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 2004, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 2010, 10, 56, 5, 56, 2012, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 2020, 10, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 5, 61, 2030, 10, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 2036, 10, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 2048, 10, 64, 12, 64, 14, 64, 2051, 11, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2059, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2066, 10, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2071, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2078, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2088, 10, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2093, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2100, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 2124, 10, 64, 12, 64, 14, 64, 2127, 11, 64, 3, 64, 3, 64, 5, 64, 2131, 10, 64, 5, 64, 2133, 10, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 2140, 10, 64, 7, 64, 2142, 10, 64, 12, 64, 14, 64, 2145, 11, 64, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 2151, 10, 65, 3, 66, 3, 66, 5, 66, 2155, 10, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2172, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 2185, 10, 69, 12, 69, 14, 69, 2188, 11, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2194, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 2203, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 2211, 10, 69, 12, 69, 14, 69, 2214, 11, 69, 3, 69, 3, 69, 5, 69, 2218, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 2225, 10, 69, 12, 69, 14, 69, 2228, 11, 69, 3, 69, 3, 69, 5, 69, 2232, 10, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 2240, 10, 70, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 2246, 10, 71, 12, 71, 14, 71, 2249, 11, 71, 5, 71, 2251, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2257, 10, 71, 3, 71, 5, 71, 2260, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 2267, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 2273, 10, 71, 12, 71, 14, 71, 2276, 11, 71, 5, 71, 2278, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 2284, 10, 71, 12, 71, 14, 71, 2287, 11, 71, 5, 71, 2289, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 2315, 10, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 2326, 10, 73, 3, 74, 3, 74, 3, 74, 5, 74, 2331, 10, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 7, 74, 2338, 10, 74, 12, 74, 14, 74, 2341, 11, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 7, 75, 2351, 10, 75, 12, 75, 14, 75, 2354, 11, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 2368, 10, 75, 3, 76, 3, 76, 5, 76, 2372, 10, 76, 3, 76, 3, 76, 5, 76, 2376, 10, 76, 3, 76, 3, 76, 5, 76, 2380, 10, 76, 3, 76, 3, 76, 3, 76, 3, 76, 5, 76, 2386, 10, 76, 3, 76, 3, 76, 5, 76, 2390, 10, 76, 3, 76, 3, 76, 5, 76, 2394, 10, 76, 3, 76, 3, 76, 5, 76, 2398, 10, 76, 5, 76, 2400, 10, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 2410, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 5, 79, 2417, 10, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 2426, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 2433, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 2440, 10, 82, 3, 83, 3, 83, 3, 83, 7, 83, 2445, 10, 83, 12, 83, 14, 83, 2448, 11, 83, 3, 84, 3, 84, 3, 85, 3, 85, 5, 85, 2454, 10, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 2475, 10, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 2488, 10, 91, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 5, 94, 2499, 10, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 7, 98, 2510, 10, 98, 12, 98, 14, 98, 2513, 11, 98, 3, 99, 3, 99, 3, 99, 5, 99, 2518, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 2525, 10, 100, 3, 101, 3, 101, 3, 101, 7, 101, 2530, 10, 101, 12, 101, 14, 101, 2533, 11, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102, 2540, 10, 102, 3, 103, 5, 103, 2543, 10, 103, 3, 103, 3, 103, 5, 103, 2547, 10, 103, 3, 103, 3, 103, 5, 103, 2551, 10, 103, 3, 103, 5, 103, 2554, 10, 103, 3, 104, 3, 104, 3, 104, 2, 2, 9, 42, 66, 98, 102, 104, 126, 146, 105, 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, 104, 2, 106, 2, 108, 2, 110, 2, 112, 2, 114, 2, 116, 2, 118, 2, 120, 2, 122, 2, 124, 2, 126, 2, 128, 2, 130, 2, 132, 2, 134, 2, 136, 2, 138, 2, 140, 2, 142, 2, 144, 2, 146, 2, 148, 2, 150, 2, 152, 2, 154, 2, 156, 2, 158, 2, 160, 2, 162, 2, 164, 2, 166, 2, 168, 2, 170, 2, 172, 2, 174, 2, 176, 2, 178, 2, 180, 2, 182, 2, 184, 2, 186, 2, 188, 2, 190, 2, 192, 2, 194, 2, 196, 2, 198, 2, 200, 2, 202, 2, 204, 2, 206, 2, 2, 29, 4, 2, 36, 36, 187, 187, 4, 2, 63, 63, 114, 114, 4, 2, 90, 90, 105, 105, 4, 2, 77, 77, 106, 106, 3, 2, 194, 195, 4, 2, 86, 86, 141, 141, 4, 2, 263, 263, 267, 267, 4, 2, 76, 76, 231, 231, 4, 2, 29, 29, 65, 65, 4, 2, 86, 86, 120, 120, 4, 2, 22, 22, 68, 68, 4, 2, 32, 32, 213, 213, 4, 2, 107, 107, 201, 201, 3, 2, 257, 258, 3, 2, 259, 261, 4, 2, 85, 85, 196, 196, 3, 2, 251, 256, 5, 2, 22, 22, 26, 26, 208, 208, 4, 2, 82, 82, 225, 225, 7, 2, 60, 60, 102, 102, 138, 139, 199, 199, 249, 249, 3, 2, 142, 145, 4, 2, 87, 87, 173, 173, 5, 2, 97, 97, 119, 119, 217, 217, 6, 2, 69, 69, 115, 115, 129, 129, 238, 238, 4, 2, 157, 157, 248, 248, 6, 2, 64, 64, 110, 110, 202, 202, 234, 234, 51, 2, 19, 22, 24, 24, 26, 27, 29, 32, 35, 36, 39, 44, 49, 49, 58, 61, 63, 63, 65, 65, 67, 67, 69, 70, 73, 73, 77, 77, 80, 80, 83, 87, 89, 89, 92, 97, 100, 100, 102, 104, 106, 107, 109, 109, 112, 112, 114, 115, 117, 117, 119, 121, 123, 123, 125, 126, 129, 139, 141, 147, 151, 154, 156, 158, 161, 161, 163, 174, 176, 179, 181, 188, 190, 192, 194, 201, 203, 213, 215, 217, 219, 224, 226, 227, 229, 230, 232, 232, 234, 236, 238, 238, 240, 241, 244, 244, 246, 250, 2, 2960, 2, 211, 3, 2, 2, 2, 4, 221, 3, 2, 2, 2, 6, 223, 3, 2, 2, 2, 8, 227, 3, 2, 2, 2, 10, 231, 3, 2, 2, 2, 12, 235, 3, 2, 2, 2, 14, 239, 3, 2, 2, 2, 16, 1025, 3, 2, 2, 2, 18, 1028, 3, 2, 2, 2, 20, 1032, 3, 2, 2, 2, 22, 1046, 3, 2, 2, 2, 24, 1048, 3, 2, 2, 2, 26, 1062, 3, 2, 2, 2, 28, 1068, 3, 2, 2, 2, 30, 1072, 3, 2, 2, 2, 32, 1080, 3, 2, 2, 2, 34, 1086, 3, 2, 2, 2, 36, 1088, 3, 2, 2, 2, 38, 1125, 3, 2, 2, 2, 40, 1127, 3, 2, 2, 2, 42, 1129, 3, 2, 2, 2, 44, 1165, 3, 2, 2, 2, 46, 1167, 3, 2, 2, 2, 48, 1175, 3, 2, 2, 2, 50, 1223, 3, 2, 2, 2, 52, 1273, 3, 2, 2, 2, 54, 1288, 3, 2, 2, 2, 56, 1290, 3, 2, 2, 2, 58, 1297, 3, 2, 2, 2, 60, 1326, 3, 2, 2, 2, 62, 1335, 3, 2, 2, 2, 64, 1352, 3, 2, 2, 2, 66, 1354, 3, 2, 2, 2, 68, 1393, 3, 2, 2, 2, 70, 1409, 3, 2, 2, 2, 72, 1411, 3, 2, 2, 2, 74, 1420, 3, 2, 2, 2, 76, 1422, 3, 2, 2, 2, 78, 1507, 3, 2, 2, 2, 80, 1522, 3, 2, 2, 2, 82, 1533, 3, 2, 2, 2, 84, 1554, 3, 2, 2, 2, 86, 1556, 3, 2, 2, 2, 88, 1569, 3, 2, 2, 2, 90, 1573, 3, 2, 2, 2, 92, 1583, 3, 2, 2, 2, 94, 1623, 3, 2, 2, 2, 96, 1625, 3, 2, 2, 2, 98, 1634, 3, 2, 2, 2, 100, 1708, 3, 2, 2, 2, 102, 1714, 3, 2, 2, 2, 104, 1982, 3, 2, 2, 2, 106, 1997, 3, 2, 2, 2, 108, 2003, 3, 2, 2, 2, 110, 2011, 3, 2, 2, 2, 112, 2019, 3, 2, 2, 2, 114, 2021, 3, 2, 2, 2, 116, 2023, 3, 2, 2, 2, 118, 2025, 3, 2, 2, 2, 120, 2027, 3, 2, 2, 2, 122, 2037, 3, 2, 2, 2, 124, 2039, 3, 2, 2, 2, 126, 2132, 3, 2, 2, 2, 128, 2150, 3, 2, 2, 2, 130, 2154, 3, 2, 2, 2, 132, 2156, 3, 2, 2, 2, 134, 2161, 3, 2, 2, 2, 136, 2231, 3, 2, 2, 2, 138, 2233, 3, 2, 2, 2, 140, 2250, 3, 2, 2, 2, 142, 2314, 3, 2, 2, 2, 144, 2325, 3, 2, 2, 2, 146, 2327, 3, 2, 2, 2, 148, 2367, 3, 2, 2, 2, 150, 2399, 3, 2, 2, 2, 152, 2401, 3, 2, 2, 2, 154, 2409, 3, 2, 2, 2, 156, 2416, 3, 2, 2, 2, 158, 2425, 3, 2, 2, 2, 160, 2432, 3, 2, 2, 2, 162, 2439, 3, 2, 2, 2, 164, 2441, 3, 2, 2, 2, 166, 2449, 3, 2, 2, 2, 168, 2453, 3, 2, 2, 2, 170, 2455, 3, 2, 2, 2, 172, 2457, 3, 2, 2, 2, 174, 2459, 3, 2, 2, 2, 176, 2461, 3, 2, 2, 2, 178, 2474, 3, 2, 2, 2, 180, 2487, 3, 2, 2, 2, 182, 2489, 3, 2, 2, 2, 184, 2491, 3, 2, 2, 2, 186, 2498, 3, 2, 2, 2, 188, 2500, 3, 2, 2, 2, 190, 2502, 3, 2, 2, 2, 192, 2504, 3, 2, 2, 2, 194, 2506, 3, 2, 2, 2, 196, 2517, 3, 2, 2, 2, 198, 2524, 3, 2, 2, 2, 200, 2526, 3, 2, 2, 2, 202, 2539, 3, 2, 2, 2, 204, 2553, 3, 2, 2, 2, 206, 2555, 3, 2, 2, 2, 208, 210, 5, 4, 3, 2, 209, 208, 3, 2, 2, 2, 210, 213, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 214, 3, 2, 2, 2, 213, 211, 3, 2, 2, 2, 214, 215, 7, 2, 2, 3, 215, 3, 3, 2, 2, 2, 216, 222, 5, 6, 4, 2, 217, 222, 5, 8, 5, 2, 218, 222, 5, 10, 6, 2, 219, 222, 5, 12, 7, 2, 220, 222, 5, 14, 8, 2, 221, 216, 3, 2, 2, 2, 221, 217, 3, 2, 2, 2, 221, 218, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 220, 3, 2, 2, 2, 222, 5, 3, 2, 2, 2, 223, 225, 5, 16, 9, 2, 224, 226, 7, 274, 2, 2, 225, 224, 3, 2, 2, 2, 225, 226, 3, 2, 2, 2, 226, 7, 3, 2, 2, 2, 227, 229, 5, 96, 49, 2, 228, 230, 7, 274, 2, 2, 229, 228, 3, 2, 2, 2, 229, 230, 3, 2, 2, 2, 230, 9, 3, 2, 2, 2, 231, 233, 5, 164, 83, 2, 232, 234, 7, 274, 2, 2, 233, 232, 3, 2, 2, 2, 233, 234, 3, 2, 2, 2, 234, 11, 3, 2, 2, 2, 235, 237, 5, 126, 64, 2, 236, 238, 7, 274, 2, 2, 237, 236, 3, 2, 2, 2, 237, 238, 3, 2, 2, 2, 238, 13, 3, 2, 2, 2, 239, 241, 5, 146, 74, 2, 240, 242, 7, 274, 2, 2, 241, 240, 3, 2, 2, 2, 241, 242, 3, 2, 2, 2, 242, 15, 3, 2, 2, 2, 243, 1026, 5, 18, 10, 2, 244, 245, 7, 235, 2, 2, 245, 1026, 5, 182, 92, 2, 246, 247, 7, 46, 2, 2, 247, 251, 7, 197, 2, 2, 248, 249, 7, 103, 2, 2, 249, 250, 7, 149, 2, 2, 250, 252, 7, 79, 2, 2, 251, 248, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 256, 5, 184, 93, 2, 254, 255, 7, 31, 2, 2, 255, 257, 5, 198, 100, 2, 256, 254, 3, 2, 2, 2, 256, 257, 3, 2, 2, 2, 257, 260, 3, 2, 2, 2, 258, 259, 7, 245, 2, 2, 259, 261, 5, 28, 15, 2, 260, 258, 3, 2, 2, 2, 260, 261, 3, 2, 2, 2, 261, 1026, 3, 2, 2, 2, 262, 263, 7, 71, 2, 2, 263, 266, 7, 197, 2, 2, 264, 265, 7, 103, 2, 2, 265, 267, 7, 79, 2, 2, 266, 264, 3, 2, 2, 2, 266, 267, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 270, 5, 182, 92, 2, 269, 271, 9, 2, 2, 2, 270, 269, 3, 2, 2, 2, 270, 271, 3, 2, 2, 2, 271, 1026, 3, 2, 2, 2, 272, 273, 7, 23, 2, 2, 273, 274, 7, 197, 2, 2, 274, 275, 5, 182, 92, 2, 275, 276, 7, 182, 2, 2, 276, 277, 7, 222, 2, 2, 277, 278, 5, 184, 93, 2, 278, 1026, 3, 2, 2, 2, 279, 280, 7, 23, 2, 2, 280, 281, 7, 197, 2, 2, 281, 282, 5, 182, 92, 2, 282, 283, 7, 205, 2, 2, 283, 284, 7, 31, 2, 2, 284, 285, 5, 198, 100, 2, 285, 1026, 3, 2, 2, 2, 286, 287, 7, 46, 2, 2, 287, 291, 7, 214, 2, 2, 288, 289, 7, 103, 2, 2, 289, 290, 7, 149, 2, 2, 290, 292, 7, 79, 2, 2, 291, 288, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 293, 3, 2, 2, 2, 293, 295, 5, 172, 87, 2, 294, 296, 5, 92, 47, 2, 295, 294, 3, 2, 2, 2, 295, 296, 3, 2, 2, 2, 296, 299, 3, 2, 2, 2, 297, 298, 7, 42, 2, 2, 298, 300, 5, 110, 56, 2, 299, 297, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 245, 2, 2, 302, 304, 5, 28, 15, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 305, 3, 2, 2, 2, 305, 311, 7, 28, 2, 2, 306, 312, 5, 18, 10, 2, 307, 308, 7, 3, 2, 2, 308, 309, 5, 18, 10, 2, 309, 310, 7, 4, 2, 2, 310, 312, 3, 2, 2, 2, 311, 306, 3, 2, 2, 2, 311, 307, 3, 2, 2, 2, 312, 318, 3, 2, 2, 2, 313, 315, 7, 245, 2, 2, 314, 316, 7, 146, 2, 2, 315, 314, 3, 2, 2, 2, 315, 316, 3, 2, 2, 2, 316, 317, 3, 2, 2, 2, 317, 319, 7, 58, 2, 2, 318, 313, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 1026, 3, 2, 2, 2, 320, 321, 7, 46, 2, 2, 321, 325, 7, 214, 2, 2, 322, 323, 7, 103, 2, 2, 323, 324, 7, 149, 2, 2, 324, 326, 7, 79, 2, 2, 325, 322, 3, 2, 2, 2, 325, 326, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 328, 5, 172, 87, 2, 328, 329, 7, 3, 2, 2, 329, 334, 5, 22, 12, 2, 330, 331, 7, 5, 2, 2, 331, 333, 5, 22, 12, 2, 332, 330, 3, 2, 2, 2, 333, 336, 3, 2, 2, 2, 334, 332, 3, 2, 2, 2, 334, 335, 3, 2, 2, 2, 335, 337, 3, 2, 2, 2, 336, 334, 3, 2, 2, 2, 337, 340, 7, 4, 2, 2, 338, 339, 7, 42, 2, 2, 339, 341, 5, 110, 56, 2, 340, 338, 3, 2, 2, 2, 340, 341, 3, 2, 2, 2, 341, 344, 3, 2, 2, 2, 342, 343, 7, 245, 2, 2, 343, 345, 5, 28, 15, 2, 344, 342, 3, 2, 2, 2, 344, 345, 3, 2, 2, 2, 345, 1026, 3, 2, 2, 2, 346, 347, 7, 71, 2, 2, 347, 350, 7, 214, 2, 2, 348, 349, 7, 103, 2, 2, 349, 351, 7, 79, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 352, 3, 2, 2, 2, 352, 1026, 5, 170, 86, 2, 353, 354, 7, 110, 2, 2, 354, 355, 7, 113, 2, 2, 355, 357, 5, 170, 86, 2, 356, 358, 5, 92, 47, 2, 357, 356, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 360, 5, 18, 10, 2, 360, 1026, 3, 2, 2, 2, 361, 362, 7, 64, 2, 2, 362, 363, 7, 90, 2, 2, 363, 366, 5, 170, 86, 2, 364, 365, 7, 243, 2, 2, 365, 367, 5, 98, 50, 2, 366, 364, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 1026, 3, 2, 2, 2, 368, 369, 7, 224, 2, 2, 369, 370, 7, 214, 2, 2, 370, 1026, 5, 170, 86, 2, 371, 372, 7, 23, 2, 2, 372, 375, 7, 214, 2, 2, 373, 374, 7, 103, 2, 2, 374, 376, 7, 79, 2, 2, 375, 373, 3, 2, 2, 2, 375, 376, 3, 2, 2, 2, 376, 377, 3, 2, 2, 2, 377, 378, 5, 170, 86, 2, 378, 379, 7, 182, 2, 2, 379, 380, 7, 222, 2, 2, 380, 381, 5, 172, 87, 2, 381, 1026, 3, 2, 2, 2, 382, 383, 7, 42, 2, 2, 383, 384, 7, 155, 2, 2, 384, 385, 7, 214, 2, 2, 385, 386, 5, 170, 86, 2, 386, 389, 7, 116, 2, 2, 387, 390, 5, 110, 56, 2, 388, 390, 7, 150, 2, 2, 389, 387, 3, 2, 2, 2, 389, 388, 3, 2, 2, 2, 390, 1026, 3, 2, 2, 2, 391, 392, 7, 42, 2, 2, 392, 393, 7, 155, 2, 2, 393, 394, 7, 40, 2, 2, 394, 395, 5, 194, 98, 2, 395, 398, 7, 116, 2, 2, 396, 399, 5, 110, 56, 2, 397, 399, 7, 150, 2, 2, 398, 396, 3, 2, 2, 2, 398, 397, 3, 2, 2, 2, 399, 1026, 3, 2, 2, 2, 400, 401, 7, 23, 2, 2, 401, 404, 7, 214, 2, 2, 402, 403, 7, 103, 2, 2, 403, 405, 7, 79, 2, 2, 404, 402, 3, 2, 2, 2, 404, 405, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 407, 5, 170, 86, 2, 407, 408, 7, 182, 2, 2, 408, 411, 7, 40, 2, 2, 409, 410, 7, 103, 2, 2, 410, 412, 7, 79, 2, 2, 411, 409, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 414, 5, 202, 102, 2, 414, 415, 7, 222, 2, 2, 415, 416, 5, 202, 102, 2, 416, 1026, 3, 2, 2, 2, 417, 418, 7, 23, 2, 2, 418, 421, 7, 214, 2, 2, 419, 420, 7, 103, 2, 2, 420, 422, 7, 79, 2, 2, 421, 419, 3, 2, 2, 2, 421, 422, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 424, 5, 170, 86, 2, 424, 425, 7, 71, 2, 2, 425, 428, 7, 40, 2, 2, 426, 427, 7, 103, 2, 2, 427, 429, 7, 79, 2, 2, 428, 426, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 431, 5, 194, 98, 2, 431, 1026, 3, 2, 2, 2, 432, 433, 7, 23, 2, 2, 433, 436, 7, 214, 2, 2, 434, 435, 7, 103, 2, 2, 435, 437, 7, 79, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 438, 3, 2, 2, 2, 438, 439, 5, 170, 86, 2, 439, 440, 7, 19, 2, 2, 440, 444, 7, 40, 2, 2, 441, 442, 7, 103, 2, 2, 442, 443, 7, 149, 2, 2, 443, 445, 7, 79, 2, 2, 444, 441, 3, 2, 2, 2, 444, 445, 3, 2, 2, 2, 445, 446, 3, 2, 2, 2, 446, 447, 5, 24, 13, 2, 447, 1026, 3, 2, 2, 2, 448, 449, 7, 23, 2, 2, 449, 450, 7, 214, 2, 2, 450, 451, 5, 170, 86, 2, 451, 452, 7, 205, 2, 2, 452, 453, 7, 31, 2, 2, 453, 454, 5, 198, 100, 2, 454, 1026, 3, 2, 2, 2, 455, 456, 7, 23, 2, 2, 456, 457, 7, 214, 2, 2, 457, 458, 5, 170, 86, 2, 458, 459, 7, 205, 2, 2, 459, 460, 7, 177, 2, 2, 460, 461, 5, 30, 16, 2, 461, 1026, 3, 2, 2, 2, 462, 463, 7, 23, 2, 2, 463, 464, 7, 214, 2, 2, 464, 465, 5, 170, 86, 2, 465, 466, 7, 78, 2, 2, 466, 479, 5, 202, 102, 2, 467, 476, 7, 3, 2, 2, 468, 473, 5, 160, 81, 2, 469, 470, 7, 5, 2, 2, 470, 472, 5, 160, 81, 2, 471, 469, 3, 2, 2, 2, 472, 475, 3, 2, 2, 2, 473, 471, 3, 2, 2, 2, 473, 474, 3, 2, 2, 2, 474, 477, 3, 2, 2, 2, 475, 473, 3, 2, 2, 2, 476, 468, 3, 2, 2, 2, 476, 477, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 480, 7, 4, 2, 2, 479, 467, 3, 2, 2, 2, 479, 480, 3, 2, 2, 2, 480, 483, 3, 2, 2, 2, 481, 482, 7, 243, 2, 2, 482, 484, 5, 98, 50, 2, 483, 481, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 1026, 3, 2, 2, 2, 485, 486, 7, 24, 2, 2, 486, 489, 5, 170, 86, 2, 487, 488, 7, 245, 2, 2, 488, 490, 5, 28, 15, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 1026, 3, 2, 2, 2, 491, 494, 7, 46, 2, 2, 492, 493, 7, 159, 2, 2, 493, 495, 7, 184, 2, 2, 494, 492, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 497, 7, 135, 2, 2, 497, 501, 7, 241, 2, 2, 498, 499, 7, 103, 2, 2, 499, 500, 7, 149, 2, 2, 500, 502, 7, 79, 2, 2, 501, 498, 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 506, 5, 176, 89, 2, 504, 505, 7, 42, 2, 2, 505, 507, 5, 110, 56, 2, 506, 504, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 510, 3, 2, 2, 2, 508, 509, 7, 245, 2, 2, 509, 511, 5, 28, 15, 2, 510, 508, 3, 2, 2, 2, 510, 511, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 513, 7, 28, 2, 2, 513, 514, 5, 18, 10, 2, 514, 1026, 3, 2, 2, 2, 515, 518, 7, 46, 2, 2, 516, 517, 7, 159, 2, 2, 517, 519, 7, 184, 2, 2, 518, 516, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 521, 7, 241, 2, 2, 521, 524, 5, 176, 89, 2, 522, 523, 7, 42, 2, 2, 523, 525, 5, 110, 56, 2, 524, 522, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 528, 3, 2, 2, 2, 526, 527, 7, 200, 2, 2, 527, 529, 9, 3, 2, 2, 528, 526, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 531, 7, 28, 2, 2, 531, 532, 5, 18, 10, 2, 532, 1026, 3, 2, 2, 2, 533, 534, 7, 181, 2, 2, 534, 535, 7, 135, 2, 2, 535, 536, 7, 241, 2, 2, 536, 1026, 5, 174, 88, 2, 537, 538, 7, 71, 2, 2, 538, 539, 7, 135, 2, 2, 539, 542, 7, 241, 2, 2, 540, 541, 7, 103, 2, 2, 541, 543, 7, 79, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 1026, 5, 174, 88, 2, 545, 546, 7, 23, 2, 2, 546, 547, 7, 135, 2, 2, 547, 550, 7, 241, 2, 2, 548, 549, 7, 103, 2, 2, 549, 551, 7, 79, 2, 2, 550, 548, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 553, 5, 174, 88, 2, 553, 554, 7, 182, 2, 2, 554, 555, 7, 222, 2, 2, 555, 556, 5, 176, 89, 2, 556, 1026, 3, 2, 2, 2, 557, 558, 7, 23, 2, 2, 558, 559, 7, 135, 2, 2, 559, 560, 7, 241, 2, 2, 560, 561, 5, 174, 88, 2, 561, 562, 7, 205, 2, 2, 562, 563, 7, 177, 2, 2, 563, 564, 5, 30, 16, 2, 564, 1026, 3, 2, 2, 2, 565, 566, 7, 71, 2, 2, 566, 569, 7, 241, 2, 2, 567, 568, 7, 103, 2, 2, 568, 570, 7, 79, 2, 2, 569, 567, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 1026, 5, 174, 88, 2, 572, 573, 7, 23, 2, 2, 573, 574, 7, 241, 2, 2, 574, 575, 5, 174, 88, 2, 575, 576, 7, 182, 2, 2, 576, 577, 7, 222, 2, 2, 577, 578, 5, 176, 89, 2, 578, 1026, 3, 2, 2, 2, 579, 580, 7, 23, 2, 2, 580, 581, 7, 241, 2, 2, 581, 582, 5, 174, 88, 2, 582, 583, 7, 205, 2, 2, 583, 584, 7, 31, 2, 2, 584, 585, 5, 198, 100, 2, 585, 1026, 3, 2, 2, 2, 586, 587, 7, 35, 2, 2, 587, 588, 5, 192, 97, 2, 588, 597, 7, 3, 2, 2, 589, 594, 5, 160, 81, 2, 590, 591, 7, 5, 2, 2, 591, 593, 5, 160, 81, 2, 592, 590, 3, 2, 2, 2, 593, 596, 3, 2, 2, 2, 594, 592, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 598, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 597, 589, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 600, 7, 4, 2, 2, 600, 1026, 3, 2, 2, 2, 601, 602, 7, 46, 2, 2, 602, 603, 7, 190, 2, 2, 603, 607, 5, 202, 102, 2, 604, 605, 7, 245, 2, 2, 605, 606, 7, 20, 2, 2, 606, 608, 5, 196, 99, 2, 607, 604, 3, 2, 2, 2, 607, 608, 3, 2, 2, 2, 608, 611, 3, 2, 2, 2, 609, 610, 7, 105, 2, 2, 610, 612, 5, 188, 95, 2, 611, 609, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 1026, 3, 2, 2, 2, 613, 614, 7, 71, 2, 2, 614, 615, 7, 190, 2, 2, 615, 1026, 5, 202, 102, 2, 616, 617, 7, 93, 2, 2, 617, 618, 5, 200, 101, 2, 618, 619, 7, 222, 2, 2, 619, 624, 5, 198, 100, 2, 620, 621, 7, 5, 2, 2, 621, 623, 5, 198, 100, 2, 622, 620, 3, 2, 2, 2, 623, 626, 3, 2, 2, 2, 624, 622, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 630, 3, 2, 2, 2, 626, 624, 3, 2, 2, 2, 627, 628, 7, 245, 2, 2, 628, 629, 7, 20, 2, 2, 629, 631, 7, 158, 2, 2, 630, 627, 3, 2, 2, 2, 630, 631, 3, 2, 2, 2, 631, 635, 3, 2, 2, 2, 632, 633, 7, 94, 2, 2, 633, 634, 7, 34, 2, 2, 634, 636, 5, 196, 99, 2, 635, 632, 3, 2, 2, 2, 635, 636, 3, 2, 2, 2, 636, 639, 3, 2, 2, 2, 637, 638, 7, 105, 2, 2, 638, 640, 5, 188, 95, 2, 639, 637, 3, 2, 2, 2, 639, 640, 3, 2, 2, 2, 640, 1026, 3, 2, 2, 2, 641, 645, 7, 188, 2, 2, 642, 643, 7, 20, 2, 2, 643, 644, 7, 158, 2, 2, 644, 646, 7, 88, 2, 2, 645, 642, 3, 2, 2, 2, 645, 646, 3, 2, 2, 2, 646, 647, 3, 2, 2, 2, 647, 648, 5, 200, 101, 2, 648, 649, 7, 90, 2, 2, 649, 654, 5, 198, 100, 2, 650, 651, 7, 5, 2, 2, 651, 653, 5, 198, 100, 2, 652, 650, 3, 2, 2, 2, 653, 656, 3, 2, 2, 2, 654, 652, 3, 2, 2, 2, 654, 655, 3, 2, 2, 2, 655, 660, 3, 2, 2, 2, 656, 654, 3, 2, 2, 2, 657, 658, 7, 94, 2, 2, 658, 659, 7, 34, 2, 2, 659, 661, 5, 196, 99, 2, 660, 657, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 664, 3, 2, 2, 2, 662, 663, 7, 105, 2, 2, 663, 665, 5, 188, 95, 2, 664, 662, 3, 2, 2, 2, 664, 665, 3, 2, 2, 2, 665, 1026, 3, 2, 2, 2, 666, 667, 7, 205, 2, 2, 667, 671, 7, 190, 2, 2, 668, 672, 7, 22, 2, 2, 669, 672, 7, 147, 2, 2, 670, 672, 5, 202, 102, 2, 671, 668, 3, 2, 2, 2, 671, 669, 3, 2, 2, 2, 671, 670, 3, 2, 2, 2, 672, 675, 3, 2, 2, 2, 673, 674, 7, 105, 2, 2, 674, 676, 5, 188, 95, 2, 675, 673, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 1026, 3, 2, 2, 2, 677, 688, 7, 93, 2, 2, 678, 683, 5, 166, 84, 2, 679, 680, 7, 5, 2, 2, 680, 682, 5, 166, 84, 2, 681, 679, 3, 2, 2, 2, 682, 685, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 689, 3, 2, 2, 2, 685, 683, 3, 2, 2, 2, 686, 687, 7, 22, 2, 2, 687, 689, 7, 176, 2, 2, 688, 678, 3, 2, 2, 2, 688, 686, 3, 2, 2, 2, 689, 690, 3, 2, 2, 2, 690, 699, 7, 155, 2, 2, 691, 693, 7, 197, 2, 2, 692, 691, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 700, 5, 182, 92, 2, 695, 697, 7, 214, 2, 2, 696, 695, 3, 2, 2, 2, 696, 697, 3, 2, 2, 2, 697, 698, 3, 2, 2, 2, 698, 700, 5, 170, 86, 2, 699, 692, 3, 2, 2, 2, 699, 696, 3, 2, 2, 2, 699, 700, 3, 2, 2, 2, 700, 701, 3, 2, 2, 2, 701, 702, 7, 222, 2, 2, 702, 706, 5, 198, 100, 2, 703, 704, 7, 245, 2, 2, 704, 705, 7, 93, 2, 2, 705, 707, 7, 158, 2, 2, 706, 703, 3, 2, 2, 2, 706, 707, 3, 2, 2, 2, 707, 1026, 3, 2, 2, 2, 708, 719, 7, 96, 2, 2, 709, 714, 5, 166, 84, 2, 710, 711, 7, 5, 2, 2, 711, 713, 5, 166, 84, 2, 712, 710, 3, 2, 2, 2, 713, 716, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 714, 715, 3, 2, 2, 2, 715, 720, 3, 2, 2, 2, 716, 714, 3, 2, 2, 2, 717, 718, 7, 22, 2, 2, 718, 720, 7, 176, 2, 2, 719, 709, 3, 2, 2, 2, 719, 717, 3, 2, 2, 2, 720, 721, 3, 2, 2, 2, 721, 730, 7, 155, 2, 2, 722, 724, 7, 197, 2, 2, 723, 722, 3, 2, 2, 2, 723, 724, 3, 2, 2, 2, 724, 725, 3, 2, 2, 2, 725, 731, 5, 182, 92, 2, 726, 728, 7, 214, 2, 2, 727, 726, 3, 2, 2, 2, 727, 728, 3, 2, 2, 2, 728, 729, 3, 2, 2, 2, 729, 731, 5, 170, 86, 2, 730, 723, 3, 2, 2, 2, 730, 727, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 733, 7, 222, 2, 2, 733, 734, 5, 198, 100, 2, 734, 1026, 3, 2, 2, 2, 735, 739, 7, 188, 2, 2, 736, 737, 7, 93, 2, 2, 737, 738, 7, 158, 2, 2, 738, 740, 7, 88, 2, 2, 739, 736, 3, 2, 2, 2, 739, 740, 3, 2, 2, 2, 740, 751, 3, 2, 2, 2, 741, 746, 5, 166, 84, 2, 742, 743, 7, 5, 2, 2, 743, 745, 5, 166, 84, 2, 744, 742, 3, 2, 2, 2, 745, 748, 3, 2, 2, 2, 746, 744, 3, 2, 2, 2, 746, 747, 3, 2, 2, 2, 747, 752, 3, 2, 2, 2, 748, 746, 3, 2, 2, 2, 749, 750, 7, 22, 2, 2, 750, 752, 7, 176, 2, 2, 751, 741, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 762, 7, 155, 2, 2, 754, 756, 7, 197, 2, 2, 755, 754, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 757, 3, 2, 2, 2, 757, 763, 5, 182, 92, 2, 758, 760, 7, 214, 2, 2, 759, 758, 3, 2, 2, 2, 759, 760, 3, 2, 2, 2, 760, 761, 3, 2, 2, 2, 761, 763, 5, 170, 86, 2, 762, 755, 3, 2, 2, 2, 762, 759, 3, 2, 2, 2, 762, 763, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 7, 90, 2, 2, 765, 1026, 5, 198, 100, 2, 766, 767, 7, 207, 2, 2, 767, 773, 7, 95, 2, 2, 768, 770, 7, 155, 2, 2, 769, 771, 7, 214, 2, 2, 770, 769, 3, 2, 2, 2, 770, 771, 3, 2, 2, 2, 771, 772, 3, 2, 2, 2, 772, 774, 5, 170, 86, 2, 773, 768, 3, 2, 2, 2, 773, 774, 3, 2, 2, 2, 774, 1026, 3, 2, 2, 2, 775, 777, 7, 80, 2, 2, 776, 778, 7, 24, 2, 2, 777, 776, 3, 2, 2, 2, 777, 778, 3, 2, 2, 2, 778, 780, 3, 2, 2, 2, 779, 781, 7, 240, 2, 2, 780, 779, 3, 2, 2, 2, 780, 781, 3, 2, 2, 2, 781, 793, 3, 2, 2, 2, 782, 783, 7, 3, 2, 2, 783, 788, 5, 154, 78, 2, 784, 785, 7, 5, 2, 2, 785, 787, 5, 154, 78, 2, 786, 784, 3, 2, 2, 2, 787, 790, 3, 2, 2, 2, 788, 786, 3, 2, 2, 2, 788, 789, 3, 2, 2, 2, 789, 791, 3, 2, 2, 2, 790, 788, 3, 2, 2, 2, 791, 792, 7, 4, 2, 2, 792, 794, 3, 2, 2, 2, 793, 782, 3, 2, 2, 2, 793, 794, 3, 2, 2, 2, 794, 795, 3, 2, 2, 2, 795, 1026, 5, 16, 9, 2, 796, 797, 7, 207, 2, 2, 797, 798, 7, 46, 2, 2, 798, 799, 7, 214, 2, 2, 799, 1026, 5, 170, 86, 2, 800, 801, 7, 207, 2, 2, 801, 802, 7, 46, 2, 2, 802, 803, 7, 197, 2, 2, 803, 1026, 5, 182, 92, 2, 804, 805, 7, 207, 2, 2, 805, 806, 7, 46, 2, 2, 806, 807, 7, 241, 2, 2, 807, 1026, 5, 174, 88, 2, 808, 809, 7, 207, 2, 2, 809, 810, 7, 46, 2, 2, 810, 811, 7, 135, 2, 2, 811, 812, 7, 241, 2, 2, 812, 1026, 5, 174, 88, 2, 813, 814, 7, 207, 2, 2, 814, 817, 7, 215, 2, 2, 815, 816, 9, 4, 2, 2, 816, 818, 5, 182, 92, 2, 817, 815, 3, 2, 2, 2, 817, 818, 3, 2, 2, 2, 818, 825, 3, 2, 2, 2, 819, 820, 7, 124, 2, 2, 820, 823, 5, 110, 56, 2, 821, 822, 7, 75, 2, 2, 822, 824, 5, 110, 56, 2, 823, 821, 3, 2, 2, 2, 823, 824, 3, 2, 2, 2, 824, 826, 3, 2, 2, 2, 825, 819, 3, 2, 2, 2, 825, 826, 3, 2, 2, 2, 826, 1026, 3, 2, 2, 2, 827, 828, 7, 207, 2, 2, 828, 831, 7, 198, 2, 2, 829, 830, 9, 4, 2, 2, 830, 832, 5, 188, 95, 2, 831, 829, 3, 2, 2, 2, 831, 832, 3, 2, 2, 2, 832, 839, 3, 2, 2, 2, 833, 834, 7, 124, 2, 2, 834, 837, 5, 110, 56, 2, 835, 836, 7, 75, 2, 2, 836, 838, 5, 110, 56, 2, 837, 835, 3, 2, 2, 2, 837, 838, 3, 2, 2, 2, 838, 840, 3, 2, 2, 2, 839, 833, 3, 2, 2, 2, 839, 840, 3, 2, 2, 2, 840, 1026, 3, 2, 2, 2, 841, 842, 7, 207, 2, 2, 842, 849, 7, 39, 2, 2, 843, 844, 7, 124, 2, 2, 844, 847, 5, 110, 56, 2, 845, 846, 7, 75, 2, 2, 846, 848, 5, 110, 56, 2, 847, 845, 3, 2, 2, 2, 847, 848, 3, 2, 2, 2, 848, 850, 3, 2, 2, 2, 849, 843, 3, 2, 2, 2, 849, 850, 3, 2, 2, 2, 850, 1026, 3, 2, 2, 2, 851, 852, 7, 207, 2, 2, 852, 853, 7, 41, 2, 2, 853, 855, 9, 4, 2, 2, 854, 856, 5, 168, 85, 2, 855, 854, 3, 2, 2, 2, 855, 856, 3, 2, 2, 2, 856, 863, 3, 2, 2, 2, 857, 858, 7, 124, 2, 2, 858, 861, 5, 110, 56, 2, 859, 860, 7, 75, 2, 2, 860, 862, 5, 110, 56, 2, 861, 859, 3, 2, 2, 2, 861, 862, 3, 2, 2, 2, 862, 864, 3, 2, 2, 2, 863, 857, 3, 2, 2, 2, 863, 864, 3, 2, 2, 2, 864, 1026, 3, 2, 2, 2, 865, 866, 7, 207, 2, 2, 866, 867, 7, 210, 2, 2, 867, 868, 7, 88, 2, 2, 868, 1026, 5, 170, 86, 2, 869, 870, 7, 207, 2, 2, 870, 871, 7, 210, 2, 2, 871, 872, 7, 88, 2, 2, 872, 873, 7, 3, 2, 2, 873, 874, 5, 18, 10, 2, 874, 875, 7, 4, 2, 2, 875, 1026, 3, 2, 2, 2, 876, 878, 7, 207, 2, 2, 877, 879, 7, 49, 2, 2, 878, 877, 3, 2, 2, 2, 878, 879, 3, 2, 2, 2, 879, 880, 3, 2, 2, 2, 880, 883, 7, 191, 2, 2, 881, 882, 9, 4, 2, 2, 882, 884, 5, 202, 102, 2, 883, 881, 3, 2, 2, 2, 883, 884, 3, 2, 2, 2, 884, 1026, 3, 2, 2, 2, 885, 886, 7, 207, 2, 2, 886, 887, 7, 190, 2, 2, 887, 890, 7, 95, 2, 2, 888, 889, 9, 4, 2, 2, 889, 891, 5, 202, 102, 2, 890, 888, 3, 2, 2, 2, 890, 891, 3, 2, 2, 2, 891, 1026, 3, 2, 2, 2, 892, 893, 7, 66, 2, 2, 893, 1026, 5, 168, 85, 2, 894, 895, 7, 65, 2, 2, 895, 1026, 5, 168, 85, 2, 896, 897, 7, 207, 2, 2, 897, 904, 7, 92, 2, 2, 898, 899, 7, 124, 2, 2, 899, 902, 5, 110, 56, 2, 900, 901, 7, 75, 2, 2, 901, 903, 5, 110, 56, 2, 902, 900, 3, 2, 2, 2, 902, 903, 3, 2, 2, 2, 903, 905, 3, 2, 2, 2, 904, 898, 3, 2, 2, 2, 904, 905, 3, 2, 2, 2, 905, 1026, 3, 2, 2, 2, 906, 907, 7, 207, 2, 2, 907, 914, 7, 204, 2, 2, 908, 909, 7, 124, 2, 2, 909, 912, 5, 110, 56, 2, 910, 911, 7, 75, 2, 2, 911, 913, 5, 110, 56, 2, 912, 910, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2, 913, 915, 3, 2, 2, 2, 914, 908, 3, 2, 2, 2, 914, 915, 3, 2, 2, 2, 915, 1026, 3, 2, 2, 2, 916, 917, 7, 205, 2, 2, 917, 918, 7, 204, 2, 2, 918, 919, 5, 194, 98, 2, 919, 920, 7, 251, 2, 2, 920, 921, 5, 96, 49, 2, 921, 1026, 3, 2, 2, 2, 922, 923, 7, 185, 2, 2, 923, 924, 7, 204, 2, 2, 924, 1026, 5, 194, 98, 2, 925, 926, 7, 209, 2, 2, 926, 935, 7, 223, 2, 2, 927, 932, 5, 156, 79, 2, 928, 929, 7, 5, 2, 2, 929, 931, 5, 156, 79, 2, 930, 928, 3, 2, 2, 2, 931, 934, 3, 2, 2, 2, 932, 930, 3, 2, 2, 2, 932, 933, 3, 2, 2, 2, 933, 936, 3, 2, 2, 2, 934, 932, 3, 2, 2, 2, 935, 927, 3, 2, 2, 2, 935, 936, 3, 2, 2, 2, 936, 1026, 3, 2, 2, 2, 937, 939, 7, 43, 2, 2, 938, 940, 7, 247, 2, 2, 939, 938, 3, 2, 2, 2, 939, 940, 3, 2, 2, 2, 940, 1026, 3, 2, 2, 2, 941, 943, 7, 192, 2, 2, 942, 944, 7, 247, 2, 2, 943, 942, 3, 2, 2, 2, 943, 944, 3, 2, 2, 2, 944, 1026, 3, 2, 2, 2, 945, 946, 7, 175, 2, 2, 946, 947, 5, 202, 102, 2, 947, 948, 7, 90, 2, 2, 948, 949, 5, 16, 9, 2, 949, 1026, 3, 2, 2, 2, 950, 951, 7, 62, 2, 2, 951, 952, 7, 175, 2, 2, 952, 1026, 5, 202, 102, 2, 953, 954, 7, 78, 2, 2, 954, 964, 5, 202, 102, 2, 955, 956, 7, 237, 2, 2, 956, 961, 5, 96, 49, 2, 957, 958, 7, 5, 2, 2, 958, 960, 5, 96, 49, 2, 959, 957, 3, 2, 2, 2, 960, 963, 3, 2, 2, 2, 961, 959, 3, 2, 2, 2, 961, 962, 3, 2, 2, 2, 962, 965, 3, 2, 2, 2, 963, 961, 3, 2, 2, 2, 964, 955, 3, 2, 2, 2, 964, 965, 3, 2, 2, 2, 965, 1026, 3, 2, 2, 2, 966, 967, 7, 66, 2, 2, 967, 968, 7, 109, 2, 2, 968, 1026, 5, 202, 102, 2, 969, 970, 7, 66, 2, 2, 970, 971, 7, 163, 2, 2, 971, 1026, 5, 202, 102, 2, 972, 973, 7, 205, 2, 2, 973, 974, 7, 168, 2, 2, 974, 1026, 5, 164, 83, 2, 975, 976, 7, 205, 2, 2, 976, 977, 7, 220, 2, 2, 977, 980, 7, 250, 2, 2, 978, 981, 7, 126, 2, 2, 979, 981, 5, 96, 49, 2, 980, 978, 3, 2, 2, 2, 980, 979, 3, 2, 2, 2, 981, 1026, 3, 2, 2, 2, 982, 983, 7, 234, 2, 2, 983, 984, 5, 170, 86, 2, 984, 985, 7, 205, 2, 2, 985, 990, 5, 152, 77, 2, 986, 987, 7, 5, 2, 2, 987, 989, 5, 152, 77, 2, 988, 986, 3, 2, 2, 2, 989, 992, 3, 2, 2, 2, 990, 988, 3, 2, 2, 2, 990, 991, 3, 2, 2, 2, 991, 995, 3, 2, 2, 2, 992, 990, 3, 2, 2, 2, 993, 994, 7, 243, 2, 2, 994, 996, 5, 98, 50, 2, 995, 993, 3, 2, 2, 2, 995, 996, 3, 2, 2, 2, 996, 1026, 3, 2, 2, 2, 997, 998, 7, 137, 2, 2, 998, 999, 7, 113, 2, 2, 999, 1004, 5, 170, 86, 2, 1000, 1002, 7, 28, 2, 2, 1001, 1000, 3, 2, 2, 2, 1001, 1002, 3, 2, 2, 2, 1002, 1003, 3, 2, 2, 2, 1003, 1005, 5, 202, 102, 2, 1004, 1001, 3, 2, 2, 2, 1004, 1005, 3, 2, 2, 2, 1005, 1006, 3, 2, 2, 2, 1006, 1007, 7, 237, 2, 2, 1007, 1008, 5, 66, 34, 2, 1008, 1009, 7, 155, 2, 2, 1009, 1011, 5, 96, 49, 2, 1010, 1012, 5, 136, 69, 2, 1011, 1010, 3, 2, 2, 2, 1012, 1013, 3, 2, 2, 2, 1013, 1011, 3, 2, 2, 2, 1013, 1014, 3, 2, 2, 2, 1014, 1026, 3, 2, 2, 2, 1015, 1016, 7, 207, 2, 2, 1016, 1017, 7, 42, 2, 2, 1017, 1018, 7, 155, 2, 2, 1018, 1019, 7, 214, 2, 2, 1019, 1026, 5, 170, 86, 2, 1020, 1021, 7, 207, 2, 2, 1021, 1022, 7, 42, 2, 2, 1022, 1023, 7, 155, 2, 2, 1023, 1024, 7, 40, 2, 2, 1024, 1026, 5, 194, 98, 2, 1025, 243, 3, 2, 2, 2, 1025, 244, 3, 2, 2, 2, 1025, 246, 3, 2, 2, 2, 1025, 262, 3, 2, 2, 2, 1025, 272, 3, 2, 2, 2, 1025, 279, 3, 2, 2, 2, 1025, 286, 3, 2, 2, 2, 1025, 320, 3, 2, 2, 2, 1025, 346, 3, 2, 2, 2, 1025, 353, 3, 2, 2, 2, 1025, 361, 3, 2, 2, 2, 1025, 368, 3, 2, 2, 2, 1025, 371, 3, 2, 2, 2, 1025, 382, 3, 2, 2, 2, 1025, 391, 3, 2, 2, 2, 1025, 400, 3, 2, 2, 2, 1025, 417, 3, 2, 2, 2, 1025, 432, 3, 2, 2, 2, 1025, 448, 3, 2, 2, 2, 1025, 455, 3, 2, 2, 2, 1025, 462, 3, 2, 2, 2, 1025, 485, 3, 2, 2, 2, 1025, 491, 3, 2, 2, 2, 1025, 515, 3, 2, 2, 2, 1025, 533, 3, 2, 2, 2, 1025, 537, 3, 2, 2, 2, 1025, 545, 3, 2, 2, 2, 1025, 557, 3, 2, 2, 2, 1025, 565, 3, 2, 2, 2, 1025, 572, 3, 2, 2, 2, 1025, 579, 3, 2, 2, 2, 1025, 586, 3, 2, 2, 2, 1025, 601, 3, 2, 2, 2, 1025, 613, 3, 2, 2, 2, 1025, 616, 3, 2, 2, 2, 1025, 641, 3, 2, 2, 2, 1025, 666, 3, 2, 2, 2, 1025, 677, 3, 2, 2, 2, 1025, 708, 3, 2, 2, 2, 1025, 735, 3, 2, 2, 2, 1025, 766, 3, 2, 2, 2, 1025, 775, 3, 2, 2, 2, 1025, 796, 3, 2, 2, 2, 1025, 800, 3, 2, 2, 2, 1025, 804, 3, 2, 2, 2, 1025, 808, 3, 2, 2, 2, 1025, 813, 3, 2, 2, 2, 1025, 827, 3, 2, 2, 2, 1025, 841, 3, 2, 2, 2, 1025, 851, 3, 2, 2, 2, 1025, 865, 3, 2, 2, 2, 1025, 869, 3, 2, 2, 2, 1025, 876, 3, 2, 2, 2, 1025, 885, 3, 2, 2, 2, 1025, 892, 3, 2, 2, 2, 1025, 894, 3, 2, 2, 2, 1025, 896, 3, 2, 2, 2, 1025, 906, 3, 2, 2, 2, 1025, 916, 3, 2, 2, 2, 1025, 922, 3, 2, 2, 2, 1025, 925, 3, 2, 2, 2, 1025, 937, 3, 2, 2, 2, 1025, 941, 3, 2, 2, 2, 1025, 945, 3, 2, 2, 2, 1025, 950, 3, 2, 2, 2, 1025, 953, 3, 2, 2, 2, 1025, 966, 3, 2, 2, 2, 1025, 969, 3, 2, 2, 2, 1025, 972, 3, 2, 2, 2, 1025, 975, 3, 2, 2, 2, 1025, 982, 3, 2, 2, 2, 1025, 997, 3, 2, 2, 2, 1025, 1015, 3, 2, 2, 2, 1025, 1020, 3, 2, 2, 2, 1026, 17, 3, 2, 2, 2, 1027, 1029, 5, 20, 11, 2, 1028, 1027, 3, 2, 2, 2, 1028, 1029, 3, 2, 2, 2, 1029, 1030, 3, 2, 2, 2, 1030, 1031, 5, 36, 19, 2, 1031, 19, 3, 2, 2, 2, 1032, 1034, 7, 245, 2, 2, 1033, 1035, 7, 180, 2, 2, 1034, 1033, 3, 2, 2, 2, 1034, 1035, 3, 2, 2, 2, 1035, 1036, 3, 2, 2, 2, 1036, 1041, 5, 60, 31, 2, 1037, 1038, 7, 5, 2, 2, 1038, 1040, 5, 60, 31, 2, 1039, 1037, 3, 2, 2, 2, 1040, 1043, 3, 2, 2, 2, 1041, 1039, 3, 2, 2, 2, 1041, 1042, 3, 2, 2, 2, 1042, 21, 3, 2, 2, 2, 1043, 1041, 3, 2, 2, 2, 1044, 1047, 5, 24, 13, 2, 1045, 1047, 5, 26, 14, 2, 1046, 1044, 3, 2, 2, 2, 1046, 1045, 3, 2, 2, 2, 1047, 23, 3, 2, 2, 2, 1048, 1049, 5, 202, 102, 2, 1049, 1052, 5, 126, 64, 2, 1050, 1051, 7, 149, 2, 2, 1051, 1053, 7, 150, 2, 2, 1052, 1050, 3, 2, 2, 2, 1052, 1053, 3, 2, 2, 2, 1053, 1056, 3, 2, 2, 2, 1054, 1055, 7, 42, 2, 2, 1055, 1057, 5, 110, 56, 2, 1056, 1054, 3, 2, 2, 2, 1056, 1057, 3, 2, 2, 2, 1057, 1060, 3, 2, 2, 2, 1058, 1059, 7, 245, 2, 2, 1059, 1061, 5, 28, 15, 2, 1060, 1058, 3, 2, 2, 2, 1060, 1061, 3, 2, 2, 2, 1061, 25, 3, 2, 2, 2, 1062, 1063, 7, 124, 2, 2, 1063, 1066, 5, 170, 86, 2, 1064, 1065, 9, 5, 2, 2, 1065, 1067, 7, 177, 2, 2, 1066, 1064, 3, 2, 2, 2, 1066, 1067, 3, 2, 2, 2, 1067, 27, 3, 2, 2, 2, 1068, 1069, 7, 3, 2, 2, 1069, 1070, 5, 30, 16, 2, 1070, 1071, 7, 4, 2, 2, 1071, 29, 3, 2, 2, 2, 1072, 1077, 5, 32, 17, 2, 1073, 1074, 7, 5, 2, 2, 1074, 1076, 5, 32, 17, 2, 1075, 1073, 3, 2, 2, 2, 1076, 1079, 3, 2, 2, 2, 1077, 1075, 3, 2, 2, 2, 1077, 1078, 3, 2, 2, 2, 1078, 31, 3, 2, 2, 2, 1079, 1077, 3, 2, 2, 2, 1080, 1081, 5, 202, 102, 2, 1081, 1082, 7, 251, 2, 2, 1082, 1083, 5, 34, 18, 2, 1083, 33, 3, 2, 2, 2, 1084, 1087, 7, 61, 2, 2, 1085, 1087, 5, 96, 49, 2, 1086, 1084, 3, 2, 2, 2, 1086, 1085, 3, 2, 2, 2, 1087, 35, 3, 2, 2, 2, 1088, 1099, 5, 42, 22, 2, 1089, 1090, 7, 160, 2, 2, 1090, 1091, 7, 34, 2, 2, 1091, 1096, 5, 46, 24, 2, 1092, 1093, 7, 5, 2, 2, 1093, 1095, 5, 46, 24, 2, 1094, 1092, 3, 2, 2, 2, 1095, 1098, 3, 2, 2, 2, 1096, 1094, 3, 2, 2, 2, 1096, 1097, 3, 2, 2, 2, 1097, 1100, 3, 2, 2, 2, 1098, 1096, 3, 2, 2, 2, 1099, 1089, 3, 2, 2, 2, 1099, 1100, 3, 2, 2, 2, 1100, 1106, 3, 2, 2, 2, 1101, 1102, 7, 153, 2, 2, 1102, 1104, 5, 40, 21, 2, 1103, 1105, 9, 6, 2, 2, 1104, 1103, 3, 2, 2, 2, 1104, 1105, 3, 2, 2, 2, 1105, 1107, 3, 2, 2, 2, 1106, 1101, 3, 2, 2, 2, 1106, 1107, 3, 2, 2, 2, 1107, 1121, 3, 2, 2, 2, 1108, 1109, 7, 125, 2, 2, 1109, 1122, 5, 38, 20, 2, 1110, 1111, 7, 83, 2, 2, 1111, 1113, 9, 7, 2, 2, 1112, 1114, 5, 40, 21, 2, 1113, 1112, 3, 2, 2, 2, 1113, 1114, 3, 2, 2, 2, 1114, 1115, 3, 2, 2, 2, 1115, 1119, 9, 6, 2, 2, 1116, 1120, 7, 157, 2, 2, 1117, 1118, 7, 245, 2, 2, 1118, 1120, 7, 219, 2, 2, 1119, 1116, 3, 2, 2, 2, 1119, 1117, 3, 2, 2, 2, 1120, 1122, 3, 2, 2, 2, 1121, 1108, 3, 2, 2, 2, 1121, 1110, 3, 2, 2, 2, 1121, 1122, 3, 2, 2, 2, 1122, 37, 3, 2, 2, 2, 1123, 1126, 7, 22, 2, 2, 1124, 1126, 5, 40, 21, 2, 1125, 1123, 3, 2, 2, 2, 1125, 1124, 3, 2, 2, 2, 1126, 39, 3, 2, 2, 2, 1127, 1128, 9, 8, 2, 2, 1128, 41, 3, 2, 2, 2, 1129, 1130, 8, 22, 1, 2, 1130, 1131, 5, 44, 23, 2, 1131, 1146, 3, 2, 2, 2, 1132, 1133, 12, 4, 2, 2, 1133, 1135, 7, 111, 2, 2, 1134, 1136, 5, 62, 32, 2, 1135, 1134, 3, 2, 2, 2, 1135, 1136, 3, 2, 2, 2, 1136, 1137, 3, 2, 2, 2, 1137, 1145, 5, 42, 22, 5, 1138, 1139, 12, 3, 2, 2, 1139, 1141, 9, 9, 2, 2, 1140, 1142, 5, 62, 32, 2, 1141, 1140, 3, 2, 2, 2, 1141, 1142, 3, 2, 2, 2, 1142, 1143, 3, 2, 2, 2, 1143, 1145, 5, 42, 22, 4, 1144, 1132, 3, 2, 2, 2, 1144, 1138, 3, 2, 2, 2, 1145, 1148, 3, 2, 2, 2, 1146, 1144, 3, 2, 2, 2, 1146, 1147, 3, 2, 2, 2, 1147, 43, 3, 2, 2, 2, 1148, 1146, 3, 2, 2, 2, 1149, 1166, 5, 48, 25, 2, 1150, 1151, 7, 214, 2, 2, 1151, 1166, 5, 170, 86, 2, 1152, 1153, 7, 239, 2, 2, 1153, 1158, 5, 96, 49, 2, 1154, 1155, 7, 5, 2, 2, 1155, 1157, 5, 96, 49, 2, 1156, 1154, 3, 2, 2, 2, 1157, 1160, 3, 2, 2, 2, 1158, 1156, 3, 2, 2, 2, 1158, 1159, 3, 2, 2, 2, 1159, 1166, 3, 2, 2, 2, 1160, 1158, 3, 2, 2, 2, 1161, 1162, 7, 3, 2, 2, 1162, 1163, 5, 36, 19, 2, 1163, 1164, 7, 4, 2, 2, 1164, 1166, 3, 2, 2, 2, 1165, 1149, 3, 2, 2, 2, 1165, 1150, 3, 2, 2, 2, 1165, 1152, 3, 2, 2, 2, 1165, 1161, 3, 2, 2, 2, 1166, 45, 3, 2, 2, 2, 1167, 1169, 5, 96, 49, 2, 1168, 1170, 9, 10, 2, 2, 1169, 1168, 3, 2, 2, 2, 1169, 1170, 3, 2, 2, 2, 1170, 1173, 3, 2, 2, 2, 1171, 1172, 7, 152, 2, 2, 1172, 1174, 9, 11, 2, 2, 1173, 1171, 3, 2, 2, 2, 1173, 1174, 3, 2, 2, 2, 1174, 47, 3, 2, 2, 2, 1175, 1177, 7, 202, 2, 2, 1176, 1178, 5, 62, 32, 2, 1177, 1176, 3, 2, 2, 2, 1177, 1178, 3, 2, 2, 2, 1178, 1179, 3, 2, 2, 2, 1179, 1184, 5, 64, 33, 2, 1180, 1181, 7, 5, 2, 2, 1181, 1183, 5, 64, 33, 2, 1182, 1180, 3, 2, 2, 2, 1183, 1186, 3, 2, 2, 2, 1184, 1182, 3, 2, 2, 2, 1184, 1185, 3, 2, 2, 2, 1185, 1196, 3, 2, 2, 2, 1186, 1184, 3, 2, 2, 2, 1187, 1188, 7, 90, 2, 2, 1188, 1193, 5, 66, 34, 2, 1189, 1190, 7, 5, 2, 2, 1190, 1192, 5, 66, 34, 2, 1191, 1189, 3, 2, 2, 2, 1192, 1195, 3, 2, 2, 2, 1193, 1191, 3, 2, 2, 2, 1193, 1194, 3, 2, 2, 2, 1194, 1197, 3, 2, 2, 2, 1195, 1193, 3, 2, 2, 2, 1196, 1187, 3, 2, 2, 2, 1196, 1197, 3, 2, 2, 2, 1197, 1200, 3, 2, 2, 2, 1198, 1199, 7, 243, 2, 2, 1199, 1201, 5, 98, 50, 2, 1200, 1198, 3, 2, 2, 2, 1200, 1201, 3, 2, 2, 2, 1201, 1205, 3, 2, 2, 2, 1202, 1203, 7, 98, 2, 2, 1203, 1204, 7, 34, 2, 2, 1204, 1206, 5, 50, 26, 2, 1205, 1202, 3, 2, 2, 2, 1205, 1206, 3, 2, 2, 2, 1206, 1209, 3, 2, 2, 2, 1207, 1208, 7, 101, 2, 2, 1208, 1210, 5, 98, 50, 2, 1209, 1207, 3, 2, 2, 2, 1209, 1210, 3, 2, 2, 2, 1210, 1220, 3, 2, 2, 2, 1211, 1212, 7, 244, 2, 2, 1212, 1217, 5, 56, 29, 2, 1213, 1214, 7, 5, 2, 2, 1214, 1216, 5, 56, 29, 2, 1215, 1213, 3, 2, 2, 2, 1216, 1219, 3, 2, 2, 2, 1217, 1215, 3, 2, 2, 2, 1217, 1218, 3, 2, 2, 2, 1218, 1221, 3, 2, 2, 2, 1219, 1217, 3, 2, 2, 2, 1220, 1211, 3, 2, 2, 2, 1220, 1221, 3, 2, 2, 2, 1221, 49, 3, 2, 2, 2, 1222, 1224, 5, 62, 32, 2, 1223, 1222, 3, 2, 2, 2, 1223, 1224, 3, 2, 2, 2, 1224, 1225, 3, 2, 2, 2, 1225, 1230, 5, 52, 27, 2, 1226, 1227, 7, 5, 2, 2, 1227, 1229, 5, 52, 27, 2, 1228, 1226, 3, 2, 2, 2, 1229, 1232, 3, 2, 2, 2, 1230, 1228, 3, 2, 2, 2, 1230, 1231, 3, 2, 2, 2, 1231, 51, 3, 2, 2, 2, 1232, 1230, 3, 2, 2, 2, 1233, 1274, 5, 54, 28, 2, 1234, 1235, 7, 193, 2, 2, 1235, 1244, 7, 3, 2, 2, 1236, 1241, 5, 96, 49, 2, 1237, 1238, 7, 5, 2, 2, 1238, 1240, 5, 96, 49, 2, 1239, 1237, 3, 2, 2, 2, 1240, 1243, 3, 2, 2, 2, 1241, 1239, 3, 2, 2, 2, 1241, 1242, 3, 2, 2, 2, 1242, 1245, 3, 2, 2, 2, 1243, 1241, 3, 2, 2, 2, 1244, 1236, 3, 2, 2, 2, 1244, 1245, 3, 2, 2, 2, 1245, 1246, 3, 2, 2, 2, 1246, 1274, 7, 4, 2, 2, 1247, 1248, 7, 48, 2, 2, 1248, 1257, 7, 3, 2, 2, 1249, 1254, 5, 96, 49, 2, 1250, 1251, 7, 5, 2, 2, 1251, 1253, 5, 96, 49, 2, 1252, 1250, 3, 2, 2, 2, 1253, 1256, 3, 2, 2, 2, 1254, 1252, 3, 2, 2, 2, 1254, 1255, 3, 2, 2, 2, 1255, 1258, 3, 2, 2, 2, 1256, 1254, 3, 2, 2, 2, 1257, 1249, 3, 2, 2, 2, 1257, 1258, 3, 2, 2, 2, 1258, 1259, 3, 2, 2, 2, 1259, 1274, 7, 4, 2, 2, 1260, 1261, 7, 99, 2, 2, 1261, 1262, 7, 206, 2, 2, 1262, 1263, 7, 3, 2, 2, 1263, 1268, 5, 54, 28, 2, 1264, 1265, 7, 5, 2, 2, 1265, 1267, 5, 54, 28, 2, 1266, 1264, 3, 2, 2, 2, 1267, 1270, 3, 2, 2, 2, 1268, 1266, 3, 2, 2, 2, 1268, 1269, 3, 2, 2, 2, 1269, 1271, 3, 2, 2, 2, 1270, 1268, 3, 2, 2, 2, 1271, 1272, 7, 4, 2, 2, 1272, 1274, 3, 2, 2, 2, 1273, 1233, 3, 2, 2, 2, 1273, 1234, 3, 2, 2, 2, 1273, 1247, 3, 2, 2, 2, 1273, 1260, 3, 2, 2, 2, 1274, 53, 3, 2, 2, 2, 1275, 1284, 7, 3, 2, 2, 1276, 1281, 5, 96, 49, 2, 1277, 1278, 7, 5, 2, 2, 1278, 1280, 5, 96, 49, 2, 1279, 1277, 3, 2, 2, 2, 1280, 1283, 3, 2, 2, 2, 1281, 1279, 3, 2, 2, 2, 1281, 1282, 3, 2, 2, 2, 1282, 1285, 3, 2, 2, 2, 1283, 1281, 3, 2, 2, 2, 1284, 1276, 3, 2, 2, 2, 1284, 1285, 3, 2, 2, 2, 1285, 1286, 3, 2, 2, 2, 1286, 1289, 7, 4, 2, 2, 1287, 1289, 5, 96, 49, 2, 1288, 1275, 3, 2, 2, 2, 1288, 1287, 3, 2, 2, 2, 1289, 55, 3, 2, 2, 2, 1290, 1291, 5, 202, 102, 2, 1291, 1292, 7, 28, 2, 2, 1292, 1293, 7, 3, 2, 2, 1293, 1294, 5, 58, 30, 2, 1294, 1295, 7, 4, 2, 2, 1295, 57, 3, 2, 2, 2, 1296, 1298, 5, 202, 102, 2, 1297, 1296, 3, 2, 2, 2, 1297, 1298, 3, 2, 2, 2, 1298, 1309, 3, 2, 2, 2, 1299, 1300, 7, 165, 2, 2, 1300, 1301, 7, 34, 2, 2, 1301, 1306, 5, 96, 49, 2, 1302, 1303, 7, 5, 2, 2, 1303, 1305, 5, 96, 49, 2, 1304, 1302, 3, 2, 2, 2, 1305, 1308, 3, 2, 2, 2, 1306, 1304, 3, 2, 2, 2, 1306, 1307, 3, 2, 2, 2, 1307, 1310, 3, 2, 2, 2, 1308, 1306, 3, 2, 2, 2, 1309, 1299, 3, 2, 2, 2, 1309, 1310, 3, 2, 2, 2, 1310, 1321, 3, 2, 2, 2, 1311, 1312, 7, 160, 2, 2, 1312, 1313, 7, 34, 2, 2, 1313, 1318, 5, 46, 24, 2, 1314, 1315, 7, 5, 2, 2, 1315, 1317, 5, 46, 24, 2, 1316, 1314, 3, 2, 2, 2, 1317, 1320, 3, 2, 2, 2, 1318, 1316, 3, 2, 2, 2, 1318, 1319, 3, 2, 2, 2, 1319, 1322, 3, 2, 2, 2, 1320, 1318, 3, 2, 2, 2, 1321, 1311, 3, 2, 2, 2, 1321, 1322, 3, 2, 2, 2, 1322, 1324, 3, 2, 2, 2, 1323, 1325, 5, 140, 71, 2, 1324, 1323, 3, 2, 2, 2, 1324, 1325, 3, 2, 2, 2, 1325, 59, 3, 2, 2, 2, 1326, 1328, 5, 202, 102, 2, 1327, 1329, 5, 92, 47, 2, 1328, 1327, 3, 2, 2, 2, 1328, 1329, 3, 2, 2, 2, 1329, 1330, 3, 2, 2, 2, 1330, 1331, 7, 28, 2, 2, 1331, 1332, 7, 3, 2, 2, 1332, 1333, 5, 18, 10, 2, 1333, 1334, 7, 4, 2, 2, 1334, 61, 3, 2, 2, 2, 1335, 1336, 9, 12, 2, 2, 1336, 63, 3, 2, 2, 2, 1337, 1342, 5, 96, 49, 2, 1338, 1340, 7, 28, 2, 2, 1339, 1338, 3, 2, 2, 2, 1339, 1340, 3, 2, 2, 2, 1340, 1341, 3, 2, 2, 2, 1341, 1343, 5, 202, 102, 2, 1342, 1339, 3, 2, 2, 2, 1342, 1343, 3, 2, 2, 2, 1343, 1353, 3, 2, 2, 2, 1344, 1345, 5, 104, 53, 2, 1345, 1346, 7, 6, 2, 2, 1346, 1349, 7, 259, 2, 2, 1347, 1348, 7, 28, 2, 2, 1348, 1350, 5, 92, 47, 2, 1349, 1347, 3, 2, 2, 2, 1349, 1350, 3, 2, 2, 2, 1350, 1353, 3, 2, 2, 2, 1351, 1353, 7, 259, 2, 2, 1352, 1337, 3, 2, 2, 2, 1352, 1344, 3, 2, 2, 2, 1352, 1351, 3, 2, 2, 2, 1353, 65, 3, 2, 2, 2, 1354, 1355, 8, 34, 1, 2, 1355, 1356, 5, 72, 37, 2, 1356, 1375, 3, 2, 2, 2, 1357, 1371, 12, 4, 2, 2, 1358, 1359, 7, 47, 2, 2, 1359, 1360, 7, 118, 2, 2, 1360, 1372, 5, 72, 37, 2, 1361, 1362, 5, 68, 35, 2, 1362, 1363, 7, 118, 2, 2, 1363, 1364, 5, 66, 34, 2, 1364, 1365, 5, 70, 36, 2, 1365, 1372, 3, 2, 2, 2, 1366, 1367, 7, 140, 2, 2, 1367, 1368, 5, 68, 35, 2, 1368, 1369, 7, 118, 2, 2, 1369, 1370, 5, 72, 37, 2, 1370, 1372, 3, 2, 2, 2, 1371, 1358, 3, 2, 2, 2, 1371, 1361, 3, 2, 2, 2, 1371, 1366, 3, 2, 2, 2, 1372, 1374, 3, 2, 2, 2, 1373, 1357, 3, 2, 2, 2, 1374, 1377, 3, 2, 2, 2, 1375, 1373, 3, 2, 2, 2, 1375, 1376, 3, 2, 2, 2, 1376, 67, 3, 2, 2, 2, 1377, 1375, 3, 2, 2, 2, 1378, 1380, 7, 108, 2, 2, 1379, 1378, 3, 2, 2, 2, 1379, 1380, 3, 2, 2, 2, 1380, 1394, 3, 2, 2, 2, 1381, 1383, 7, 122, 2, 2, 1382, 1384, 7, 162, 2, 2, 1383, 1382, 3, 2, 2, 2, 1383, 1384, 3, 2, 2, 2, 1384, 1394, 3, 2, 2, 2, 1385, 1387, 7, 189, 2, 2, 1386, 1388, 7, 162, 2, 2, 1387, 1386, 3, 2, 2, 2, 1387, 1388, 3, 2, 2, 2, 1388, 1394, 3, 2, 2, 2, 1389, 1391, 7, 91, 2, 2, 1390, 1392, 7, 162, 2, 2, 1391, 1390, 3, 2, 2, 2, 1391, 1392, 3, 2, 2, 2, 1392, 1394, 3, 2, 2, 2, 1393, 1379, 3, 2, 2, 2, 1393, 1381, 3, 2, 2, 2, 1393, 1385, 3, 2, 2, 2, 1393, 1389, 3, 2, 2, 2, 1394, 69, 3, 2, 2, 2, 1395, 1396, 7, 155, 2, 2, 1396, 1410, 5, 98, 50, 2, 1397, 1398, 7, 237, 2, 2, 1398, 1399, 7, 3, 2, 2, 1399, 1404, 5, 202, 102, 2, 1400, 1401, 7, 5, 2, 2, 1401, 1403, 5, 202, 102, 2, 1402, 1400, 3, 2, 2, 2, 1403, 1406, 3, 2, 2, 2, 1404, 1402, 3, 2, 2, 2, 1404, 1405, 3, 2, 2, 2, 1405, 1407, 3, 2, 2, 2, 1406, 1404, 3, 2, 2, 2, 1407, 1408, 7, 4, 2, 2, 1408, 1410, 3, 2, 2, 2, 1409, 1395, 3, 2, 2, 2, 1409, 1397, 3, 2, 2, 2, 1410, 71, 3, 2, 2, 2, 1411, 1418, 5, 76, 39, 2, 1412, 1413, 7, 216, 2, 2, 1413, 1414, 5, 74, 38, 2, 1414, 1415, 7, 3, 2, 2, 1415, 1416, 5, 96, 49, 2, 1416, 1417, 7, 4, 2, 2, 1417, 1419, 3, 2, 2, 2, 1418, 1412, 3, 2, 2, 2, 1418, 1419, 3, 2, 2, 2, 1419, 73, 3, 2, 2, 2, 1420, 1421, 9, 13, 2, 2, 1421, 75, 3, 2, 2, 2, 1422, 1505, 5, 90, 46, 2, 1423, 1424, 7, 134, 2, 2, 1424, 1435, 7, 3, 2, 2, 1425, 1426, 7, 165, 2, 2, 1426, 1427, 7, 34, 2, 2, 1427, 1432, 5, 96, 49, 2, 1428, 1429, 7, 5, 2, 2, 1429, 1431, 5, 96, 49, 2, 1430, 1428, 3, 2, 2, 2, 1431, 1434, 3, 2, 2, 2, 1432, 1430, 3, 2, 2, 2, 1432, 1433, 3, 2, 2, 2, 1433, 1436, 3, 2, 2, 2, 1434, 1432, 3, 2, 2, 2, 1435, 1425, 3, 2, 2, 2, 1435, 1436, 3, 2, 2, 2, 1436, 1447, 3, 2, 2, 2, 1437, 1438, 7, 160, 2, 2, 1438, 1439, 7, 34, 2, 2, 1439, 1444, 5, 46, 24, 2, 1440, 1441, 7, 5, 2, 2, 1441, 1443, 5, 46, 24, 2, 1442, 1440, 3, 2, 2, 2, 1443, 1446, 3, 2, 2, 2, 1444, 1442, 3, 2, 2, 2, 1444, 1445, 3, 2, 2, 2, 1445, 1448, 3, 2, 2, 2, 1446, 1444, 3, 2, 2, 2, 1447, 1437, 3, 2, 2, 2, 1447, 1448, 3, 2, 2, 2, 1448, 1458, 3, 2, 2, 2, 1449, 1450, 7, 136, 2, 2, 1450, 1455, 5, 78, 40, 2, 1451, 1452, 7, 5, 2, 2, 1452, 1454, 5, 78, 40, 2, 1453, 1451, 3, 2, 2, 2, 1454, 1457, 3, 2, 2, 2, 1455, 1453, 3, 2, 2, 2, 1455, 1456, 3, 2, 2, 2, 1456, 1459, 3, 2, 2, 2, 1457, 1455, 3, 2, 2, 2, 1458, 1449, 3, 2, 2, 2, 1458, 1459, 3, 2, 2, 2, 1459, 1461, 3, 2, 2, 2, 1460, 1462, 5, 80, 41, 2, 1461, 1460, 3, 2, 2, 2, 1461, 1462, 3, 2, 2, 2, 1462, 1466, 3, 2, 2, 2, 1463, 1464, 7, 21, 2, 2, 1464, 1465, 7, 131, 2, 2, 1465, 1467, 5, 84, 43, 2, 1466, 1463, 3, 2, 2, 2, 1466, 1467, 3, 2, 2, 2, 1467, 1469, 3, 2, 2, 2, 1468, 1470, 9, 14, 2, 2, 1469, 1468, 3, 2, 2, 2, 1469, 1470, 3, 2, 2, 2, 1470, 1471, 3, 2, 2, 2, 1471, 1472, 7, 169, 2, 2, 1472, 1473, 7, 3, 2, 2, 1473, 1474, 5, 146, 74, 2, 1474, 1484, 7, 4, 2, 2, 1475, 1476, 7, 211, 2, 2, 1476, 1481, 5, 86, 44, 2, 1477, 1478, 7, 5, 2, 2, 1478, 1480, 5, 86, 44, 2, 1479, 1477, 3, 2, 2, 2, 1480, 1483, 3, 2, 2, 2, 1481, 1479, 3, 2, 2, 2, 1481, 1482, 3, 2, 2, 2, 1482, 1485, 3, 2, 2, 2, 1483, 1481, 3, 2, 2, 2, 1484, 1475, 3, 2, 2, 2, 1484, 1485, 3, 2, 2, 2, 1485, 1486, 3, 2, 2, 2, 1486, 1487, 7, 67, 2, 2, 1487, 1492, 5, 88, 45, 2, 1488, 1489, 7, 5, 2, 2, 1489, 1491, 5, 88, 45, 2, 1490, 1488, 3, 2, 2, 2, 1491, 1494, 3, 2, 2, 2, 1492, 1490, 3, 2, 2, 2, 1492, 1493, 3, 2, 2, 2, 1493, 1495, 3, 2, 2, 2, 1494, 1492, 3, 2, 2, 2, 1495, 1503, 7, 4, 2, 2, 1496, 1498, 7, 28, 2, 2, 1497, 1496, 3, 2, 2, 2, 1497, 1498, 3, 2, 2, 2, 1498, 1499, 3, 2, 2, 2, 1499, 1501, 5, 202, 102, 2, 1500, 1502, 5, 92, 47, 2, 1501, 1500, 3, 2, 2, 2, 1501, 1502, 3, 2, 2, 2, 1502, 1504, 3, 2, 2, 2, 1503, 1497, 3, 2, 2, 2, 1503, 1504, 3, 2, 2, 2, 1504, 1506, 3, 2, 2, 2, 1505, 1423, 3, 2, 2, 2, 1505, 1506, 3, 2, 2, 2, 1506, 77, 3, 2, 2, 2, 1507, 1508, 5, 96, 49, 2, 1508, 1509, 7, 28, 2, 2, 1509, 1510, 5, 202, 102, 2, 1510, 79, 3, 2, 2, 2, 1511, 1512, 7, 156, 2, 2, 1512, 1513, 7, 194, 2, 2, 1513, 1514, 7, 170, 2, 2, 1514, 1523, 7, 131, 2, 2, 1515, 1516, 7, 22, 2, 2, 1516, 1517, 7, 195, 2, 2, 1517, 1518, 7, 170, 2, 2, 1518, 1520, 7, 131, 2, 2, 1519, 1521, 5, 82, 42, 2, 1520, 1519, 3, 2, 2, 2, 1520, 1521, 3, 2, 2, 2, 1521, 1523, 3, 2, 2, 2, 1522, 1511, 3, 2, 2, 2, 1522, 1515, 3, 2, 2, 2, 1523, 81, 3, 2, 2, 2, 1524, 1525, 7, 207, 2, 2, 1525, 1526, 7, 73, 2, 2, 1526, 1534, 7, 133, 2, 2, 1527, 1528, 7, 154, 2, 2, 1528, 1529, 7, 73, 2, 2, 1529, 1534, 7, 133, 2, 2, 1530, 1531, 7, 245, 2, 2, 1531, 1532, 7, 232, 2, 2, 1532, 1534, 7, 195, 2, 2, 1533, 1524, 3, 2, 2, 2, 1533, 1527, 3, 2, 2, 2, 1533, 1530, 3, 2, 2, 2, 1534, 83, 3, 2, 2, 2, 1535, 1536, 7, 7, 2, 2, 1536, 1537, 7, 222, 2, 2, 1537, 1538, 7, 141, 2, 2, 1538, 1555, 7, 194, 2, 2, 1539, 1540, 7, 7, 2, 2, 1540, 1541, 7, 167, 2, 2, 1541, 1542, 7, 120, 2, 2, 1542, 1555, 7, 194, 2, 2, 1543, 1544, 7, 7, 2, 2, 1544, 1545, 7, 222, 2, 2, 1545, 1546, 7, 86, 2, 2, 1546, 1555, 5, 202, 102, 2, 1547, 1548, 7, 7, 2, 2, 1548, 1549, 7, 222, 2, 2, 1549, 1550, 7, 120, 2, 2, 1550, 1555, 5, 202, 102, 2, 1551, 1552, 7, 7, 2, 2, 1552, 1553, 7, 222, 2, 2, 1553, 1555, 5, 202, 102, 2, 1554, 1535, 3, 2, 2, 2, 1554, 1539, 3, 2, 2, 2, 1554, 1543, 3, 2, 2, 2, 1554, 1547, 3, 2, 2, 2, 1554, 1551, 3, 2, 2, 2, 1555, 85, 3, 2, 2, 2, 1556, 1557, 5, 202, 102, 2, 1557, 1558, 7, 251, 2, 2, 1558, 1559, 7, 3, 2, 2, 1559, 1564, 5, 202, 102, 2, 1560, 1561, 7, 5, 2, 2, 1561, 1563, 5, 202, 102, 2, 1562, 1560, 3, 2, 2, 2, 1563, 1566, 3, 2, 2, 2, 1564, 1562, 3, 2, 2, 2, 1564, 1565, 3, 2, 2, 2, 1565, 1567, 3, 2, 2, 2, 1566, 1564, 3, 2, 2, 2, 1567, 1568, 7, 4, 2, 2, 1568, 87, 3, 2, 2, 2, 1569, 1570, 5, 202, 102, 2, 1570, 1571, 7, 28, 2, 2, 1571, 1572, 5, 96, 49, 2, 1572, 89, 3, 2, 2, 2, 1573, 1581, 5, 94, 48, 2, 1574, 1576, 7, 28, 2, 2, 1575, 1574, 3, 2, 2, 2, 1575, 1576, 3, 2, 2, 2, 1576, 1577, 3, 2, 2, 2, 1577, 1579, 5, 202, 102, 2, 1578, 1580, 5, 92, 47, 2, 1579, 1578, 3, 2, 2, 2, 1579, 1580, 3, 2, 2, 2, 1580, 1582, 3, 2, 2, 2, 1581, 1575, 3, 2, 2, 2, 1581, 1582, 3, 2, 2, 2, 1582, 91, 3, 2, 2, 2, 1583, 1584, 7, 3, 2, 2, 1584, 1589, 5, 202, 102, 2, 1585, 1586, 7, 5, 2, 2, 1586, 1588, 5, 202, 102, 2, 1587, 1585, 3, 2, 2, 2, 1588, 1591, 3, 2, 2, 2, 1589, 1587, 3, 2, 2, 2, 1589, 1590, 3, 2, 2, 2, 1590, 1592, 3, 2, 2, 2, 1591, 1589, 3, 2, 2, 2, 1592, 1593, 7, 4, 2, 2, 1593, 93, 3, 2, 2, 2, 1594, 1624, 5, 168, 85, 2, 1595, 1596, 7, 3, 2, 2, 1596, 1597, 5, 18, 10, 2, 1597, 1598, 7, 4, 2, 2, 1598, 1624, 3, 2, 2, 2, 1599, 1600, 7, 233, 2, 2, 1600, 1601, 7, 3, 2, 2, 1601, 1606, 5, 96, 49, 2, 1602, 1603, 7, 5, 2, 2, 1603, 1605, 5, 96, 49, 2, 1604, 1602, 3, 2, 2, 2, 1605, 1608, 3, 2, 2, 2, 1606, 1604, 3, 2, 2, 2, 1606, 1607, 3, 2, 2, 2, 1607, 1609, 3, 2, 2, 2, 1608, 1606, 3, 2, 2, 2, 1609, 1612, 7, 4, 2, 2, 1610, 1611, 7, 245, 2, 2, 1611, 1613, 7, 161, 2, 2, 1612, 1610, 3, 2, 2, 2, 1612, 1613, 3, 2, 2, 2, 1613, 1624, 3, 2, 2, 2, 1614, 1615, 7, 121, 2, 2, 1615, 1616, 7, 3, 2, 2, 1616, 1617, 5, 18, 10, 2, 1617, 1618, 7, 4, 2, 2, 1618, 1624, 3, 2, 2, 2, 1619, 1620, 7, 3, 2, 2, 1620, 1621, 5, 66, 34, 2, 1621, 1622, 7, 4, 2, 2, 1622, 1624, 3, 2, 2, 2, 1623, 1594, 3, 2, 2, 2, 1623, 1595, 3, 2, 2, 2, 1623, 1599, 3, 2, 2, 2, 1623, 1614, 3, 2, 2, 2, 1623, 1619, 3, 2, 2, 2, 1624, 95, 3, 2, 2, 2, 1625, 1626, 5, 98, 50, 2, 1626, 97, 3, 2, 2, 2, 1627, 1628, 8, 50, 1, 2, 1628, 1630, 5, 102, 52, 2, 1629, 1631, 5, 100, 51, 2, 1630, 1629, 3, 2, 2, 2, 1630, 1631, 3, 2, 2, 2, 1631, 1635, 3, 2, 2, 2, 1632, 1633, 7, 149, 2, 2, 1633, 1635, 5, 98, 50, 5, 1634, 1627, 3, 2, 2, 2, 1634, 1632, 3, 2, 2, 2, 1635, 1644, 3, 2, 2, 2, 1636, 1637, 12, 4, 2, 2, 1637, 1638, 7, 25, 2, 2, 1638, 1643, 5, 98, 50, 5, 1639, 1640, 12, 3, 2, 2, 1640, 1641, 7, 159, 2, 2, 1641, 1643, 5, 98, 50, 4, 1642, 1636, 3, 2, 2, 2, 1642, 1639, 3, 2, 2, 2, 1643, 1646, 3, 2, 2, 2, 1644, 1642, 3, 2, 2, 2, 1644, 1645, 3, 2, 2, 2, 1645, 99, 3, 2, 2, 2, 1646, 1644, 3, 2, 2, 2, 1647, 1648, 5, 114, 58, 2, 1648, 1649, 5, 102, 52, 2, 1649, 1709, 3, 2, 2, 2, 1650, 1651, 5, 114, 58, 2, 1651, 1652, 5, 116, 59, 2, 1652, 1653, 7, 3, 2, 2, 1653, 1654, 5, 18, 10, 2, 1654, 1655, 7, 4, 2, 2, 1655, 1709, 3, 2, 2, 2, 1656, 1658, 7, 149, 2, 2, 1657, 1656, 3, 2, 2, 2, 1657, 1658, 3, 2, 2, 2, 1658, 1659, 3, 2, 2, 2, 1659, 1660, 7, 33, 2, 2, 1660, 1661, 5, 102, 52, 2, 1661, 1662, 7, 25, 2, 2, 1662, 1663, 5, 102, 52, 2, 1663, 1709, 3, 2, 2, 2, 1664, 1666, 7, 149, 2, 2, 1665, 1664, 3, 2, 2, 2, 1665, 1666, 3, 2, 2, 2, 1666, 1667, 3, 2, 2, 2, 1667, 1668, 7, 105, 2, 2, 1668, 1669, 7, 3, 2, 2, 1669, 1674, 5, 96, 49, 2, 1670, 1671, 7, 5, 2, 2, 1671, 1673, 5, 96, 49, 2, 1672, 1670, 3, 2, 2, 2, 1673, 1676, 3, 2, 2, 2, 1674, 1672, 3, 2, 2, 2, 1674, 1675, 3, 2, 2, 2, 1675, 1677, 3, 2, 2, 2, 1676, 1674, 3, 2, 2, 2, 1677, 1678, 7, 4, 2, 2, 1678, 1709, 3, 2, 2, 2, 1679, 1681, 7, 149, 2, 2, 1680, 1679, 3, 2, 2, 2, 1680, 1681, 3, 2, 2, 2, 1681, 1682, 3, 2, 2, 2, 1682, 1683, 7, 105, 2, 2, 1683, 1684, 7, 3, 2, 2, 1684, 1685, 5, 18, 10, 2, 1685, 1686, 7, 4, 2, 2, 1686, 1709, 3, 2, 2, 2, 1687, 1689, 7, 149, 2, 2, 1688, 1687, 3, 2, 2, 2, 1688, 1689, 3, 2, 2, 2, 1689, 1690, 3, 2, 2, 2, 1690, 1691, 7, 124, 2, 2, 1691, 1694, 5, 102, 52, 2, 1692, 1693, 7, 75, 2, 2, 1693, 1695, 5, 102, 52, 2, 1694, 1692, 3, 2, 2, 2, 1694, 1695, 3, 2, 2, 2, 1695, 1709, 3, 2, 2, 2, 1696, 1698, 7, 116, 2, 2, 1697, 1699, 7, 149, 2, 2, 1698, 1697, 3, 2, 2, 2, 1698, 1699, 3, 2, 2, 2, 1699, 1700, 3, 2, 2, 2, 1700, 1709, 7, 150, 2, 2, 1701, 1703, 7, 116, 2, 2, 1702, 1704, 7, 149, 2, 2, 1703, 1702, 3, 2, 2, 2, 1703, 1704, 3, 2, 2, 2, 1704, 1705, 3, 2, 2, 2, 1705, 1706, 7, 68, 2, 2, 1706, 1707, 7, 90, 2, 2, 1707, 1709, 5, 102, 52, 2, 1708, 1647, 3, 2, 2, 2, 1708, 1650, 3, 2, 2, 2, 1708, 1657, 3, 2, 2, 2, 1708, 1665, 3, 2, 2, 2, 1708, 1680, 3, 2, 2, 2, 1708, 1688, 3, 2, 2, 2, 1708, 1696, 3, 2, 2, 2, 1708, 1701, 3, 2, 2, 2, 1709, 101, 3, 2, 2, 2, 1710, 1711, 8, 52, 1, 2, 1711, 1715, 5, 104, 53, 2, 1712, 1713, 9, 15, 2, 2, 1713, 1715, 5, 102, 52, 6, 1714, 1710, 3, 2, 2, 2, 1714, 1712, 3, 2, 2, 2, 1715, 1730, 3, 2, 2, 2, 1716, 1717, 12, 5, 2, 2, 1717, 1718, 9, 16, 2, 2, 1718, 1729, 5, 102, 52, 6, 1719, 1720, 12, 4, 2, 2, 1720, 1721, 9, 15, 2, 2, 1721, 1729, 5, 102, 52, 5, 1722, 1723, 12, 3, 2, 2, 1723, 1724, 7, 262, 2, 2, 1724, 1729, 5, 102, 52, 4, 1725, 1726, 12, 7, 2, 2, 1726, 1727, 7, 30, 2, 2, 1727, 1729, 5, 112, 57, 2, 1728, 1716, 3, 2, 2, 2, 1728, 1719, 3, 2, 2, 2, 1728, 1722, 3, 2, 2, 2, 1728, 1725, 3, 2, 2, 2, 1729, 1732, 3, 2, 2, 2, 1730, 1728, 3, 2, 2, 2, 1730, 1731, 3, 2, 2, 2, 1731, 103, 3, 2, 2, 2, 1732, 1730, 3, 2, 2, 2, 1733, 1734, 8, 53, 1, 2, 1734, 1983, 7, 150, 2, 2, 1735, 1983, 5, 120, 61, 2, 1736, 1737, 5, 202, 102, 2, 1737, 1738, 5, 110, 56, 2, 1738, 1983, 3, 2, 2, 2, 1739, 1740, 7, 70, 2, 2, 1740, 1741, 7, 174, 2, 2, 1741, 1983, 5, 110, 56, 2, 1742, 1983, 5, 204, 103, 2, 1743, 1983, 5, 118, 60, 2, 1744, 1983, 5, 110, 56, 2, 1745, 1983, 7, 266, 2, 2, 1746, 1983, 7, 263, 2, 2, 1747, 1748, 7, 172, 2, 2, 1748, 1749, 7, 3, 2, 2, 1749, 1750, 5, 102, 52, 2, 1750, 1751, 7, 105, 2, 2, 1751, 1752, 5, 102, 52, 2, 1752, 1753, 7, 4, 2, 2, 1753, 1983, 3, 2, 2, 2, 1754, 1755, 7, 3, 2, 2, 1755, 1758, 5, 96, 49, 2, 1756, 1757, 7, 5, 2, 2, 1757, 1759, 5, 96, 49, 2, 1758, 1756, 3, 2, 2, 2, 1759, 1760, 3, 2, 2, 2, 1760, 1758, 3, 2, 2, 2, 1760, 1761, 3, 2, 2, 2, 1761, 1762, 3, 2, 2, 2, 1762, 1763, 7, 4, 2, 2, 1763, 1983, 3, 2, 2, 2, 1764, 1765, 7, 194, 2, 2, 1765, 1766, 7, 3, 2, 2, 1766, 1771, 5, 96, 49, 2, 1767, 1768, 7, 5, 2, 2, 1768, 1770, 5, 96, 49, 2, 1769, 1767, 3, 2, 2, 2, 1770, 1773, 3, 2, 2, 2, 1771, 1769, 3, 2, 2, 2, 1771, 1772, 3, 2, 2, 2, 1772, 1774, 3, 2, 2, 2, 1773, 1771, 3, 2, 2, 2, 1774, 1775, 7, 4, 2, 2, 1775, 1983, 3, 2, 2, 2, 1776, 1777, 5, 192, 97, 2, 1777, 1778, 7, 3, 2, 2, 1778, 1779, 7, 259, 2, 2, 1779, 1781, 7, 4, 2, 2, 1780, 1782, 5, 134, 68, 2, 1781, 1780, 3, 2, 2, 2, 1781, 1782, 3, 2, 2, 2, 1782, 1784, 3, 2, 2, 2, 1783, 1785, 5, 138, 70, 2, 1784, 1783, 3, 2, 2, 2, 1784, 1785, 3, 2, 2, 2, 1785, 1983, 3, 2, 2, 2, 1786, 1788, 5, 106, 54, 2, 1787, 1786, 3, 2, 2, 2, 1787, 1788, 3, 2, 2, 2, 1788, 1789, 3, 2, 2, 2, 1789, 1790, 5, 192, 97, 2, 1790, 1802, 7, 3, 2, 2, 1791, 1793, 5, 62, 32, 2, 1792, 1791, 3, 2, 2, 2, 1792, 1793, 3, 2, 2, 2, 1793, 1794, 3, 2, 2, 2, 1794, 1799, 5, 96, 49, 2, 1795, 1796, 7, 5, 2, 2, 1796, 1798, 5, 96, 49, 2, 1797, 1795, 3, 2, 2, 2, 1798, 1801, 3, 2, 2, 2, 1799, 1797, 3, 2, 2, 2, 1799, 1800, 3, 2, 2, 2, 1800, 1803, 3, 2, 2, 2, 1801, 1799, 3, 2, 2, 2, 1802, 1792, 3, 2, 2, 2, 1802, 1803, 3, 2, 2, 2, 1803, 1814, 3, 2, 2, 2, 1804, 1805, 7, 160, 2, 2, 1805, 1806, 7, 34, 2, 2, 1806, 1811, 5, 46, 24, 2, 1807, 1808, 7, 5, 2, 2, 1808, 1810, 5, 46, 24, 2, 1809, 1807, 3, 2, 2, 2, 1810, 1813, 3, 2, 2, 2, 1811, 1809, 3, 2, 2, 2, 1811, 1812, 3, 2, 2, 2, 1812, 1815, 3, 2, 2, 2, 1813, 1811, 3, 2, 2, 2, 1814, 1804, 3, 2, 2, 2, 1814, 1815, 3, 2, 2, 2, 1815, 1816, 3, 2, 2, 2, 1816, 1818, 7, 4, 2, 2, 1817, 1819, 5, 134, 68, 2, 1818, 1817, 3, 2, 2, 2, 1818, 1819, 3, 2, 2, 2, 1819, 1824, 3, 2, 2, 2, 1820, 1822, 5, 108, 55, 2, 1821, 1820, 3, 2, 2, 2, 1821, 1822, 3, 2, 2, 2, 1822, 1823, 3, 2, 2, 2, 1823, 1825, 5, 138, 70, 2, 1824, 1821, 3, 2, 2, 2, 1824, 1825, 3, 2, 2, 2, 1825, 1983, 3, 2, 2, 2, 1826, 1827, 5, 202, 102, 2, 1827, 1828, 5, 138, 70, 2, 1828, 1983, 3, 2, 2, 2, 1829, 1830, 5, 202, 102, 2, 1830, 1831, 7, 8, 2, 2, 1831, 1832, 5, 96, 49, 2, 1832, 1983, 3, 2, 2, 2, 1833, 1842, 7, 3, 2, 2, 1834, 1839, 5, 202, 102, 2, 1835, 1836, 7, 5, 2, 2, 1836, 1838, 5, 202, 102, 2, 1837, 1835, 3, 2, 2, 2, 1838, 1841, 3, 2, 2, 2, 1839, 1837, 3, 2, 2, 2, 1839, 1840, 3, 2, 2, 2, 1840, 1843, 3, 2, 2, 2, 1841, 1839, 3, 2, 2, 2, 1842, 1834, 3, 2, 2, 2, 1842, 1843, 3, 2, 2, 2, 1843, 1844, 3, 2, 2, 2, 1844, 1845, 7, 4, 2, 2, 1845, 1846, 7, 8, 2, 2, 1846, 1983, 5, 96, 49, 2, 1847, 1848, 7, 3, 2, 2, 1848, 1849, 5, 18, 10, 2, 1849, 1850, 7, 4, 2, 2, 1850, 1983, 3, 2, 2, 2, 1851, 1852, 7, 79, 2, 2, 1852, 1853, 7, 3, 2, 2, 1853, 1854, 5, 18, 10, 2, 1854, 1855, 7, 4, 2, 2, 1855, 1983, 3, 2, 2, 2, 1856, 1857, 7, 37, 2, 2, 1857, 1859, 5, 96, 49, 2, 1858, 1860, 5, 132, 67, 2, 1859, 1858, 3, 2, 2, 2, 1860, 1861, 3, 2, 2, 2, 1861, 1859, 3, 2, 2, 2, 1861, 1862, 3, 2, 2, 2, 1862, 1865, 3, 2, 2, 2, 1863, 1864, 7, 72, 2, 2, 1864, 1866, 5, 96, 49, 2, 1865, 1863, 3, 2, 2, 2, 1865, 1866, 3, 2, 2, 2, 1866, 1867, 3, 2, 2, 2, 1867, 1868, 7, 74, 2, 2, 1868, 1983, 3, 2, 2, 2, 1869, 1871, 7, 37, 2, 2, 1870, 1872, 5, 132, 67, 2, 1871, 1870, 3, 2, 2, 2, 1872, 1873, 3, 2, 2, 2, 1873, 1871, 3, 2, 2, 2, 1873, 1874, 3, 2, 2, 2, 1874, 1877, 3, 2, 2, 2, 1875, 1876, 7, 72, 2, 2, 1876, 1878, 5, 96, 49, 2, 1877, 1875, 3, 2, 2, 2, 1877, 1878, 3, 2, 2, 2, 1878, 1879, 3, 2, 2, 2, 1879, 1880, 7, 74, 2, 2, 1880, 1983, 3, 2, 2, 2, 1881, 1882, 7, 38, 2, 2, 1882, 1883, 7, 3, 2, 2, 1883, 1884, 5, 96, 49, 2, 1884, 1885, 7, 28, 2, 2, 1885, 1886, 5, 126, 64, 2, 1886, 1887, 7, 4, 2, 2, 1887, 1983, 3, 2, 2, 2, 1888, 1889, 7, 226, 2, 2, 1889, 1890, 7, 3, 2, 2, 1890, 1891, 5, 96, 49, 2, 1891, 1892, 7, 28, 2, 2, 1892, 1893, 5, 126, 64, 2, 1893, 1894, 7, 4, 2, 2, 1894, 1983, 3, 2, 2, 2, 1895, 1896, 7, 27, 2, 2, 1896, 1905, 7, 9, 2, 2, 1897, 1902, 5, 96, 49, 2, 1898, 1899, 7, 5, 2, 2, 1899, 1901, 5, 96, 49, 2, 1900, 1898, 3, 2, 2, 2, 1901, 1904, 3, 2, 2, 2, 1902, 1900, 3, 2, 2, 2, 1902, 1903, 3, 2, 2, 2, 1903, 1906, 3, 2, 2, 2, 1904, 1902, 3, 2, 2, 2, 1905, 1897, 3, 2, 2, 2, 1905, 1906, 3, 2, 2, 2, 1906, 1907, 3, 2, 2, 2, 1907, 1983, 7, 10, 2, 2, 1908, 1983, 5, 202, 102, 2, 1909, 1983, 7, 51, 2, 2, 1910, 1914, 7, 55, 2, 2, 1911, 1912, 7, 3, 2, 2, 1912, 1913, 7, 267, 2, 2, 1913, 1915, 7, 4, 2, 2, 1914, 1911, 3, 2, 2, 2, 1914, 1915, 3, 2, 2, 2, 1915, 1983, 3, 2, 2, 2, 1916, 1920, 7, 56, 2, 2, 1917, 1918, 7, 3, 2, 2, 1918, 1919, 7, 267, 2, 2, 1919, 1921, 7, 4, 2, 2, 1920, 1917, 3, 2, 2, 2, 1920, 1921, 3, 2, 2, 2, 1921, 1983, 3, 2, 2, 2, 1922, 1926, 7, 127, 2, 2, 1923, 1924, 7, 3, 2, 2, 1924, 1925, 7, 267, 2, 2, 1925, 1927, 7, 4, 2, 2, 1926, 1923, 3, 2, 2, 2, 1926, 1927, 3, 2, 2, 2, 1927, 1983, 3, 2, 2, 2, 1928, 1932, 7, 128, 2, 2, 1929, 1930, 7, 3, 2, 2, 1930, 1931, 7, 267, 2, 2, 1931, 1933, 7, 4, 2, 2, 1932, 1929, 3, 2, 2, 2, 1932, 1933, 3, 2, 2, 2, 1933, 1983, 3, 2, 2, 2, 1934, 1983, 7, 57, 2, 2, 1935, 1983, 7, 50, 2, 2, 1936, 1983, 7, 54, 2, 2, 1937, 1983, 7, 52, 2, 2, 1938, 1939, 7, 212, 2, 2, 1939, 1940, 7, 3, 2, 2, 1940, 1941, 5, 102, 52, 2, 1941, 1942, 7, 90, 2, 2, 1942, 1945, 5, 102, 52, 2, 1943, 1944, 7, 88, 2, 2, 1944, 1946, 5, 102, 52, 2, 1945, 1943, 3, 2, 2, 2, 1945, 1946, 3, 2, 2, 2, 1946, 1947, 3, 2, 2, 2, 1947, 1948, 7, 4, 2, 2, 1948, 1983, 3, 2, 2, 2, 1949, 1950, 7, 148, 2, 2, 1950, 1951, 7, 3, 2, 2, 1951, 1954, 5, 102, 52, 2, 1952, 1953, 7, 5, 2, 2, 1953, 1955, 5, 124, 63, 2, 1954, 1952, 3, 2, 2, 2, 1954, 1955, 3, 2, 2, 2, 1955, 1956, 3, 2, 2, 2, 1956, 1957, 7, 4, 2, 2, 1957, 1983, 3, 2, 2, 2, 1958, 1959, 7, 81, 2, 2, 1959, 1960, 7, 3, 2, 2, 1960, 1961, 5, 202, 102, 2, 1961, 1962, 7, 90, 2, 2, 1962, 1963, 5, 102, 52, 2, 1963, 1964, 7, 4, 2, 2, 1964, 1983, 3, 2, 2, 2, 1965, 1966, 7, 3, 2, 2, 1966, 1967, 5, 96, 49, 2, 1967, 1968, 7, 4, 2, 2, 1968, 1983, 3, 2, 2, 2, 1969, 1970, 7, 99, 2, 2, 1970, 1979, 7, 3, 2, 2, 1971, 1976, 5, 194, 98, 2, 1972, 1973, 7, 5, 2, 2, 1973, 1975, 5, 194, 98, 2, 1974, 1972, 3, 2, 2, 2, 1975, 1978, 3, 2, 2, 2, 1976, 1974, 3, 2, 2, 2, 1976, 1977, 3, 2, 2, 2, 1977, 1980, 3, 2, 2, 2, 1978, 1976, 3, 2, 2, 2, 1979, 1971, 3, 2, 2, 2, 1979, 1980, 3, 2, 2, 2, 1980, 1981, 3, 2, 2, 2, 1981, 1983, 7, 4, 2, 2, 1982, 1733, 3, 2, 2, 2, 1982, 1735, 3, 2, 2, 2, 1982, 1736, 3, 2, 2, 2, 1982, 1739, 3, 2, 2, 2, 1982, 1742, 3, 2, 2, 2, 1982, 1743, 3, 2, 2, 2, 1982, 1744, 3, 2, 2, 2, 1982, 1745, 3, 2, 2, 2, 1982, 1746, 3, 2, 2, 2, 1982, 1747, 3, 2, 2, 2, 1982, 1754, 3, 2, 2, 2, 1982, 1764, 3, 2, 2, 2, 1982, 1776, 3, 2, 2, 2, 1982, 1787, 3, 2, 2, 2, 1982, 1826, 3, 2, 2, 2, 1982, 1829, 3, 2, 2, 2, 1982, 1833, 3, 2, 2, 2, 1982, 1847, 3, 2, 2, 2, 1982, 1851, 3, 2, 2, 2, 1982, 1856, 3, 2, 2, 2, 1982, 1869, 3, 2, 2, 2, 1982, 1881, 3, 2, 2, 2, 1982, 1888, 3, 2, 2, 2, 1982, 1895, 3, 2, 2, 2, 1982, 1908, 3, 2, 2, 2, 1982, 1909, 3, 2, 2, 2, 1982, 1910, 3, 2, 2, 2, 1982, 1916, 3, 2, 2, 2, 1982, 1922, 3, 2, 2, 2, 1982, 1928, 3, 2, 2, 2, 1982, 1934, 3, 2, 2, 2, 1982, 1935, 3, 2, 2, 2, 1982, 1936, 3, 2, 2, 2, 1982, 1937, 3, 2, 2, 2, 1982, 1938, 3, 2, 2, 2, 1982, 1949, 3, 2, 2, 2, 1982, 1958, 3, 2, 2, 2, 1982, 1965, 3, 2, 2, 2, 1982, 1969, 3, 2, 2, 2, 1983, 1994, 3, 2, 2, 2, 1984, 1985, 12, 19, 2, 2, 1985, 1986, 7, 9, 2, 2, 1986, 1987, 5, 102, 52, 2, 1987, 1988, 7, 10, 2, 2, 1988, 1993, 3, 2, 2, 2, 1989, 1990, 12, 17, 2, 2, 1990, 1991, 7, 6, 2, 2, 1991, 1993, 5, 202, 102, 2, 1992, 1984, 3, 2, 2, 2, 1992, 1989, 3, 2, 2, 2, 1993, 1996, 3, 2, 2, 2, 1994, 1992, 3, 2, 2, 2, 1994, 1995, 3, 2, 2, 2, 1995, 105, 3, 2, 2, 2, 1996, 1994, 3, 2, 2, 2, 1997, 1998, 9, 17, 2, 2, 1998, 107, 3, 2, 2, 2, 1999, 2000, 7, 104, 2, 2, 2000, 2004, 7, 152, 2, 2, 2001, 2002, 7, 186, 2, 2, 2002, 2004, 7, 152, 2, 2, 2003, 1999, 3, 2, 2, 2, 2003, 2001, 3, 2, 2, 2, 2004, 109, 3, 2, 2, 2, 2005, 2012, 7, 264, 2, 2, 2006, 2009, 7, 265, 2, 2, 2007, 2008, 7, 228, 2, 2, 2008, 2010, 7, 264, 2, 2, 2009, 2007, 3, 2, 2, 2, 2009, 2010, 3, 2, 2, 2, 2010, 2012, 3, 2, 2, 2, 2011, 2005, 3, 2, 2, 2, 2011, 2006, 3, 2, 2, 2, 2012, 111, 3, 2, 2, 2, 2013, 2014, 7, 220, 2, 2, 2014, 2015, 7, 250, 2, 2, 2015, 2020, 5, 120, 61, 2, 2016, 2017, 7, 220, 2, 2, 2017, 2018, 7, 250, 2, 2, 2018, 2020, 5, 110, 56, 2, 2019, 2013, 3, 2, 2, 2, 2019, 2016, 3, 2, 2, 2, 2020, 113, 3, 2, 2, 2, 2021, 2022, 9, 18, 2, 2, 2022, 115, 3, 2, 2, 2, 2023, 2024, 9, 19, 2, 2, 2024, 117, 3, 2, 2, 2, 2025, 2026, 9, 20, 2, 2, 2026, 119, 3, 2, 2, 2, 2027, 2029, 7, 112, 2, 2, 2028, 2030, 9, 15, 2, 2, 2029, 2028, 3, 2, 2, 2, 2029, 2030, 3, 2, 2, 2, 2030, 2031, 3, 2, 2, 2, 2031, 2032, 5, 110, 56, 2, 2032, 2035, 5, 122, 62, 2, 2033, 2034, 7, 222, 2, 2, 2034, 2036, 5, 122, 62, 2, 2035, 2033, 3, 2, 2, 2, 2035, 2036, 3, 2, 2, 2, 2036, 121, 3, 2, 2, 2, 2037, 2038, 9, 21, 2, 2, 2038, 123, 3, 2, 2, 2, 2039, 2040, 9, 22, 2, 2, 2040, 125, 3, 2, 2, 2, 2041, 2042, 8, 64, 1, 2, 2042, 2043, 7, 194, 2, 2, 2043, 2044, 7, 3, 2, 2, 2044, 2049, 5, 128, 65, 2, 2045, 2046, 7, 5, 2, 2, 2046, 2048, 5, 128, 65, 2, 2047, 2045, 3, 2, 2, 2, 2048, 2051, 3, 2, 2, 2, 2049, 2047, 3, 2, 2, 2, 2049, 2050, 3, 2, 2, 2, 2050, 2052, 3, 2, 2, 2, 2051, 2049, 3, 2, 2, 2, 2052, 2053, 7, 4, 2, 2, 2053, 2133, 3, 2, 2, 2, 2054, 2055, 7, 112, 2, 2, 2055, 2058, 5, 122, 62, 2, 2056, 2057, 7, 222, 2, 2, 2057, 2059, 5, 122, 62, 2, 2058, 2056, 3, 2, 2, 2, 2058, 2059, 3, 2, 2, 2, 2059, 2133, 3, 2, 2, 2, 2060, 2065, 7, 221, 2, 2, 2061, 2062, 7, 3, 2, 2, 2062, 2063, 5, 130, 66, 2, 2063, 2064, 7, 4, 2, 2, 2064, 2066, 3, 2, 2, 2, 2065, 2061, 3, 2, 2, 2, 2065, 2066, 3, 2, 2, 2, 2066, 2070, 3, 2, 2, 2, 2067, 2068, 7, 246, 2, 2, 2068, 2069, 7, 220, 2, 2, 2069, 2071, 7, 250, 2, 2, 2070, 2067, 3, 2, 2, 2, 2070, 2071, 3, 2, 2, 2, 2071, 2133, 3, 2, 2, 2, 2072, 2077, 7, 221, 2, 2, 2073, 2074, 7, 3, 2, 2, 2074, 2075, 5, 130, 66, 2, 2075, 2076, 7, 4, 2, 2, 2076, 2078, 3, 2, 2, 2, 2077, 2073, 3, 2, 2, 2, 2077, 2078, 3, 2, 2, 2, 2078, 2079, 3, 2, 2, 2, 2079, 2080, 7, 245, 2, 2, 2080, 2081, 7, 220, 2, 2, 2081, 2133, 7, 250, 2, 2, 2082, 2087, 7, 220, 2, 2, 2083, 2084, 7, 3, 2, 2, 2084, 2085, 5, 130, 66, 2, 2085, 2086, 7, 4, 2, 2, 2086, 2088, 3, 2, 2, 2, 2087, 2083, 3, 2, 2, 2, 2087, 2088, 3, 2, 2, 2, 2088, 2092, 3, 2, 2, 2, 2089, 2090, 7, 246, 2, 2, 2090, 2091, 7, 220, 2, 2, 2091, 2093, 7, 250, 2, 2, 2092, 2089, 3, 2, 2, 2, 2092, 2093, 3, 2, 2, 2, 2093, 2133, 3, 2, 2, 2, 2094, 2099, 7, 220, 2, 2, 2095, 2096, 7, 3, 2, 2, 2096, 2097, 5, 130, 66, 2, 2097, 2098, 7, 4, 2, 2, 2098, 2100, 3, 2, 2, 2, 2099, 2095, 3, 2, 2, 2, 2099, 2100, 3, 2, 2, 2, 2100, 2101, 3, 2, 2, 2, 2101, 2102, 7, 245, 2, 2, 2102, 2103, 7, 220, 2, 2, 2103, 2133, 7, 250, 2, 2, 2104, 2105, 7, 70, 2, 2, 2105, 2133, 7, 174, 2, 2, 2106, 2107, 7, 27, 2, 2, 2107, 2108, 7, 253, 2, 2, 2108, 2109, 5, 126, 64, 2, 2109, 2110, 7, 255, 2, 2, 2110, 2133, 3, 2, 2, 2, 2111, 2112, 7, 130, 2, 2, 2112, 2113, 7, 253, 2, 2, 2113, 2114, 5, 126, 64, 2, 2114, 2115, 7, 5, 2, 2, 2115, 2116, 5, 126, 64, 2, 2116, 2117, 7, 255, 2, 2, 2117, 2133, 3, 2, 2, 2, 2118, 2130, 5, 202, 102, 2, 2119, 2120, 7, 3, 2, 2, 2120, 2125, 5, 130, 66, 2, 2121, 2122, 7, 5, 2, 2, 2122, 2124, 5, 130, 66, 2, 2123, 2121, 3, 2, 2, 2, 2124, 2127, 3, 2, 2, 2, 2125, 2123, 3, 2, 2, 2, 2125, 2126, 3, 2, 2, 2, 2126, 2128, 3, 2, 2, 2, 2127, 2125, 3, 2, 2, 2, 2128, 2129, 7, 4, 2, 2, 2129, 2131, 3, 2, 2, 2, 2130, 2119, 3, 2, 2, 2, 2130, 2131, 3, 2, 2, 2, 2131, 2133, 3, 2, 2, 2, 2132, 2041, 3, 2, 2, 2, 2132, 2054, 3, 2, 2, 2, 2132, 2060, 3, 2, 2, 2, 2132, 2072, 3, 2, 2, 2, 2132, 2082, 3, 2, 2, 2, 2132, 2094, 3, 2, 2, 2, 2132, 2104, 3, 2, 2, 2, 2132, 2106, 3, 2, 2, 2, 2132, 2111, 3, 2, 2, 2, 2132, 2118, 3, 2, 2, 2, 2133, 2143, 3, 2, 2, 2, 2134, 2135, 12, 4, 2, 2, 2135, 2139, 7, 27, 2, 2, 2136, 2137, 7, 9, 2, 2, 2137, 2138, 7, 267, 2, 2, 2138, 2140, 7, 10, 2, 2, 2139, 2136, 3, 2, 2, 2, 2139, 2140, 3, 2, 2, 2, 2140, 2142, 3, 2, 2, 2, 2141, 2134, 3, 2, 2, 2, 2142, 2145, 3, 2, 2, 2, 2143, 2141, 3, 2, 2, 2, 2143, 2144, 3, 2, 2, 2, 2144, 127, 3, 2, 2, 2, 2145, 2143, 3, 2, 2, 2, 2146, 2151, 5, 126, 64, 2, 2147, 2148, 5, 202, 102, 2, 2148, 2149, 5, 126, 64, 2, 2149, 2151, 3, 2, 2, 2, 2150, 2146, 3, 2, 2, 2, 2150, 2147, 3, 2, 2, 2, 2151, 129, 3, 2, 2, 2, 2152, 2155, 7, 267, 2, 2, 2153, 2155, 5, 126, 64, 2, 2154, 2152, 3, 2, 2, 2, 2154, 2153, 3, 2, 2, 2, 2155, 131, 3, 2, 2, 2, 2156, 2157, 7, 242, 2, 2, 2157, 2158, 5, 96, 49, 2, 2158, 2159, 7, 218, 2, 2, 2159, 2160, 5, 96, 49, 2, 2160, 133, 3, 2, 2, 2, 2161, 2162, 7, 84, 2, 2, 2162, 2163, 7, 3, 2, 2, 2163, 2164, 7, 243, 2, 2, 2164, 2165, 5, 98, 50, 2, 2165, 2166, 7, 4, 2, 2, 2166, 135, 3, 2, 2, 2, 2167, 2168, 7, 242, 2, 2, 2168, 2171, 7, 132, 2, 2, 2169, 2170, 7, 25, 2, 2, 2170, 2172, 5, 96, 49, 2, 2171, 2169, 3, 2, 2, 2, 2171, 2172, 3, 2, 2, 2, 2172, 2173, 3, 2, 2, 2, 2173, 2174, 7, 218, 2, 2, 2174, 2175, 7, 234, 2, 2, 2175, 2176, 7, 205, 2, 2, 2176, 2177, 5, 202, 102, 2, 2177, 2178, 7, 251, 2, 2, 2178, 2186, 5, 96, 49, 2, 2179, 2180, 7, 5, 2, 2, 2180, 2181, 5, 202, 102, 2, 2181, 2182, 7, 251, 2, 2, 2182, 2183, 5, 96, 49, 2, 2183, 2185, 3, 2, 2, 2, 2184, 2179, 3, 2, 2, 2, 2185, 2188, 3, 2, 2, 2, 2186, 2184, 3, 2, 2, 2, 2186, 2187, 3, 2, 2, 2, 2187, 2232, 3, 2, 2, 2, 2188, 2186, 3, 2, 2, 2, 2189, 2190, 7, 242, 2, 2, 2190, 2193, 7, 132, 2, 2, 2191, 2192, 7, 25, 2, 2, 2192, 2194, 5, 96, 49, 2, 2193, 2191, 3, 2, 2, 2, 2193, 2194, 3, 2, 2, 2, 2194, 2195, 3, 2, 2, 2, 2195, 2196, 7, 218, 2, 2, 2196, 2232, 7, 64, 2, 2, 2197, 2198, 7, 242, 2, 2, 2198, 2199, 7, 149, 2, 2, 2199, 2202, 7, 132, 2, 2, 2200, 2201, 7, 25, 2, 2, 2201, 2203, 5, 96, 49, 2, 2202, 2200, 3, 2, 2, 2, 2202, 2203, 3, 2, 2, 2, 2203, 2204, 3, 2, 2, 2, 2204, 2205, 7, 218, 2, 2, 2205, 2217, 7, 110, 2, 2, 2206, 2207, 7, 3, 2, 2, 2207, 2212, 5, 202, 102, 2, 2208, 2209, 7, 5, 2, 2, 2209, 2211, 5, 202, 102, 2, 2210, 2208, 3, 2, 2, 2, 2211, 2214, 3, 2, 2, 2, 2212, 2210, 3, 2, 2, 2, 2212, 2213, 3, 2, 2, 2, 2213, 2215, 3, 2, 2, 2, 2214, 2212, 3, 2, 2, 2, 2215, 2216, 7, 4, 2, 2, 2216, 2218, 3, 2, 2, 2, 2217, 2206, 3, 2, 2, 2, 2217, 2218, 3, 2, 2, 2, 2218, 2219, 3, 2, 2, 2, 2219, 2220, 7, 239, 2, 2, 2220, 2221, 7, 3, 2, 2, 2221, 2226, 5, 96, 49, 2, 2222, 2223, 7, 5, 2, 2, 2223, 2225, 5, 96, 49, 2, 2224, 2222, 3, 2, 2, 2, 2225, 2228, 3, 2, 2, 2, 2226, 2224, 3, 2, 2, 2, 2226, 2227, 3, 2, 2, 2, 2227, 2229, 3, 2, 2, 2, 2228, 2226, 3, 2, 2, 2, 2229, 2230, 7, 4, 2, 2, 2230, 2232, 3, 2, 2, 2, 2231, 2167, 3, 2, 2, 2, 2231, 2189, 3, 2, 2, 2, 2231, 2197, 3, 2, 2, 2, 2232, 137, 3, 2, 2, 2, 2233, 2239, 7, 164, 2, 2, 2234, 2240, 5, 202, 102, 2, 2235, 2236, 7, 3, 2, 2, 2236, 2237, 5, 58, 30, 2, 2237, 2238, 7, 4, 2, 2, 2238, 2240, 3, 2, 2, 2, 2239, 2234, 3, 2, 2, 2, 2239, 2235, 3, 2, 2, 2, 2240, 139, 3, 2, 2, 2, 2241, 2242, 7, 136, 2, 2, 2242, 2247, 5, 78, 40, 2, 2243, 2244, 7, 5, 2, 2, 2244, 2246, 5, 78, 40, 2, 2245, 2243, 3, 2, 2, 2, 2246, 2249, 3, 2, 2, 2, 2247, 2245, 3, 2, 2, 2, 2247, 2248, 3, 2, 2, 2, 2248, 2251, 3, 2, 2, 2, 2249, 2247, 3, 2, 2, 2, 2250, 2241, 3, 2, 2, 2, 2250, 2251, 3, 2, 2, 2, 2251, 2252, 3, 2, 2, 2, 2252, 2256, 5, 142, 72, 2, 2253, 2254, 7, 21, 2, 2, 2254, 2255, 7, 131, 2, 2, 2255, 2257, 5, 84, 43, 2, 2256, 2253, 3, 2, 2, 2, 2256, 2257, 3, 2, 2, 2, 2257, 2259, 3, 2, 2, 2, 2258, 2260, 9, 14, 2, 2, 2259, 2258, 3, 2, 2, 2, 2259, 2260, 3, 2, 2, 2, 2260, 2266, 3, 2, 2, 2, 2261, 2262, 7, 169, 2, 2, 2262, 2263, 7, 3, 2, 2, 2263, 2264, 5, 146, 74, 2, 2264, 2265, 7, 4, 2, 2, 2265, 2267, 3, 2, 2, 2, 2266, 2261, 3, 2, 2, 2, 2266, 2267, 3, 2, 2, 2, 2267, 2277, 3, 2, 2, 2, 2268, 2269, 7, 211, 2, 2, 2269, 2274, 5, 86, 44, 2, 2270, 2271, 7, 5, 2, 2, 2271, 2273, 5, 86, 44, 2, 2272, 2270, 3, 2, 2, 2, 2273, 2276, 3, 2, 2, 2, 2274, 2272, 3, 2, 2, 2, 2274, 2275, 3, 2, 2, 2, 2275, 2278, 3, 2, 2, 2, 2276, 2274, 3, 2, 2, 2, 2277, 2268, 3, 2, 2, 2, 2277, 2278, 3, 2, 2, 2, 2278, 2288, 3, 2, 2, 2, 2279, 2280, 7, 67, 2, 2, 2280, 2285, 5, 88, 45, 2, 2281, 2282, 7, 5, 2, 2, 2282, 2284, 5, 88, 45, 2, 2283, 2281, 3, 2, 2, 2, 2284, 2287, 3, 2, 2, 2, 2285, 2283, 3, 2, 2, 2, 2285, 2286, 3, 2, 2, 2, 2286, 2289, 3, 2, 2, 2, 2287, 2285, 3, 2, 2, 2, 2288, 2279, 3, 2, 2, 2, 2288, 2289, 3, 2, 2, 2, 2289, 141, 3, 2, 2, 2, 2290, 2291, 7, 178, 2, 2, 2291, 2315, 5, 144, 73, 2, 2292, 2293, 7, 195, 2, 2, 2293, 2315, 5, 144, 73, 2, 2294, 2295, 7, 100, 2, 2, 2295, 2315, 5, 144, 73, 2, 2296, 2297, 7, 178, 2, 2, 2297, 2298, 7, 33, 2, 2, 2298, 2299, 5, 144, 73, 2, 2299, 2300, 7, 25, 2, 2, 2300, 2301, 5, 144, 73, 2, 2301, 2315, 3, 2, 2, 2, 2302, 2303, 7, 195, 2, 2, 2303, 2304, 7, 33, 2, 2, 2304, 2305, 5, 144, 73, 2, 2305, 2306, 7, 25, 2, 2, 2306, 2307, 5, 144, 73, 2, 2307, 2315, 3, 2, 2, 2, 2308, 2309, 7, 100, 2, 2, 2309, 2310, 7, 33, 2, 2, 2310, 2311, 5, 144, 73, 2, 2311, 2312, 7, 25, 2, 2, 2312, 2313, 5, 144, 73, 2, 2313, 2315, 3, 2, 2, 2, 2314, 2290, 3, 2, 2, 2, 2314, 2292, 3, 2, 2, 2, 2314, 2294, 3, 2, 2, 2, 2314, 2296, 3, 2, 2, 2, 2314, 2302, 3, 2, 2, 2, 2314, 2308, 3, 2, 2, 2, 2315, 143, 3, 2, 2, 2, 2316, 2317, 7, 229, 2, 2, 2317, 2326, 7, 173, 2, 2, 2318, 2319, 7, 229, 2, 2, 2319, 2326, 7, 87, 2, 2, 2320, 2321, 7, 49, 2, 2, 2321, 2326, 7, 194, 2, 2, 2322, 2323, 5, 96, 49, 2, 2323, 2324, 9, 23, 2, 2, 2324, 2326, 3, 2, 2, 2, 2325, 2316, 3, 2, 2, 2, 2325, 2318, 3, 2, 2, 2, 2325, 2320, 3, 2, 2, 2, 2325, 2322, 3, 2, 2, 2, 2326, 145, 3, 2, 2, 2, 2327, 2328, 8, 74, 1, 2, 2328, 2330, 5, 148, 75, 2, 2329, 2331, 5, 150, 76, 2, 2330, 2329, 3, 2, 2, 2, 2330, 2331, 3, 2, 2, 2, 2331, 2339, 3, 2, 2, 2, 2332, 2333, 12, 4, 2, 2, 2333, 2338, 5, 146, 74, 5, 2334, 2335, 12, 3, 2, 2, 2335, 2336, 7, 11, 2, 2, 2336, 2338, 5, 146, 74, 4, 2337, 2332, 3, 2, 2, 2, 2337, 2334, 3, 2, 2, 2, 2338, 2341, 3, 2, 2, 2, 2339, 2337, 3, 2, 2, 2, 2339, 2340, 3, 2, 2, 2, 2340, 147, 3, 2, 2, 2, 2341, 2339, 3, 2, 2, 2, 2342, 2368, 5, 202, 102, 2, 2343, 2344, 7, 3, 2, 2, 2344, 2368, 7, 4, 2, 2, 2345, 2346, 7, 171, 2, 2, 2346, 2347, 7, 3, 2, 2, 2347, 2352, 5, 146, 74, 2, 2348, 2349, 7, 5, 2, 2, 2349, 2351, 5, 146, 74, 2, 2350, 2348, 3, 2, 2, 2, 2351, 2354, 3, 2, 2, 2, 2352, 2350, 3, 2, 2, 2, 2352, 2353, 3, 2, 2, 2, 2353, 2355, 3, 2, 2, 2, 2354, 2352, 3, 2, 2, 2, 2355, 2356, 7, 4, 2, 2, 2356, 2368, 3, 2, 2, 2, 2357, 2358, 7, 3, 2, 2, 2358, 2359, 5, 146, 74, 2, 2359, 2360, 7, 4, 2, 2, 2360, 2368, 3, 2, 2, 2, 2361, 2368, 7, 12, 2, 2, 2362, 2368, 7, 13, 2, 2, 2363, 2364, 7, 14, 2, 2, 2364, 2365, 5, 146, 74, 2, 2365, 2366, 7, 15, 2, 2, 2366, 2368, 3, 2, 2, 2, 2367, 2342, 3, 2, 2, 2, 2367, 2343, 3, 2, 2, 2, 2367, 2345, 3, 2, 2, 2, 2367, 2357, 3, 2, 2, 2, 2367, 2361, 3, 2, 2, 2, 2367, 2362, 3, 2, 2, 2, 2367, 2363, 3, 2, 2, 2, 2368, 149, 3, 2, 2, 2, 2369, 2371, 7, 259, 2, 2, 2370, 2372, 7, 263, 2, 2, 2371, 2370, 3, 2, 2, 2, 2371, 2372, 3, 2, 2, 2, 2372, 2400, 3, 2, 2, 2, 2373, 2375, 7, 257, 2, 2, 2374, 2376, 7, 263, 2, 2, 2375, 2374, 3, 2, 2, 2, 2375, 2376, 3, 2, 2, 2, 2376, 2400, 3, 2, 2, 2, 2377, 2379, 7, 263, 2, 2, 2378, 2380, 7, 263, 2, 2, 2379, 2378, 3, 2, 2, 2, 2379, 2380, 3, 2, 2, 2, 2380, 2400, 3, 2, 2, 2, 2381, 2382, 7, 16, 2, 2, 2382, 2383, 7, 267, 2, 2, 2383, 2385, 7, 17, 2, 2, 2384, 2386, 7, 263, 2, 2, 2385, 2384, 3, 2, 2, 2, 2385, 2386, 3, 2, 2, 2, 2386, 2400, 3, 2, 2, 2, 2387, 2389, 7, 16, 2, 2, 2388, 2390, 7, 267, 2, 2, 2389, 2388, 3, 2, 2, 2, 2389, 2390, 3, 2, 2, 2, 2390, 2391, 3, 2, 2, 2, 2391, 2393, 7, 5, 2, 2, 2392, 2394, 7, 267, 2, 2, 2393, 2392, 3, 2, 2, 2, 2393, 2394, 3, 2, 2, 2, 2394, 2395, 3, 2, 2, 2, 2395, 2397, 7, 17, 2, 2, 2396, 2398, 7, 263, 2, 2, 2397, 2396, 3, 2, 2, 2, 2397, 2398, 3, 2, 2, 2, 2398, 2400, 3, 2, 2, 2, 2399, 2369, 3, 2, 2, 2, 2399, 2373, 3, 2, 2, 2, 2399, 2377, 3, 2, 2, 2, 2399, 2381, 3, 2, 2, 2, 2399, 2387, 3, 2, 2, 2, 2400, 151, 3, 2, 2, 2, 2401, 2402, 5, 202, 102, 2, 2402, 2403, 7, 251, 2, 2, 2403, 2404, 5, 96, 49, 2, 2404, 153, 3, 2, 2, 2, 2405, 2406, 7, 89, 2, 2, 2406, 2410, 9, 24, 2, 2, 2407, 2408, 7, 227, 2, 2, 2408, 2410, 9, 25, 2, 2, 2409, 2405, 3, 2, 2, 2, 2409, 2407, 3, 2, 2, 2, 2410, 155, 3, 2, 2, 2, 2411, 2412, 7, 117, 2, 2, 2412, 2413, 7, 123, 2, 2, 2413, 2417, 5, 158, 80, 2, 2414, 2415, 7, 179, 2, 2, 2415, 2417, 9, 26, 2, 2, 2416, 2411, 3, 2, 2, 2, 2416, 2414, 3, 2, 2, 2, 2417, 157, 3, 2, 2, 2, 2418, 2419, 7, 179, 2, 2, 2419, 2426, 7, 230, 2, 2, 2420, 2421, 7, 179, 2, 2, 2421, 2426, 7, 44, 2, 2, 2422, 2423, 7, 183, 2, 2, 2423, 2426, 7, 179, 2, 2, 2424, 2426, 7, 203, 2, 2, 2425, 2418, 3, 2, 2, 2, 2425, 2420, 3, 2, 2, 2, 2425, 2422, 3, 2, 2, 2, 2425, 2424, 3, 2, 2, 2, 2426, 159, 3, 2, 2, 2, 2427, 2433, 5, 96, 49, 2, 2428, 2429, 5, 202, 102, 2, 2429, 2430, 7, 18, 2, 2, 2430, 2431, 5, 96, 49, 2, 2431, 2433, 3, 2, 2, 2, 2432, 2427, 3, 2, 2, 2, 2432, 2428, 3, 2, 2, 2, 2433, 161, 3, 2, 2, 2, 2434, 2435, 5, 202, 102, 2, 2435, 2436, 7, 6, 2, 2, 2436, 2437, 5, 202, 102, 2, 2437, 2440, 3, 2, 2, 2, 2438, 2440, 5, 202, 102, 2, 2439, 2434, 3, 2, 2, 2, 2439, 2438, 3, 2, 2, 2, 2440, 163, 3, 2, 2, 2, 2441, 2446, 5, 162, 82, 2, 2442, 2443, 7, 5, 2, 2, 2443, 2445, 5, 162, 82, 2, 2444, 2442, 3, 2, 2, 2, 2445, 2448, 3, 2, 2, 2, 2446, 2444, 3, 2, 2, 2, 2446, 2447, 3, 2, 2, 2, 2447, 165, 3, 2, 2, 2, 2448, 2446, 3, 2, 2, 2, 2449, 2450, 9, 27, 2, 2, 2450, 167, 3, 2, 2, 2, 2451, 2454, 5, 170, 86, 2, 2452, 2454, 5, 174, 88, 2, 2453, 2451, 3, 2, 2, 2, 2453, 2452, 3, 2, 2, 2, 2454, 169, 3, 2, 2, 2, 2455, 2456, 5, 178, 90, 2, 2456, 171, 3, 2, 2, 2, 2457, 2458, 5, 178, 90, 2, 2458, 173, 3, 2, 2, 2, 2459, 2460, 5, 180, 91, 2, 2460, 175, 3, 2, 2, 2, 2461, 2462, 5, 180, 91, 2, 2462, 177, 3, 2, 2, 2, 2463, 2475, 5, 202, 102, 2, 2464, 2465, 5, 202, 102, 2, 2465, 2466, 7, 6, 2, 2, 2466, 2467, 5, 202, 102, 2, 2467, 2475, 3, 2, 2, 2, 2468, 2469, 5, 202, 102, 2, 2469, 2470, 7, 6, 2, 2, 2470, 2471, 5, 202, 102, 2, 2471, 2472, 7, 6, 2, 2, 2472, 2473, 5, 202, 102, 2, 2473, 2475, 3, 2, 2, 2, 2474, 2463, 3, 2, 2, 2, 2474, 2464, 3, 2, 2, 2, 2474, 2468, 3, 2, 2, 2, 2475, 179, 3, 2, 2, 2, 2476, 2488, 5, 202, 102, 2, 2477, 2478, 5, 202, 102, 2, 2478, 2479, 7, 6, 2, 2, 2479, 2480, 5, 202, 102, 2, 2480, 2488, 3, 2, 2, 2, 2481, 2482, 5, 202, 102, 2, 2482, 2483, 7, 6, 2, 2, 2483, 2484, 5, 202, 102, 2, 2484, 2485, 7, 6, 2, 2, 2485, 2486, 5, 202, 102, 2, 2486, 2488, 3, 2, 2, 2, 2487, 2476, 3, 2, 2, 2, 2487, 2477, 3, 2, 2, 2, 2487, 2481, 3, 2, 2, 2, 2488, 181, 3, 2, 2, 2, 2489, 2490, 5, 186, 94, 2, 2490, 183, 3, 2, 2, 2, 2491, 2492, 5, 186, 94, 2, 2492, 185, 3, 2, 2, 2, 2493, 2499, 5, 202, 102, 2, 2494, 2495, 5, 202, 102, 2, 2495, 2496, 7, 6, 2, 2, 2496, 2497, 5, 202, 102, 2, 2497, 2499, 3, 2, 2, 2, 2498, 2493, 3, 2, 2, 2, 2498, 2494, 3, 2, 2, 2, 2499, 187, 3, 2, 2, 2, 2500, 2501, 5, 202, 102, 2, 2501, 189, 3, 2, 2, 2, 2502, 2503, 5, 202, 102, 2, 2503, 191, 3, 2, 2, 2, 2504, 2505, 5, 194, 98, 2, 2505, 193, 3, 2, 2, 2, 2506, 2511, 5, 202, 102, 2, 2507, 2508, 7, 6, 2, 2, 2508, 2510, 5, 202, 102, 2, 2509, 2507, 3, 2, 2, 2, 2510, 2513, 3, 2, 2, 2, 2511, 2509, 3, 2, 2, 2, 2511, 2512, 3, 2, 2, 2, 2512, 195, 3, 2, 2, 2, 2513, 2511, 3, 2, 2, 2, 2514, 2518, 5, 198, 100, 2, 2515, 2518, 7, 57, 2, 2, 2516, 2518, 7, 53, 2, 2, 2517, 2514, 3, 2, 2, 2, 2517, 2515, 3, 2, 2, 2, 2517, 2516, 3, 2, 2, 2, 2518, 197, 3, 2, 2, 2, 2519, 2525, 5, 202, 102, 2, 2520, 2521, 7, 236, 2, 2, 2521, 2525, 5, 202, 102, 2, 2522, 2523, 7, 190, 2, 2, 2523, 2525, 5, 202, 102, 2, 2524, 2519, 3, 2, 2, 2, 2524, 2520, 3, 2, 2, 2, 2524, 2522, 3, 2, 2, 2, 2525, 199, 3, 2, 2, 2, 2526, 2531, 5, 202, 102, 2, 2527, 2528, 7, 5, 2, 2, 2528, 2530, 5, 202, 102, 2, 2529, 2527, 3, 2, 2, 2, 2530, 2533, 3, 2, 2, 2, 2531, 2529, 3, 2, 2, 2, 2531, 2532, 3, 2, 2, 2, 2532, 201, 3, 2, 2, 2, 2533, 2531, 3, 2, 2, 2, 2534, 2540, 7, 270, 2, 2, 2535, 2540, 7, 272, 2, 2, 2536, 2540, 5, 206, 104, 2, 2537, 2540, 7, 273, 2, 2, 2538, 2540, 7, 271, 2, 2, 2539, 2534, 3, 2, 2, 2, 2539, 2535, 3, 2, 2, 2, 2539, 2536, 3, 2, 2, 2, 2539, 2537, 3, 2, 2, 2, 2539, 2538, 3, 2, 2, 2, 2540, 203, 3, 2, 2, 2, 2541, 2543, 7, 258, 2, 2, 2542, 2541, 3, 2, 2, 2, 2542, 2543, 3, 2, 2, 2, 2543, 2544, 3, 2, 2, 2, 2544, 2554, 7, 268, 2, 2, 2545, 2547, 7, 258, 2, 2, 2546, 2545, 3, 2, 2, 2, 2546, 2547, 3, 2, 2, 2, 2547, 2548, 3, 2, 2, 2, 2548, 2554, 7, 269, 2, 2, 2549, 2551, 7, 258, 2, 2, 2550, 2549, 3, 2, 2, 2, 2550, 2551, 3, 2, 2, 2, 2551, 2552, 3, 2, 2, 2, 2552, 2554, 7, 267, 2, 2, 2553, 2542, 3, 2, 2, 2, 2553, 2546, 3, 2, 2, 2, 2553, 2550, 3, 2, 2, 2, 2554, 205, 3, 2, 2, 2, 2555, 2556, 9, 28, 2, 2, 2556, 207, 3, 2, 2, 2, 336, 211, 221, 225, 229, 233, 237, 241, 251, 256, 260, 266, 270, 291, 295, 299, 303, 311, 315, 318, 325, 334, 340, 344, 350, 357, 366, 375, 389, 398, 404, 411, 421, 428, 436, 444, 473, 476, 479, 483, 489, 494, 501, 506, 510, 518, 524, 528, 542, 550, 569, 594, 597, 607, 611, 624, 630, 635, 639, 645, 654, 660, 664, 671, 675, 683, 688, 692, 696, 699, 706, 714, 719, 723, 727, 730, 739, 746, 751, 755, 759, 762, 770, 773, 777, 780, 788, 793, 817, 823, 825, 831, 837, 839, 847, 849, 855, 861, 863, 878, 883, 890, 902, 904, 912, 914, 932, 935, 939, 943, 961, 964, 980, 990, 995, 1001, 1004, 1013, 1025, 1028, 1034, 1041, 1046, 1052, 1056, 1060, 1066, 1077, 1086, 1096, 1099, 1104, 1106, 1113, 1119, 1121, 1125, 1135, 1141, 1144, 1146, 1158, 1165, 1169, 1173, 1177, 1184, 1193, 1196, 1200, 1205, 1209, 1217, 1220, 1223, 1230, 1241, 1244, 1254, 1257, 1268, 1273, 1281, 1284, 1288, 1297, 1306, 1309, 1318, 1321, 1324, 1328, 1339, 1342, 1349, 1352, 1371, 1375, 1379, 1383, 1387, 1391, 1393, 1404, 1409, 1418, 1432, 1435, 1444, 1447, 1455, 1458, 1461, 1466, 1469, 1481, 1484, 1492, 1497, 1501, 1503, 1505, 1520, 1522, 1533, 1554, 1564, 1575, 1579, 1581, 1589, 1606, 1612, 1623, 1630, 1634, 1642, 1644, 1657, 1665, 1674, 1680, 1688, 1694, 1698, 1703, 1708, 1714, 1728, 1730, 1760, 1771, 1781, 1784, 1787, 1792, 1799, 1802, 1811, 1814, 1818, 1821, 1824, 1839, 1842, 1861, 1865, 1873, 1877, 1902, 1905, 1914, 1920, 1926, 1932, 1945, 1954, 1976, 1979, 1982, 1992, 1994, 2003, 2009, 2011, 2019, 2029, 2035, 2049, 2058, 2065, 2070, 2077, 2087, 2092, 2099, 2125, 2130, 2132, 2139, 2143, 2150, 2154, 2171, 2186, 2193, 2202, 2212, 2217, 2226, 2231, 2239, 2247, 2250, 2256, 2259, 2266, 2274, 2277, 2285, 2288, 2314, 2325, 2330, 2337, 2339, 2352, 2367, 2371, 2375, 2379, 2385, 2389, 2393, 2397, 2399, 2409, 2416, 2425, 2432, 2439, 2446, 2453, 2474, 2487, 2498, 2511, 2517, 2524, 2531, 2539, 2542, 2546, 2550, 2553] \ No newline at end of file diff --git a/src/lib/trinosql/TrinoSql.tokens b/src/lib/trinosql/TrinoSql.tokens index 5103628..50a3a1f 100644 --- a/src/lib/trinosql/TrinoSql.tokens +++ b/src/lib/trinosql/TrinoSql.tokens @@ -14,238 +14,238 @@ T__12=13 T__13=14 T__14=15 T__15=16 -ADD=17 -ADMIN=18 -AFTER=19 -ALL=20 -ALTER=21 -ANALYZE=22 -AND=23 -ANY=24 -ARRAY=25 -AS=26 -ASC=27 -AT=28 -AUTHORIZATION=29 -BERNOULLI=30 -BETWEEN=31 -BY=32 -CALL=33 -CASCADE=34 -CASE=35 -CAST=36 -CATALOGS=37 -COLUMN=38 -COLUMNS=39 -COMMENT=40 -COMMIT=41 -COMMITTED=42 -CONSTRAINT=43 -CREATE=44 -CROSS=45 -CUBE=46 -CURRENT=47 -CURRENT_CATALOG=48 -CURRENT_DATE=49 -CURRENT_PATH=50 -CURRENT_ROLE=51 -CURRENT_SCHEMA=52 -CURRENT_TIME=53 -CURRENT_TIMESTAMP=54 -CURRENT_USER=55 -DATA=56 -DATE=57 -DAY=58 -DEFAULT=59 -DEALLOCATE=60 -DEFINER=61 -DELETE=62 -DESC=63 -DESCRIBE=64 -DEFINE=65 -DISTINCT=66 -DISTRIBUTED=67 -DOUBLE=68 -DROP=69 -ELSE=70 -EMPTY=71 -END=72 -ESCAPE=73 -EXCEPT=74 -EXCLUDING=75 -EXECUTE=76 -EXISTS=77 -EXPLAIN=78 -EXTRACT=79 -FALSE=80 -FETCH=81 -FILTER=82 -FINAL=83 -FIRST=84 -FOLLOWING=85 -FOR=86 -FORMAT=87 -FROM=88 -FULL=89 -FUNCTIONS=90 -GRANT=91 -GRANTED=92 -GRANTS=93 -DENY=94 -GRAPHVIZ=95 -GROUP=96 -GROUPING=97 -GROUPS=98 -HAVING=99 -HOUR=100 -IF=101 -IGNORE=102 -IN=103 -INCLUDING=104 -INITIAL=105 -INNER=106 -INPUT=107 -INSERT=108 -INTERSECT=109 -INTERVAL=110 -INTO=111 -INVOKER=112 -IO=113 -IS=114 -ISOLATION=115 -JOIN=116 -JSON=117 -LAST=118 -LATERAL=119 -LEFT=120 -LEVEL=121 -LIKE=122 -LIMIT=123 -LOCAL=124 -LOCALTIME=125 -LOCALTIMESTAMP=126 -LOGICAL=127 -MAP=128 -MATCH=129 -MATCHED=130 -MATCHES=131 -MATCH_RECOGNIZE=132 -MATERIALIZED=133 -MEASURES=134 -MERGE=135 -MINUTE=136 -MONTH=137 -NATURAL=138 -NEXT=139 -NFC=140 -NFD=141 -NFKC=142 -NFKD=143 -NO=144 -NONE=145 -NORMALIZE=146 -NOT=147 -NULL=148 -NULLIF=149 -NULLS=150 -OFFSET=151 -OMIT=152 -ON=153 -ONE=154 -ONLY=155 -OPTION=156 -OR=157 -ORDER=158 -ORDINALITY=159 -OUTER=160 -OUTPUT=161 -OVER=162 -PARTITION=163 -PARTITIONS=164 -PAST=165 -PATH=166 -PATTERN=167 -PER=168 -PERMUTE=169 -POSITION=170 -PRECEDING=171 -PRECISION=172 -PREPARE=173 -PRIVILEGES=174 -PROPERTIES=175 -RANGE=176 -READ=177 -RECURSIVE=178 -REFRESH=179 -RENAME=180 -REPEATABLE=181 -REPLACE=182 -RESET=183 -RESPECT=184 -RESTRICT=185 -REVOKE=186 -RIGHT=187 -ROLE=188 -ROLES=189 -ROLLBACK=190 -ROLLUP=191 -ROW=192 -ROWS=193 -RUNNING=194 -SCHEMA=195 -SCHEMAS=196 -SECOND=197 -SECURITY=198 -SEEK=199 -SELECT=200 -SERIALIZABLE=201 -SESSION=202 -SET=203 -SETS=204 -SHOW=205 -SOME=206 -START=207 -STATS=208 -SUBSET=209 -SUBSTRING=210 -SYSTEM=211 -TABLE=212 -TABLES=213 -TABLESAMPLE=214 -TEXT=215 -THEN=216 -TIES=217 -TIME=218 -TIMESTAMP=219 -TO=220 -TRANSACTION=221 -TRUNCATE=222 -TRUE=223 -TRY_CAST=224 -TYPE=225 -UESCAPE=226 -UNBOUNDED=227 -UNCOMMITTED=228 -UNION=229 -UNMATCHED=230 -UNNEST=231 -UPDATE=232 -USE=233 -USER=234 -USING=235 -VALIDATE=236 -VALUES=237 -VERBOSE=238 -VIEW=239 -WHEN=240 -WHERE=241 -WINDOW=242 -WITH=243 -WITHOUT=244 -WORK=245 -WRITE=246 -YEAR=247 -ZONE=248 +KW_ADD=17 +KW_ADMIN=18 +KW_AFTER=19 +KW_ALL=20 +KW_ALTER=21 +KW_ANALYZE=22 +KW_AND=23 +KW_ANY=24 +KW_ARRAY=25 +KW_AS=26 +KW_ASC=27 +KW_AT=28 +KW_AUTHORIZATION=29 +KW_BERNOULLI=30 +KW_BETWEEN=31 +KW_BY=32 +KW_CALL=33 +KW_CASCADE=34 +KW_CASE=35 +KW_CAST=36 +KW_CATALOGS=37 +KW_COLUMN=38 +KW_COLUMNS=39 +KW_COMMENT=40 +KW_COMMIT=41 +KW_COMMITTED=42 +KW_CONSTRAINT=43 +KW_CREATE=44 +KW_CROSS=45 +KW_CUBE=46 +KW_CURRENT=47 +KW_CURRENT_CATALOG=48 +KW_CURRENT_DATE=49 +KW_CURRENT_PATH=50 +KW_CURRENT_ROLE=51 +KW_CURRENT_SCHEMA=52 +KW_CURRENT_TIME=53 +KW_CURRENT_TIMESTAMP=54 +KW_CURRENT_USER=55 +KW_DATA=56 +KW_DATE=57 +KW_DAY=58 +KW_DEFAULT=59 +KW_DEALLOCATE=60 +KW_DEFINER=61 +KW_DELETE=62 +KW_DESC=63 +KW_DESCRIBE=64 +KW_DEFINE=65 +KW_DISTINCT=66 +KW_DISTRIBUTED=67 +KW_DOUBLE=68 +KW_DROP=69 +KW_ELSE=70 +KW_EMPTY=71 +KW_END=72 +KW_ESCAPE=73 +KW_EXCEPT=74 +KW_EXCLUDING=75 +KW_EXECUTE=76 +KW_EXISTS=77 +KW_EXPLAIN=78 +KW_EXTRACT=79 +KW_FALSE=80 +KW_FETCH=81 +KW_FILTER=82 +KW_FINAL=83 +KW_FIRST=84 +KW_FOLLOWING=85 +KW_FOR=86 +KW_FORMAT=87 +KW_FROM=88 +KW_FULL=89 +KW_FUNCTIONS=90 +KW_GRANT=91 +KW_GRANTED=92 +KW_GRANTS=93 +KW_DENY=94 +KW_GRAPHVIZ=95 +KW_GROUP=96 +KW_GROUPING=97 +KW_GROUPS=98 +KW_HAVING=99 +KW_HOUR=100 +KW_IF=101 +KW_IGNORE=102 +KW_IN=103 +KW_INCLUDING=104 +KW_INITIAL=105 +KW_INNER=106 +KW_INPUT=107 +KW_INSERT=108 +KW_INTERSECT=109 +KW_INTERVAL=110 +KW_INTO=111 +KW_INVOKER=112 +KW_IO=113 +KW_IS=114 +KW_ISOLATION=115 +KW_JOIN=116 +KW_JSON=117 +KW_LAST=118 +KW_LATERAL=119 +KW_LEFT=120 +KW_LEVEL=121 +KW_LIKE=122 +KW_LIMIT=123 +KW_LOCAL=124 +KW_LOCALTIME=125 +KW_LOCALTIMESTAMP=126 +KW_LOGICAL=127 +KW_MAP=128 +KW_MATCH=129 +KW_MATCHED=130 +KW_MATCHES=131 +KW_MATCH_RECOGNIZE=132 +KW_MATERIALIZED=133 +KW_MEASURES=134 +KW_MERGE=135 +KW_MINUTE=136 +KW_MONTH=137 +KW_NATURAL=138 +KW_NEXT=139 +KW_NFC=140 +KW_NFD=141 +KW_NFKC=142 +KW_NFKD=143 +KW_NO=144 +KW_NONE=145 +KW_NORMALIZE=146 +KW_NOT=147 +KW_NULL=148 +KW_NULLIF=149 +KW_NULLS=150 +KW_OFFSET=151 +KW_OMIT=152 +KW_ON=153 +KW_ONE=154 +KW_ONLY=155 +KW_OPTION=156 +KW_OR=157 +KW_ORDER=158 +KW_ORDINALITY=159 +KW_OUTER=160 +KW_OUTPUT=161 +KW_OVER=162 +KW_PARTITION=163 +KW_PARTITIONS=164 +KW_PAST=165 +KW_PATH=166 +KW_PATTERN=167 +KW_PER=168 +KW_PERMUTE=169 +KW_POSITION=170 +KW_PRECEDING=171 +KW_PRECISION=172 +KW_PREPARE=173 +KW_PRIVILEGES=174 +KW_PROPERTIES=175 +KW_RANGE=176 +KW_READ=177 +KW_RECURSIVE=178 +KW_REFRESH=179 +KW_RENAME=180 +KW_REPEATABLE=181 +KW_REPLACE=182 +KW_RESET=183 +KW_RESPECT=184 +KW_RESTRICT=185 +KW_REVOKE=186 +KW_RIGHT=187 +KW_ROLE=188 +KW_ROLES=189 +KW_ROLLBACK=190 +KW_ROLLUP=191 +KW_ROW=192 +KW_ROWS=193 +KW_RUNNING=194 +KW_SCHEMA=195 +KW_SCHEMAS=196 +KW_SECOND=197 +KW_SECURITY=198 +KW_SEEK=199 +KW_SELECT=200 +KW_SERIALIZABLE=201 +KW_SESSION=202 +KW_SET=203 +KW_SETS=204 +KW_SHOW=205 +KW_SOME=206 +KW_START=207 +KW_STATS=208 +KW_SUBSET=209 +KW_SUBSTRING=210 +KW_SYSTEM=211 +KW_TABLE=212 +KW_TABLES=213 +KW_TABLESAMPLE=214 +KW_TEXT=215 +KW_THEN=216 +KW_TIES=217 +KW_TIME=218 +KW_TIMESTAMP=219 +KW_TO=220 +KW_TRANSACTION=221 +KW_TRUNCATE=222 +KW_TRUE=223 +KW_TRY_CAST=224 +KW_TYPE=225 +KW_UESCAPE=226 +KW_UNBOUNDED=227 +KW_UNCOMMITTED=228 +KW_UNION=229 +KW_UNMATCHED=230 +KW_UNNEST=231 +KW_UPDATE=232 +KW_USE=233 +KW_USER=234 +KW_USING=235 +KW_VALIDATE=236 +KW_VALUES=237 +KW_VERBOSE=238 +KW_VIEW=239 +KW_WHEN=240 +KW_WHERE=241 +KW_WINDOW=242 +KW_WITH=243 +KW_WITHOUT=244 +KW_WORK=245 +KW_WRITE=246 +KW_YEAR=247 +KW_ZONE=248 EQ=249 NEQ=250 LT=251 @@ -275,10 +275,10 @@ BRACKETED_COMMENT=274 WS=275 UNRECOGNIZED=276 DELIMITER=277 -'.'=1 -'('=2 -')'=3 -','=4 +'('=1 +')'=2 +','=3 +'.'=4 'SKIP'=5 '->'=6 '['=7 diff --git a/src/lib/trinosql/TrinoSqlLexer.interp b/src/lib/trinosql/TrinoSqlLexer.interp index 332ea03..a7a9046 100644 --- a/src/lib/trinosql/TrinoSqlLexer.interp +++ b/src/lib/trinosql/TrinoSqlLexer.interp @@ -1,9 +1,9 @@ token literal names: null -'.' '(' ')' ',' +'.' 'SKIP' '->' '[' @@ -295,238 +295,238 @@ null null null null -ADD -ADMIN -AFTER -ALL -ALTER -ANALYZE -AND -ANY -ARRAY -AS -ASC -AT -AUTHORIZATION -BERNOULLI -BETWEEN -BY -CALL -CASCADE -CASE -CAST -CATALOGS -COLUMN -COLUMNS -COMMENT -COMMIT -COMMITTED -CONSTRAINT -CREATE -CROSS -CUBE -CURRENT -CURRENT_CATALOG -CURRENT_DATE -CURRENT_PATH -CURRENT_ROLE -CURRENT_SCHEMA -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DATA -DATE -DAY -DEFAULT -DEALLOCATE -DEFINER -DELETE -DESC -DESCRIBE -DEFINE -DISTINCT -DISTRIBUTED -DOUBLE -DROP -ELSE -EMPTY -END -ESCAPE -EXCEPT -EXCLUDING -EXECUTE -EXISTS -EXPLAIN -EXTRACT -FALSE -FETCH -FILTER -FINAL -FIRST -FOLLOWING -FOR -FORMAT -FROM -FULL -FUNCTIONS -GRANT -GRANTED -GRANTS -DENY -GRAPHVIZ -GROUP -GROUPING -GROUPS -HAVING -HOUR -IF -IGNORE -IN -INCLUDING -INITIAL -INNER -INPUT -INSERT -INTERSECT -INTERVAL -INTO -INVOKER -IO -IS -ISOLATION -JOIN -JSON -LAST -LATERAL -LEFT -LEVEL -LIKE -LIMIT -LOCAL -LOCALTIME -LOCALTIMESTAMP -LOGICAL -MAP -MATCH -MATCHED -MATCHES -MATCH_RECOGNIZE -MATERIALIZED -MEASURES -MERGE -MINUTE -MONTH -NATURAL -NEXT -NFC -NFD -NFKC -NFKD -NO -NONE -NORMALIZE -NOT -NULL -NULLIF -NULLS -OFFSET -OMIT -ON -ONE -ONLY -OPTION -OR -ORDER -ORDINALITY -OUTER -OUTPUT -OVER -PARTITION -PARTITIONS -PAST -PATH -PATTERN -PER -PERMUTE -POSITION -PRECEDING -PRECISION -PREPARE -PRIVILEGES -PROPERTIES -RANGE -READ -RECURSIVE -REFRESH -RENAME -REPEATABLE -REPLACE -RESET -RESPECT -RESTRICT -REVOKE -RIGHT -ROLE -ROLES -ROLLBACK -ROLLUP -ROW -ROWS -RUNNING -SCHEMA -SCHEMAS -SECOND -SECURITY -SEEK -SELECT -SERIALIZABLE -SESSION -SET -SETS -SHOW -SOME -START -STATS -SUBSET -SUBSTRING -SYSTEM -TABLE -TABLES -TABLESAMPLE -TEXT -THEN -TIES -TIME -TIMESTAMP -TO -TRANSACTION -TRUNCATE -TRUE -TRY_CAST -TYPE -UESCAPE -UNBOUNDED -UNCOMMITTED -UNION -UNMATCHED -UNNEST -UPDATE -USE -USER -USING -VALIDATE -VALUES -VERBOSE -VIEW -WHEN -WHERE -WINDOW -WITH -WITHOUT -WORK -WRITE -YEAR -ZONE +KW_ADD +KW_ADMIN +KW_AFTER +KW_ALL +KW_ALTER +KW_ANALYZE +KW_AND +KW_ANY +KW_ARRAY +KW_AS +KW_ASC +KW_AT +KW_AUTHORIZATION +KW_BERNOULLI +KW_BETWEEN +KW_BY +KW_CALL +KW_CASCADE +KW_CASE +KW_CAST +KW_CATALOGS +KW_COLUMN +KW_COLUMNS +KW_COMMENT +KW_COMMIT +KW_COMMITTED +KW_CONSTRAINT +KW_CREATE +KW_CROSS +KW_CUBE +KW_CURRENT +KW_CURRENT_CATALOG +KW_CURRENT_DATE +KW_CURRENT_PATH +KW_CURRENT_ROLE +KW_CURRENT_SCHEMA +KW_CURRENT_TIME +KW_CURRENT_TIMESTAMP +KW_CURRENT_USER +KW_DATA +KW_DATE +KW_DAY +KW_DEFAULT +KW_DEALLOCATE +KW_DEFINER +KW_DELETE +KW_DESC +KW_DESCRIBE +KW_DEFINE +KW_DISTINCT +KW_DISTRIBUTED +KW_DOUBLE +KW_DROP +KW_ELSE +KW_EMPTY +KW_END +KW_ESCAPE +KW_EXCEPT +KW_EXCLUDING +KW_EXECUTE +KW_EXISTS +KW_EXPLAIN +KW_EXTRACT +KW_FALSE +KW_FETCH +KW_FILTER +KW_FINAL +KW_FIRST +KW_FOLLOWING +KW_FOR +KW_FORMAT +KW_FROM +KW_FULL +KW_FUNCTIONS +KW_GRANT +KW_GRANTED +KW_GRANTS +KW_DENY +KW_GRAPHVIZ +KW_GROUP +KW_GROUPING +KW_GROUPS +KW_HAVING +KW_HOUR +KW_IF +KW_IGNORE +KW_IN +KW_INCLUDING +KW_INITIAL +KW_INNER +KW_INPUT +KW_INSERT +KW_INTERSECT +KW_INTERVAL +KW_INTO +KW_INVOKER +KW_IO +KW_IS +KW_ISOLATION +KW_JOIN +KW_JSON +KW_LAST +KW_LATERAL +KW_LEFT +KW_LEVEL +KW_LIKE +KW_LIMIT +KW_LOCAL +KW_LOCALTIME +KW_LOCALTIMESTAMP +KW_LOGICAL +KW_MAP +KW_MATCH +KW_MATCHED +KW_MATCHES +KW_MATCH_RECOGNIZE +KW_MATERIALIZED +KW_MEASURES +KW_MERGE +KW_MINUTE +KW_MONTH +KW_NATURAL +KW_NEXT +KW_NFC +KW_NFD +KW_NFKC +KW_NFKD +KW_NO +KW_NONE +KW_NORMALIZE +KW_NOT +KW_NULL +KW_NULLIF +KW_NULLS +KW_OFFSET +KW_OMIT +KW_ON +KW_ONE +KW_ONLY +KW_OPTION +KW_OR +KW_ORDER +KW_ORDINALITY +KW_OUTER +KW_OUTPUT +KW_OVER +KW_PARTITION +KW_PARTITIONS +KW_PAST +KW_PATH +KW_PATTERN +KW_PER +KW_PERMUTE +KW_POSITION +KW_PRECEDING +KW_PRECISION +KW_PREPARE +KW_PRIVILEGES +KW_PROPERTIES +KW_RANGE +KW_READ +KW_RECURSIVE +KW_REFRESH +KW_RENAME +KW_REPEATABLE +KW_REPLACE +KW_RESET +KW_RESPECT +KW_RESTRICT +KW_REVOKE +KW_RIGHT +KW_ROLE +KW_ROLES +KW_ROLLBACK +KW_ROLLUP +KW_ROW +KW_ROWS +KW_RUNNING +KW_SCHEMA +KW_SCHEMAS +KW_SECOND +KW_SECURITY +KW_SEEK +KW_SELECT +KW_SERIALIZABLE +KW_SESSION +KW_SET +KW_SETS +KW_SHOW +KW_SOME +KW_START +KW_STATS +KW_SUBSET +KW_SUBSTRING +KW_SYSTEM +KW_TABLE +KW_TABLES +KW_TABLESAMPLE +KW_TEXT +KW_THEN +KW_TIES +KW_TIME +KW_TIMESTAMP +KW_TO +KW_TRANSACTION +KW_TRUNCATE +KW_TRUE +KW_TRY_CAST +KW_TYPE +KW_UESCAPE +KW_UNBOUNDED +KW_UNCOMMITTED +KW_UNION +KW_UNMATCHED +KW_UNNEST +KW_UPDATE +KW_USE +KW_USER +KW_USING +KW_VALIDATE +KW_VALUES +KW_VERBOSE +KW_VIEW +KW_WHEN +KW_WHERE +KW_WINDOW +KW_WITH +KW_WITHOUT +KW_WORK +KW_WRITE +KW_YEAR +KW_ZONE EQ NEQ LT @@ -573,238 +573,238 @@ T__12 T__13 T__14 T__15 -ADD -ADMIN -AFTER -ALL -ALTER -ANALYZE -AND -ANY -ARRAY -AS -ASC -AT -AUTHORIZATION -BERNOULLI -BETWEEN -BY -CALL -CASCADE -CASE -CAST -CATALOGS -COLUMN -COLUMNS -COMMENT -COMMIT -COMMITTED -CONSTRAINT -CREATE -CROSS -CUBE -CURRENT -CURRENT_CATALOG -CURRENT_DATE -CURRENT_PATH -CURRENT_ROLE -CURRENT_SCHEMA -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DATA -DATE -DAY -DEFAULT -DEALLOCATE -DEFINER -DELETE -DESC -DESCRIBE -DEFINE -DISTINCT -DISTRIBUTED -DOUBLE -DROP -ELSE -EMPTY -END -ESCAPE -EXCEPT -EXCLUDING -EXECUTE -EXISTS -EXPLAIN -EXTRACT -FALSE -FETCH -FILTER -FINAL -FIRST -FOLLOWING -FOR -FORMAT -FROM -FULL -FUNCTIONS -GRANT -GRANTED -GRANTS -DENY -GRAPHVIZ -GROUP -GROUPING -GROUPS -HAVING -HOUR -IF -IGNORE -IN -INCLUDING -INITIAL -INNER -INPUT -INSERT -INTERSECT -INTERVAL -INTO -INVOKER -IO -IS -ISOLATION -JOIN -JSON -LAST -LATERAL -LEFT -LEVEL -LIKE -LIMIT -LOCAL -LOCALTIME -LOCALTIMESTAMP -LOGICAL -MAP -MATCH -MATCHED -MATCHES -MATCH_RECOGNIZE -MATERIALIZED -MEASURES -MERGE -MINUTE -MONTH -NATURAL -NEXT -NFC -NFD -NFKC -NFKD -NO -NONE -NORMALIZE -NOT -NULL -NULLIF -NULLS -OFFSET -OMIT -ON -ONE -ONLY -OPTION -OR -ORDER -ORDINALITY -OUTER -OUTPUT -OVER -PARTITION -PARTITIONS -PAST -PATH -PATTERN -PER -PERMUTE -POSITION -PRECEDING -PRECISION -PREPARE -PRIVILEGES -PROPERTIES -RANGE -READ -RECURSIVE -REFRESH -RENAME -REPEATABLE -REPLACE -RESET -RESPECT -RESTRICT -REVOKE -RIGHT -ROLE -ROLES -ROLLBACK -ROLLUP -ROW -ROWS -RUNNING -SCHEMA -SCHEMAS -SECOND -SECURITY -SEEK -SELECT -SERIALIZABLE -SESSION -SET -SETS -SHOW -SOME -START -STATS -SUBSET -SUBSTRING -SYSTEM -TABLE -TABLES -TABLESAMPLE -TEXT -THEN -TIES -TIME -TIMESTAMP -TO -TRANSACTION -TRUNCATE -TRUE -TRY_CAST -TYPE -UESCAPE -UNBOUNDED -UNCOMMITTED -UNION -UNMATCHED -UNNEST -UPDATE -USE -USER -USING -VALIDATE -VALUES -VERBOSE -VIEW -WHEN -WHERE -WINDOW -WITH -WITHOUT -WORK -WRITE -YEAR -ZONE +KW_ADD +KW_ADMIN +KW_AFTER +KW_ALL +KW_ALTER +KW_ANALYZE +KW_AND +KW_ANY +KW_ARRAY +KW_AS +KW_ASC +KW_AT +KW_AUTHORIZATION +KW_BERNOULLI +KW_BETWEEN +KW_BY +KW_CALL +KW_CASCADE +KW_CASE +KW_CAST +KW_CATALOGS +KW_COLUMN +KW_COLUMNS +KW_COMMENT +KW_COMMIT +KW_COMMITTED +KW_CONSTRAINT +KW_CREATE +KW_CROSS +KW_CUBE +KW_CURRENT +KW_CURRENT_CATALOG +KW_CURRENT_DATE +KW_CURRENT_PATH +KW_CURRENT_ROLE +KW_CURRENT_SCHEMA +KW_CURRENT_TIME +KW_CURRENT_TIMESTAMP +KW_CURRENT_USER +KW_DATA +KW_DATE +KW_DAY +KW_DEFAULT +KW_DEALLOCATE +KW_DEFINER +KW_DELETE +KW_DESC +KW_DESCRIBE +KW_DEFINE +KW_DISTINCT +KW_DISTRIBUTED +KW_DOUBLE +KW_DROP +KW_ELSE +KW_EMPTY +KW_END +KW_ESCAPE +KW_EXCEPT +KW_EXCLUDING +KW_EXECUTE +KW_EXISTS +KW_EXPLAIN +KW_EXTRACT +KW_FALSE +KW_FETCH +KW_FILTER +KW_FINAL +KW_FIRST +KW_FOLLOWING +KW_FOR +KW_FORMAT +KW_FROM +KW_FULL +KW_FUNCTIONS +KW_GRANT +KW_GRANTED +KW_GRANTS +KW_DENY +KW_GRAPHVIZ +KW_GROUP +KW_GROUPING +KW_GROUPS +KW_HAVING +KW_HOUR +KW_IF +KW_IGNORE +KW_IN +KW_INCLUDING +KW_INITIAL +KW_INNER +KW_INPUT +KW_INSERT +KW_INTERSECT +KW_INTERVAL +KW_INTO +KW_INVOKER +KW_IO +KW_IS +KW_ISOLATION +KW_JOIN +KW_JSON +KW_LAST +KW_LATERAL +KW_LEFT +KW_LEVEL +KW_LIKE +KW_LIMIT +KW_LOCAL +KW_LOCALTIME +KW_LOCALTIMESTAMP +KW_LOGICAL +KW_MAP +KW_MATCH +KW_MATCHED +KW_MATCHES +KW_MATCH_RECOGNIZE +KW_MATERIALIZED +KW_MEASURES +KW_MERGE +KW_MINUTE +KW_MONTH +KW_NATURAL +KW_NEXT +KW_NFC +KW_NFD +KW_NFKC +KW_NFKD +KW_NO +KW_NONE +KW_NORMALIZE +KW_NOT +KW_NULL +KW_NULLIF +KW_NULLS +KW_OFFSET +KW_OMIT +KW_ON +KW_ONE +KW_ONLY +KW_OPTION +KW_OR +KW_ORDER +KW_ORDINALITY +KW_OUTER +KW_OUTPUT +KW_OVER +KW_PARTITION +KW_PARTITIONS +KW_PAST +KW_PATH +KW_PATTERN +KW_PER +KW_PERMUTE +KW_POSITION +KW_PRECEDING +KW_PRECISION +KW_PREPARE +KW_PRIVILEGES +KW_PROPERTIES +KW_RANGE +KW_READ +KW_RECURSIVE +KW_REFRESH +KW_RENAME +KW_REPEATABLE +KW_REPLACE +KW_RESET +KW_RESPECT +KW_RESTRICT +KW_REVOKE +KW_RIGHT +KW_ROLE +KW_ROLES +KW_ROLLBACK +KW_ROLLUP +KW_ROW +KW_ROWS +KW_RUNNING +KW_SCHEMA +KW_SCHEMAS +KW_SECOND +KW_SECURITY +KW_SEEK +KW_SELECT +KW_SERIALIZABLE +KW_SESSION +KW_SET +KW_SETS +KW_SHOW +KW_SOME +KW_START +KW_STATS +KW_SUBSET +KW_SUBSTRING +KW_SYSTEM +KW_TABLE +KW_TABLES +KW_TABLESAMPLE +KW_TEXT +KW_THEN +KW_TIES +KW_TIME +KW_TIMESTAMP +KW_TO +KW_TRANSACTION +KW_TRUNCATE +KW_TRUE +KW_TRY_CAST +KW_TYPE +KW_UESCAPE +KW_UNBOUNDED +KW_UNCOMMITTED +KW_UNION +KW_UNMATCHED +KW_UNNEST +KW_UPDATE +KW_USE +KW_USER +KW_USING +KW_VALIDATE +KW_VALUES +KW_VERBOSE +KW_VIEW +KW_WHEN +KW_WHERE +KW_WINDOW +KW_WITH +KW_WITHOUT +KW_WORK +KW_WRITE +KW_YEAR +KW_ZONE EQ NEQ LT @@ -845,4 +845,4 @@ mode names: DEFAULT_MODE atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 278, 2469, 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, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255, 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259, 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, 4, 264, 9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, 9, 268, 4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, 4, 273, 9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, 9, 277, 4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 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, 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, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 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, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 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, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 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, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 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, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 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, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 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, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 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, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 155, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 204, 3, 204, 3, 204, 3, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 221, 3, 221, 3, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 234, 3, 234, 3, 234, 3, 234, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3, 251, 3, 251, 3, 251, 3, 251, 5, 251, 2259, 10, 251, 3, 252, 3, 252, 3, 253, 3, 253, 3, 253, 3, 254, 3, 254, 3, 255, 3, 255, 3, 255, 3, 256, 3, 256, 3, 257, 3, 257, 3, 258, 3, 258, 3, 259, 3, 259, 3, 260, 3, 260, 3, 261, 3, 261, 3, 261, 3, 262, 3, 262, 3, 263, 3, 263, 3, 263, 3, 263, 7, 263, 2290, 10, 263, 12, 263, 14, 263, 2293, 11, 263, 3, 263, 3, 263, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 7, 264, 2304, 10, 264, 12, 264, 14, 264, 2307, 11, 264, 3, 264, 3, 264, 3, 265, 3, 265, 3, 265, 3, 265, 7, 265, 2315, 10, 265, 12, 265, 14, 265, 2318, 11, 265, 3, 265, 3, 265, 3, 266, 6, 266, 2323, 10, 266, 13, 266, 14, 266, 2324, 3, 267, 6, 267, 2328, 10, 267, 13, 267, 14, 267, 2329, 3, 267, 3, 267, 7, 267, 2334, 10, 267, 12, 267, 14, 267, 2337, 11, 267, 3, 267, 3, 267, 6, 267, 2341, 10, 267, 13, 267, 14, 267, 2342, 5, 267, 2345, 10, 267, 3, 268, 6, 268, 2348, 10, 268, 13, 268, 14, 268, 2349, 3, 268, 3, 268, 7, 268, 2354, 10, 268, 12, 268, 14, 268, 2357, 11, 268, 5, 268, 2359, 10, 268, 3, 268, 3, 268, 3, 268, 3, 268, 6, 268, 2365, 10, 268, 13, 268, 14, 268, 2366, 3, 268, 3, 268, 5, 268, 2371, 10, 268, 3, 269, 3, 269, 5, 269, 2375, 10, 269, 3, 269, 3, 269, 3, 269, 7, 269, 2380, 10, 269, 12, 269, 14, 269, 2383, 11, 269, 3, 270, 3, 270, 3, 270, 3, 270, 6, 270, 2389, 10, 270, 13, 270, 14, 270, 2390, 3, 271, 3, 271, 3, 271, 3, 271, 7, 271, 2397, 10, 271, 12, 271, 14, 271, 2400, 11, 271, 3, 271, 3, 271, 3, 272, 3, 272, 3, 272, 3, 272, 7, 272, 2408, 10, 272, 12, 272, 14, 272, 2411, 11, 272, 3, 272, 3, 272, 3, 273, 3, 273, 3, 274, 3, 274, 5, 274, 2419, 10, 274, 3, 274, 6, 274, 2422, 10, 274, 13, 274, 14, 274, 2423, 3, 275, 3, 275, 3, 276, 3, 276, 3, 277, 3, 277, 3, 277, 3, 277, 7, 277, 2434, 10, 277, 12, 277, 14, 277, 2437, 11, 277, 3, 277, 5, 277, 2440, 10, 277, 3, 277, 5, 277, 2443, 10, 277, 3, 277, 3, 277, 3, 278, 3, 278, 3, 278, 3, 278, 7, 278, 2451, 10, 278, 12, 278, 14, 278, 2454, 11, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 279, 6, 279, 2462, 10, 279, 13, 279, 14, 279, 2463, 3, 279, 3, 279, 3, 280, 3, 280, 3, 2452, 2, 2, 281, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 145, 2, 74, 147, 2, 75, 149, 2, 76, 151, 2, 77, 153, 2, 78, 155, 2, 79, 157, 2, 80, 159, 2, 81, 161, 2, 82, 163, 2, 83, 165, 2, 84, 167, 2, 85, 169, 2, 86, 171, 2, 87, 173, 2, 88, 175, 2, 89, 177, 2, 90, 179, 2, 91, 181, 2, 92, 183, 2, 93, 185, 2, 94, 187, 2, 95, 189, 2, 96, 191, 2, 97, 193, 2, 98, 195, 2, 99, 197, 2, 100, 199, 2, 101, 201, 2, 102, 203, 2, 103, 205, 2, 104, 207, 2, 105, 209, 2, 106, 211, 2, 107, 213, 2, 108, 215, 2, 109, 217, 2, 110, 219, 2, 111, 221, 2, 112, 223, 2, 113, 225, 2, 114, 227, 2, 115, 229, 2, 116, 231, 2, 117, 233, 2, 118, 235, 2, 119, 237, 2, 120, 239, 2, 121, 241, 2, 122, 243, 2, 123, 245, 2, 124, 247, 2, 125, 249, 2, 126, 251, 2, 127, 253, 2, 128, 255, 2, 129, 257, 2, 130, 259, 2, 131, 261, 2, 132, 263, 2, 133, 265, 2, 134, 267, 2, 135, 269, 2, 136, 271, 2, 137, 273, 2, 138, 275, 2, 139, 277, 2, 140, 279, 2, 141, 281, 2, 142, 283, 2, 143, 285, 2, 144, 287, 2, 145, 289, 2, 146, 291, 2, 147, 293, 2, 148, 295, 2, 149, 297, 2, 150, 299, 2, 151, 301, 2, 152, 303, 2, 153, 305, 2, 154, 307, 2, 155, 309, 2, 156, 311, 2, 157, 313, 2, 158, 315, 2, 159, 317, 2, 160, 319, 2, 161, 321, 2, 162, 323, 2, 163, 325, 2, 164, 327, 2, 165, 329, 2, 166, 331, 2, 167, 333, 2, 168, 335, 2, 169, 337, 2, 170, 339, 2, 171, 341, 2, 172, 343, 2, 173, 345, 2, 174, 347, 2, 175, 349, 2, 176, 351, 2, 177, 353, 2, 178, 355, 2, 179, 357, 2, 180, 359, 2, 181, 361, 2, 182, 363, 2, 183, 365, 2, 184, 367, 2, 185, 369, 2, 186, 371, 2, 187, 373, 2, 188, 375, 2, 189, 377, 2, 190, 379, 2, 191, 381, 2, 192, 383, 2, 193, 385, 2, 194, 387, 2, 195, 389, 2, 196, 391, 2, 197, 393, 2, 198, 395, 2, 199, 397, 2, 200, 399, 2, 201, 401, 2, 202, 403, 2, 203, 405, 2, 204, 407, 2, 205, 409, 2, 206, 411, 2, 207, 413, 2, 208, 415, 2, 209, 417, 2, 210, 419, 2, 211, 421, 2, 212, 423, 2, 213, 425, 2, 214, 427, 2, 215, 429, 2, 216, 431, 2, 217, 433, 2, 218, 435, 2, 219, 437, 2, 220, 439, 2, 221, 441, 2, 222, 443, 2, 223, 445, 2, 224, 447, 2, 225, 449, 2, 226, 451, 2, 227, 453, 2, 228, 455, 2, 229, 457, 2, 230, 459, 2, 231, 461, 2, 232, 463, 2, 233, 465, 2, 234, 467, 2, 235, 469, 2, 236, 471, 2, 237, 473, 2, 238, 475, 2, 239, 477, 2, 240, 479, 2, 241, 481, 2, 242, 483, 2, 243, 485, 2, 244, 487, 2, 245, 489, 2, 246, 491, 2, 247, 493, 2, 248, 495, 2, 249, 497, 2, 250, 499, 2, 251, 501, 2, 252, 503, 2, 253, 505, 2, 254, 507, 2, 255, 509, 2, 256, 511, 2, 257, 513, 2, 258, 515, 2, 259, 517, 2, 260, 519, 2, 261, 521, 2, 262, 523, 2, 263, 525, 2, 264, 527, 2, 265, 529, 2, 266, 531, 2, 267, 533, 2, 268, 535, 2, 269, 537, 2, 270, 539, 2, 271, 541, 2, 272, 543, 2, 273, 545, 2, 274, 547, 2, 2, 549, 2, 2, 551, 2, 2, 553, 2, 275, 555, 2, 276, 557, 2, 277, 559, 2, 278, 3, 2, 10, 3, 2, 41, 41, 3, 2, 36, 36, 3, 2, 98, 98, 4, 2, 45, 45, 47, 47, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 2, 2499, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 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, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 275, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 295, 3, 2, 2, 2, 2, 297, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 2, 309, 3, 2, 2, 2, 2, 311, 3, 2, 2, 2, 2, 313, 3, 2, 2, 2, 2, 315, 3, 2, 2, 2, 2, 317, 3, 2, 2, 2, 2, 319, 3, 2, 2, 2, 2, 321, 3, 2, 2, 2, 2, 323, 3, 2, 2, 2, 2, 325, 3, 2, 2, 2, 2, 327, 3, 2, 2, 2, 2, 329, 3, 2, 2, 2, 2, 331, 3, 2, 2, 2, 2, 333, 3, 2, 2, 2, 2, 335, 3, 2, 2, 2, 2, 337, 3, 2, 2, 2, 2, 339, 3, 2, 2, 2, 2, 341, 3, 2, 2, 2, 2, 343, 3, 2, 2, 2, 2, 345, 3, 2, 2, 2, 2, 347, 3, 2, 2, 2, 2, 349, 3, 2, 2, 2, 2, 351, 3, 2, 2, 2, 2, 353, 3, 2, 2, 2, 2, 355, 3, 2, 2, 2, 2, 357, 3, 2, 2, 2, 2, 359, 3, 2, 2, 2, 2, 361, 3, 2, 2, 2, 2, 363, 3, 2, 2, 2, 2, 365, 3, 2, 2, 2, 2, 367, 3, 2, 2, 2, 2, 369, 3, 2, 2, 2, 2, 371, 3, 2, 2, 2, 2, 373, 3, 2, 2, 2, 2, 375, 3, 2, 2, 2, 2, 377, 3, 2, 2, 2, 2, 379, 3, 2, 2, 2, 2, 381, 3, 2, 2, 2, 2, 383, 3, 2, 2, 2, 2, 385, 3, 2, 2, 2, 2, 387, 3, 2, 2, 2, 2, 389, 3, 2, 2, 2, 2, 391, 3, 2, 2, 2, 2, 393, 3, 2, 2, 2, 2, 395, 3, 2, 2, 2, 2, 397, 3, 2, 2, 2, 2, 399, 3, 2, 2, 2, 2, 401, 3, 2, 2, 2, 2, 403, 3, 2, 2, 2, 2, 405, 3, 2, 2, 2, 2, 407, 3, 2, 2, 2, 2, 409, 3, 2, 2, 2, 2, 411, 3, 2, 2, 2, 2, 413, 3, 2, 2, 2, 2, 415, 3, 2, 2, 2, 2, 417, 3, 2, 2, 2, 2, 419, 3, 2, 2, 2, 2, 421, 3, 2, 2, 2, 2, 423, 3, 2, 2, 2, 2, 425, 3, 2, 2, 2, 2, 427, 3, 2, 2, 2, 2, 429, 3, 2, 2, 2, 2, 431, 3, 2, 2, 2, 2, 433, 3, 2, 2, 2, 2, 435, 3, 2, 2, 2, 2, 437, 3, 2, 2, 2, 2, 439, 3, 2, 2, 2, 2, 441, 3, 2, 2, 2, 2, 443, 3, 2, 2, 2, 2, 445, 3, 2, 2, 2, 2, 447, 3, 2, 2, 2, 2, 449, 3, 2, 2, 2, 2, 451, 3, 2, 2, 2, 2, 453, 3, 2, 2, 2, 2, 455, 3, 2, 2, 2, 2, 457, 3, 2, 2, 2, 2, 459, 3, 2, 2, 2, 2, 461, 3, 2, 2, 2, 2, 463, 3, 2, 2, 2, 2, 465, 3, 2, 2, 2, 2, 467, 3, 2, 2, 2, 2, 469, 3, 2, 2, 2, 2, 471, 3, 2, 2, 2, 2, 473, 3, 2, 2, 2, 2, 475, 3, 2, 2, 2, 2, 477, 3, 2, 2, 2, 2, 479, 3, 2, 2, 2, 2, 481, 3, 2, 2, 2, 2, 483, 3, 2, 2, 2, 2, 485, 3, 2, 2, 2, 2, 487, 3, 2, 2, 2, 2, 489, 3, 2, 2, 2, 2, 491, 3, 2, 2, 2, 2, 493, 3, 2, 2, 2, 2, 495, 3, 2, 2, 2, 2, 497, 3, 2, 2, 2, 2, 499, 3, 2, 2, 2, 2, 501, 3, 2, 2, 2, 2, 503, 3, 2, 2, 2, 2, 505, 3, 2, 2, 2, 2, 507, 3, 2, 2, 2, 2, 509, 3, 2, 2, 2, 2, 511, 3, 2, 2, 2, 2, 513, 3, 2, 2, 2, 2, 515, 3, 2, 2, 2, 2, 517, 3, 2, 2, 2, 2, 519, 3, 2, 2, 2, 2, 521, 3, 2, 2, 2, 2, 523, 3, 2, 2, 2, 2, 525, 3, 2, 2, 2, 2, 527, 3, 2, 2, 2, 2, 529, 3, 2, 2, 2, 2, 531, 3, 2, 2, 2, 2, 533, 3, 2, 2, 2, 2, 535, 3, 2, 2, 2, 2, 537, 3, 2, 2, 2, 2, 539, 3, 2, 2, 2, 2, 541, 3, 2, 2, 2, 2, 543, 3, 2, 2, 2, 2, 545, 3, 2, 2, 2, 2, 553, 3, 2, 2, 2, 2, 555, 3, 2, 2, 2, 2, 557, 3, 2, 2, 2, 2, 559, 3, 2, 2, 2, 3, 561, 3, 2, 2, 2, 5, 563, 3, 2, 2, 2, 7, 565, 3, 2, 2, 2, 9, 567, 3, 2, 2, 2, 11, 569, 3, 2, 2, 2, 13, 574, 3, 2, 2, 2, 15, 577, 3, 2, 2, 2, 17, 579, 3, 2, 2, 2, 19, 581, 3, 2, 2, 2, 21, 583, 3, 2, 2, 2, 23, 585, 3, 2, 2, 2, 25, 587, 3, 2, 2, 2, 27, 590, 3, 2, 2, 2, 29, 593, 3, 2, 2, 2, 31, 595, 3, 2, 2, 2, 33, 597, 3, 2, 2, 2, 35, 600, 3, 2, 2, 2, 37, 604, 3, 2, 2, 2, 39, 610, 3, 2, 2, 2, 41, 616, 3, 2, 2, 2, 43, 620, 3, 2, 2, 2, 45, 626, 3, 2, 2, 2, 47, 634, 3, 2, 2, 2, 49, 638, 3, 2, 2, 2, 51, 642, 3, 2, 2, 2, 53, 648, 3, 2, 2, 2, 55, 651, 3, 2, 2, 2, 57, 655, 3, 2, 2, 2, 59, 658, 3, 2, 2, 2, 61, 672, 3, 2, 2, 2, 63, 682, 3, 2, 2, 2, 65, 690, 3, 2, 2, 2, 67, 693, 3, 2, 2, 2, 69, 698, 3, 2, 2, 2, 71, 706, 3, 2, 2, 2, 73, 711, 3, 2, 2, 2, 75, 716, 3, 2, 2, 2, 77, 725, 3, 2, 2, 2, 79, 732, 3, 2, 2, 2, 81, 740, 3, 2, 2, 2, 83, 748, 3, 2, 2, 2, 85, 755, 3, 2, 2, 2, 87, 765, 3, 2, 2, 2, 89, 776, 3, 2, 2, 2, 91, 783, 3, 2, 2, 2, 93, 789, 3, 2, 2, 2, 95, 794, 3, 2, 2, 2, 97, 802, 3, 2, 2, 2, 99, 818, 3, 2, 2, 2, 101, 831, 3, 2, 2, 2, 103, 844, 3, 2, 2, 2, 105, 857, 3, 2, 2, 2, 107, 872, 3, 2, 2, 2, 109, 885, 3, 2, 2, 2, 111, 903, 3, 2, 2, 2, 113, 916, 3, 2, 2, 2, 115, 921, 3, 2, 2, 2, 117, 926, 3, 2, 2, 2, 119, 930, 3, 2, 2, 2, 121, 938, 3, 2, 2, 2, 123, 949, 3, 2, 2, 2, 125, 957, 3, 2, 2, 2, 127, 964, 3, 2, 2, 2, 129, 969, 3, 2, 2, 2, 131, 978, 3, 2, 2, 2, 133, 985, 3, 2, 2, 2, 135, 994, 3, 2, 2, 2, 137, 1006, 3, 2, 2, 2, 139, 1013, 3, 2, 2, 2, 141, 1018, 3, 2, 2, 2, 143, 1023, 3, 2, 2, 2, 145, 1029, 3, 2, 2, 2, 147, 1033, 3, 2, 2, 2, 149, 1040, 3, 2, 2, 2, 151, 1047, 3, 2, 2, 2, 153, 1057, 3, 2, 2, 2, 155, 1065, 3, 2, 2, 2, 157, 1072, 3, 2, 2, 2, 159, 1080, 3, 2, 2, 2, 161, 1088, 3, 2, 2, 2, 163, 1094, 3, 2, 2, 2, 165, 1100, 3, 2, 2, 2, 167, 1107, 3, 2, 2, 2, 169, 1113, 3, 2, 2, 2, 171, 1119, 3, 2, 2, 2, 173, 1129, 3, 2, 2, 2, 175, 1133, 3, 2, 2, 2, 177, 1140, 3, 2, 2, 2, 179, 1145, 3, 2, 2, 2, 181, 1150, 3, 2, 2, 2, 183, 1160, 3, 2, 2, 2, 185, 1166, 3, 2, 2, 2, 187, 1174, 3, 2, 2, 2, 189, 1181, 3, 2, 2, 2, 191, 1186, 3, 2, 2, 2, 193, 1195, 3, 2, 2, 2, 195, 1201, 3, 2, 2, 2, 197, 1210, 3, 2, 2, 2, 199, 1217, 3, 2, 2, 2, 201, 1224, 3, 2, 2, 2, 203, 1229, 3, 2, 2, 2, 205, 1232, 3, 2, 2, 2, 207, 1239, 3, 2, 2, 2, 209, 1242, 3, 2, 2, 2, 211, 1252, 3, 2, 2, 2, 213, 1260, 3, 2, 2, 2, 215, 1266, 3, 2, 2, 2, 217, 1272, 3, 2, 2, 2, 219, 1279, 3, 2, 2, 2, 221, 1289, 3, 2, 2, 2, 223, 1298, 3, 2, 2, 2, 225, 1303, 3, 2, 2, 2, 227, 1311, 3, 2, 2, 2, 229, 1314, 3, 2, 2, 2, 231, 1317, 3, 2, 2, 2, 233, 1327, 3, 2, 2, 2, 235, 1332, 3, 2, 2, 2, 237, 1337, 3, 2, 2, 2, 239, 1342, 3, 2, 2, 2, 241, 1350, 3, 2, 2, 2, 243, 1355, 3, 2, 2, 2, 245, 1361, 3, 2, 2, 2, 247, 1366, 3, 2, 2, 2, 249, 1372, 3, 2, 2, 2, 251, 1378, 3, 2, 2, 2, 253, 1388, 3, 2, 2, 2, 255, 1403, 3, 2, 2, 2, 257, 1411, 3, 2, 2, 2, 259, 1415, 3, 2, 2, 2, 261, 1421, 3, 2, 2, 2, 263, 1429, 3, 2, 2, 2, 265, 1437, 3, 2, 2, 2, 267, 1453, 3, 2, 2, 2, 269, 1466, 3, 2, 2, 2, 271, 1475, 3, 2, 2, 2, 273, 1481, 3, 2, 2, 2, 275, 1488, 3, 2, 2, 2, 277, 1494, 3, 2, 2, 2, 279, 1502, 3, 2, 2, 2, 281, 1507, 3, 2, 2, 2, 283, 1511, 3, 2, 2, 2, 285, 1515, 3, 2, 2, 2, 287, 1520, 3, 2, 2, 2, 289, 1525, 3, 2, 2, 2, 291, 1528, 3, 2, 2, 2, 293, 1533, 3, 2, 2, 2, 295, 1543, 3, 2, 2, 2, 297, 1547, 3, 2, 2, 2, 299, 1552, 3, 2, 2, 2, 301, 1559, 3, 2, 2, 2, 303, 1565, 3, 2, 2, 2, 305, 1572, 3, 2, 2, 2, 307, 1577, 3, 2, 2, 2, 309, 1580, 3, 2, 2, 2, 311, 1584, 3, 2, 2, 2, 313, 1589, 3, 2, 2, 2, 315, 1596, 3, 2, 2, 2, 317, 1599, 3, 2, 2, 2, 319, 1605, 3, 2, 2, 2, 321, 1616, 3, 2, 2, 2, 323, 1622, 3, 2, 2, 2, 325, 1629, 3, 2, 2, 2, 327, 1634, 3, 2, 2, 2, 329, 1644, 3, 2, 2, 2, 331, 1655, 3, 2, 2, 2, 333, 1660, 3, 2, 2, 2, 335, 1665, 3, 2, 2, 2, 337, 1673, 3, 2, 2, 2, 339, 1677, 3, 2, 2, 2, 341, 1685, 3, 2, 2, 2, 343, 1694, 3, 2, 2, 2, 345, 1704, 3, 2, 2, 2, 347, 1714, 3, 2, 2, 2, 349, 1722, 3, 2, 2, 2, 351, 1733, 3, 2, 2, 2, 353, 1744, 3, 2, 2, 2, 355, 1750, 3, 2, 2, 2, 357, 1755, 3, 2, 2, 2, 359, 1765, 3, 2, 2, 2, 361, 1773, 3, 2, 2, 2, 363, 1780, 3, 2, 2, 2, 365, 1791, 3, 2, 2, 2, 367, 1799, 3, 2, 2, 2, 369, 1805, 3, 2, 2, 2, 371, 1813, 3, 2, 2, 2, 373, 1822, 3, 2, 2, 2, 375, 1829, 3, 2, 2, 2, 377, 1835, 3, 2, 2, 2, 379, 1840, 3, 2, 2, 2, 381, 1846, 3, 2, 2, 2, 383, 1855, 3, 2, 2, 2, 385, 1862, 3, 2, 2, 2, 387, 1866, 3, 2, 2, 2, 389, 1871, 3, 2, 2, 2, 391, 1879, 3, 2, 2, 2, 393, 1886, 3, 2, 2, 2, 395, 1894, 3, 2, 2, 2, 397, 1901, 3, 2, 2, 2, 399, 1910, 3, 2, 2, 2, 401, 1915, 3, 2, 2, 2, 403, 1922, 3, 2, 2, 2, 405, 1935, 3, 2, 2, 2, 407, 1943, 3, 2, 2, 2, 409, 1947, 3, 2, 2, 2, 411, 1952, 3, 2, 2, 2, 413, 1957, 3, 2, 2, 2, 415, 1962, 3, 2, 2, 2, 417, 1968, 3, 2, 2, 2, 419, 1974, 3, 2, 2, 2, 421, 1981, 3, 2, 2, 2, 423, 1991, 3, 2, 2, 2, 425, 1998, 3, 2, 2, 2, 427, 2004, 3, 2, 2, 2, 429, 2011, 3, 2, 2, 2, 431, 2023, 3, 2, 2, 2, 433, 2028, 3, 2, 2, 2, 435, 2033, 3, 2, 2, 2, 437, 2038, 3, 2, 2, 2, 439, 2043, 3, 2, 2, 2, 441, 2053, 3, 2, 2, 2, 443, 2056, 3, 2, 2, 2, 445, 2068, 3, 2, 2, 2, 447, 2077, 3, 2, 2, 2, 449, 2082, 3, 2, 2, 2, 451, 2091, 3, 2, 2, 2, 453, 2096, 3, 2, 2, 2, 455, 2104, 3, 2, 2, 2, 457, 2114, 3, 2, 2, 2, 459, 2126, 3, 2, 2, 2, 461, 2132, 3, 2, 2, 2, 463, 2142, 3, 2, 2, 2, 465, 2149, 3, 2, 2, 2, 467, 2156, 3, 2, 2, 2, 469, 2160, 3, 2, 2, 2, 471, 2165, 3, 2, 2, 2, 473, 2171, 3, 2, 2, 2, 475, 2180, 3, 2, 2, 2, 477, 2187, 3, 2, 2, 2, 479, 2195, 3, 2, 2, 2, 481, 2200, 3, 2, 2, 2, 483, 2205, 3, 2, 2, 2, 485, 2211, 3, 2, 2, 2, 487, 2218, 3, 2, 2, 2, 489, 2223, 3, 2, 2, 2, 491, 2231, 3, 2, 2, 2, 493, 2236, 3, 2, 2, 2, 495, 2242, 3, 2, 2, 2, 497, 2247, 3, 2, 2, 2, 499, 2252, 3, 2, 2, 2, 501, 2258, 3, 2, 2, 2, 503, 2260, 3, 2, 2, 2, 505, 2262, 3, 2, 2, 2, 507, 2265, 3, 2, 2, 2, 509, 2267, 3, 2, 2, 2, 511, 2270, 3, 2, 2, 2, 513, 2272, 3, 2, 2, 2, 515, 2274, 3, 2, 2, 2, 517, 2276, 3, 2, 2, 2, 519, 2278, 3, 2, 2, 2, 521, 2280, 3, 2, 2, 2, 523, 2283, 3, 2, 2, 2, 525, 2285, 3, 2, 2, 2, 527, 2296, 3, 2, 2, 2, 529, 2310, 3, 2, 2, 2, 531, 2322, 3, 2, 2, 2, 533, 2344, 3, 2, 2, 2, 535, 2370, 3, 2, 2, 2, 537, 2374, 3, 2, 2, 2, 539, 2384, 3, 2, 2, 2, 541, 2392, 3, 2, 2, 2, 543, 2403, 3, 2, 2, 2, 545, 2414, 3, 2, 2, 2, 547, 2416, 3, 2, 2, 2, 549, 2425, 3, 2, 2, 2, 551, 2427, 3, 2, 2, 2, 553, 2429, 3, 2, 2, 2, 555, 2446, 3, 2, 2, 2, 557, 2461, 3, 2, 2, 2, 559, 2467, 3, 2, 2, 2, 561, 562, 7, 48, 2, 2, 562, 4, 3, 2, 2, 2, 563, 564, 7, 42, 2, 2, 564, 6, 3, 2, 2, 2, 565, 566, 7, 43, 2, 2, 566, 8, 3, 2, 2, 2, 567, 568, 7, 46, 2, 2, 568, 10, 3, 2, 2, 2, 569, 570, 7, 85, 2, 2, 570, 571, 7, 77, 2, 2, 571, 572, 7, 75, 2, 2, 572, 573, 7, 82, 2, 2, 573, 12, 3, 2, 2, 2, 574, 575, 7, 47, 2, 2, 575, 576, 7, 64, 2, 2, 576, 14, 3, 2, 2, 2, 577, 578, 7, 93, 2, 2, 578, 16, 3, 2, 2, 2, 579, 580, 7, 95, 2, 2, 580, 18, 3, 2, 2, 2, 581, 582, 7, 126, 2, 2, 582, 20, 3, 2, 2, 2, 583, 584, 7, 96, 2, 2, 584, 22, 3, 2, 2, 2, 585, 586, 7, 38, 2, 2, 586, 24, 3, 2, 2, 2, 587, 588, 7, 125, 2, 2, 588, 589, 7, 47, 2, 2, 589, 26, 3, 2, 2, 2, 590, 591, 7, 47, 2, 2, 591, 592, 7, 127, 2, 2, 592, 28, 3, 2, 2, 2, 593, 594, 7, 125, 2, 2, 594, 30, 3, 2, 2, 2, 595, 596, 7, 127, 2, 2, 596, 32, 3, 2, 2, 2, 597, 598, 7, 63, 2, 2, 598, 599, 7, 64, 2, 2, 599, 34, 3, 2, 2, 2, 600, 601, 7, 67, 2, 2, 601, 602, 7, 70, 2, 2, 602, 603, 7, 70, 2, 2, 603, 36, 3, 2, 2, 2, 604, 605, 7, 67, 2, 2, 605, 606, 7, 70, 2, 2, 606, 607, 7, 79, 2, 2, 607, 608, 7, 75, 2, 2, 608, 609, 7, 80, 2, 2, 609, 38, 3, 2, 2, 2, 610, 611, 7, 67, 2, 2, 611, 612, 7, 72, 2, 2, 612, 613, 7, 86, 2, 2, 613, 614, 7, 71, 2, 2, 614, 615, 7, 84, 2, 2, 615, 40, 3, 2, 2, 2, 616, 617, 7, 67, 2, 2, 617, 618, 7, 78, 2, 2, 618, 619, 7, 78, 2, 2, 619, 42, 3, 2, 2, 2, 620, 621, 7, 67, 2, 2, 621, 622, 7, 78, 2, 2, 622, 623, 7, 86, 2, 2, 623, 624, 7, 71, 2, 2, 624, 625, 7, 84, 2, 2, 625, 44, 3, 2, 2, 2, 626, 627, 7, 67, 2, 2, 627, 628, 7, 80, 2, 2, 628, 629, 7, 67, 2, 2, 629, 630, 7, 78, 2, 2, 630, 631, 7, 91, 2, 2, 631, 632, 7, 92, 2, 2, 632, 633, 7, 71, 2, 2, 633, 46, 3, 2, 2, 2, 634, 635, 7, 67, 2, 2, 635, 636, 7, 80, 2, 2, 636, 637, 7, 70, 2, 2, 637, 48, 3, 2, 2, 2, 638, 639, 7, 67, 2, 2, 639, 640, 7, 80, 2, 2, 640, 641, 7, 91, 2, 2, 641, 50, 3, 2, 2, 2, 642, 643, 7, 67, 2, 2, 643, 644, 7, 84, 2, 2, 644, 645, 7, 84, 2, 2, 645, 646, 7, 67, 2, 2, 646, 647, 7, 91, 2, 2, 647, 52, 3, 2, 2, 2, 648, 649, 7, 67, 2, 2, 649, 650, 7, 85, 2, 2, 650, 54, 3, 2, 2, 2, 651, 652, 7, 67, 2, 2, 652, 653, 7, 85, 2, 2, 653, 654, 7, 69, 2, 2, 654, 56, 3, 2, 2, 2, 655, 656, 7, 67, 2, 2, 656, 657, 7, 86, 2, 2, 657, 58, 3, 2, 2, 2, 658, 659, 7, 67, 2, 2, 659, 660, 7, 87, 2, 2, 660, 661, 7, 86, 2, 2, 661, 662, 7, 74, 2, 2, 662, 663, 7, 81, 2, 2, 663, 664, 7, 84, 2, 2, 664, 665, 7, 75, 2, 2, 665, 666, 7, 92, 2, 2, 666, 667, 7, 67, 2, 2, 667, 668, 7, 86, 2, 2, 668, 669, 7, 75, 2, 2, 669, 670, 7, 81, 2, 2, 670, 671, 7, 80, 2, 2, 671, 60, 3, 2, 2, 2, 672, 673, 7, 68, 2, 2, 673, 674, 7, 71, 2, 2, 674, 675, 7, 84, 2, 2, 675, 676, 7, 80, 2, 2, 676, 677, 7, 81, 2, 2, 677, 678, 7, 87, 2, 2, 678, 679, 7, 78, 2, 2, 679, 680, 7, 78, 2, 2, 680, 681, 7, 75, 2, 2, 681, 62, 3, 2, 2, 2, 682, 683, 7, 68, 2, 2, 683, 684, 7, 71, 2, 2, 684, 685, 7, 86, 2, 2, 685, 686, 7, 89, 2, 2, 686, 687, 7, 71, 2, 2, 687, 688, 7, 71, 2, 2, 688, 689, 7, 80, 2, 2, 689, 64, 3, 2, 2, 2, 690, 691, 7, 68, 2, 2, 691, 692, 7, 91, 2, 2, 692, 66, 3, 2, 2, 2, 693, 694, 7, 69, 2, 2, 694, 695, 7, 67, 2, 2, 695, 696, 7, 78, 2, 2, 696, 697, 7, 78, 2, 2, 697, 68, 3, 2, 2, 2, 698, 699, 7, 69, 2, 2, 699, 700, 7, 67, 2, 2, 700, 701, 7, 85, 2, 2, 701, 702, 7, 69, 2, 2, 702, 703, 7, 67, 2, 2, 703, 704, 7, 70, 2, 2, 704, 705, 7, 71, 2, 2, 705, 70, 3, 2, 2, 2, 706, 707, 7, 69, 2, 2, 707, 708, 7, 67, 2, 2, 708, 709, 7, 85, 2, 2, 709, 710, 7, 71, 2, 2, 710, 72, 3, 2, 2, 2, 711, 712, 7, 69, 2, 2, 712, 713, 7, 67, 2, 2, 713, 714, 7, 85, 2, 2, 714, 715, 7, 86, 2, 2, 715, 74, 3, 2, 2, 2, 716, 717, 7, 69, 2, 2, 717, 718, 7, 67, 2, 2, 718, 719, 7, 86, 2, 2, 719, 720, 7, 67, 2, 2, 720, 721, 7, 78, 2, 2, 721, 722, 7, 81, 2, 2, 722, 723, 7, 73, 2, 2, 723, 724, 7, 85, 2, 2, 724, 76, 3, 2, 2, 2, 725, 726, 7, 69, 2, 2, 726, 727, 7, 81, 2, 2, 727, 728, 7, 78, 2, 2, 728, 729, 7, 87, 2, 2, 729, 730, 7, 79, 2, 2, 730, 731, 7, 80, 2, 2, 731, 78, 3, 2, 2, 2, 732, 733, 7, 69, 2, 2, 733, 734, 7, 81, 2, 2, 734, 735, 7, 78, 2, 2, 735, 736, 7, 87, 2, 2, 736, 737, 7, 79, 2, 2, 737, 738, 7, 80, 2, 2, 738, 739, 7, 85, 2, 2, 739, 80, 3, 2, 2, 2, 740, 741, 7, 69, 2, 2, 741, 742, 7, 81, 2, 2, 742, 743, 7, 79, 2, 2, 743, 744, 7, 79, 2, 2, 744, 745, 7, 71, 2, 2, 745, 746, 7, 80, 2, 2, 746, 747, 7, 86, 2, 2, 747, 82, 3, 2, 2, 2, 748, 749, 7, 69, 2, 2, 749, 750, 7, 81, 2, 2, 750, 751, 7, 79, 2, 2, 751, 752, 7, 79, 2, 2, 752, 753, 7, 75, 2, 2, 753, 754, 7, 86, 2, 2, 754, 84, 3, 2, 2, 2, 755, 756, 7, 69, 2, 2, 756, 757, 7, 81, 2, 2, 757, 758, 7, 79, 2, 2, 758, 759, 7, 79, 2, 2, 759, 760, 7, 75, 2, 2, 760, 761, 7, 86, 2, 2, 761, 762, 7, 86, 2, 2, 762, 763, 7, 71, 2, 2, 763, 764, 7, 70, 2, 2, 764, 86, 3, 2, 2, 2, 765, 766, 7, 69, 2, 2, 766, 767, 7, 81, 2, 2, 767, 768, 7, 80, 2, 2, 768, 769, 7, 85, 2, 2, 769, 770, 7, 86, 2, 2, 770, 771, 7, 84, 2, 2, 771, 772, 7, 67, 2, 2, 772, 773, 7, 75, 2, 2, 773, 774, 7, 80, 2, 2, 774, 775, 7, 86, 2, 2, 775, 88, 3, 2, 2, 2, 776, 777, 7, 69, 2, 2, 777, 778, 7, 84, 2, 2, 778, 779, 7, 71, 2, 2, 779, 780, 7, 67, 2, 2, 780, 781, 7, 86, 2, 2, 781, 782, 7, 71, 2, 2, 782, 90, 3, 2, 2, 2, 783, 784, 7, 69, 2, 2, 784, 785, 7, 84, 2, 2, 785, 786, 7, 81, 2, 2, 786, 787, 7, 85, 2, 2, 787, 788, 7, 85, 2, 2, 788, 92, 3, 2, 2, 2, 789, 790, 7, 69, 2, 2, 790, 791, 7, 87, 2, 2, 791, 792, 7, 68, 2, 2, 792, 793, 7, 71, 2, 2, 793, 94, 3, 2, 2, 2, 794, 795, 7, 69, 2, 2, 795, 796, 7, 87, 2, 2, 796, 797, 7, 84, 2, 2, 797, 798, 7, 84, 2, 2, 798, 799, 7, 71, 2, 2, 799, 800, 7, 80, 2, 2, 800, 801, 7, 86, 2, 2, 801, 96, 3, 2, 2, 2, 802, 803, 7, 69, 2, 2, 803, 804, 7, 87, 2, 2, 804, 805, 7, 84, 2, 2, 805, 806, 7, 84, 2, 2, 806, 807, 7, 71, 2, 2, 807, 808, 7, 80, 2, 2, 808, 809, 7, 86, 2, 2, 809, 810, 7, 97, 2, 2, 810, 811, 7, 69, 2, 2, 811, 812, 7, 67, 2, 2, 812, 813, 7, 86, 2, 2, 813, 814, 7, 67, 2, 2, 814, 815, 7, 78, 2, 2, 815, 816, 7, 81, 2, 2, 816, 817, 7, 73, 2, 2, 817, 98, 3, 2, 2, 2, 818, 819, 7, 69, 2, 2, 819, 820, 7, 87, 2, 2, 820, 821, 7, 84, 2, 2, 821, 822, 7, 84, 2, 2, 822, 823, 7, 71, 2, 2, 823, 824, 7, 80, 2, 2, 824, 825, 7, 86, 2, 2, 825, 826, 7, 97, 2, 2, 826, 827, 7, 70, 2, 2, 827, 828, 7, 67, 2, 2, 828, 829, 7, 86, 2, 2, 829, 830, 7, 71, 2, 2, 830, 100, 3, 2, 2, 2, 831, 832, 7, 69, 2, 2, 832, 833, 7, 87, 2, 2, 833, 834, 7, 84, 2, 2, 834, 835, 7, 84, 2, 2, 835, 836, 7, 71, 2, 2, 836, 837, 7, 80, 2, 2, 837, 838, 7, 86, 2, 2, 838, 839, 7, 97, 2, 2, 839, 840, 7, 82, 2, 2, 840, 841, 7, 67, 2, 2, 841, 842, 7, 86, 2, 2, 842, 843, 7, 74, 2, 2, 843, 102, 3, 2, 2, 2, 844, 845, 7, 69, 2, 2, 845, 846, 7, 87, 2, 2, 846, 847, 7, 84, 2, 2, 847, 848, 7, 84, 2, 2, 848, 849, 7, 71, 2, 2, 849, 850, 7, 80, 2, 2, 850, 851, 7, 86, 2, 2, 851, 852, 7, 97, 2, 2, 852, 853, 7, 84, 2, 2, 853, 854, 7, 81, 2, 2, 854, 855, 7, 78, 2, 2, 855, 856, 7, 71, 2, 2, 856, 104, 3, 2, 2, 2, 857, 858, 7, 69, 2, 2, 858, 859, 7, 87, 2, 2, 859, 860, 7, 84, 2, 2, 860, 861, 7, 84, 2, 2, 861, 862, 7, 71, 2, 2, 862, 863, 7, 80, 2, 2, 863, 864, 7, 86, 2, 2, 864, 865, 7, 97, 2, 2, 865, 866, 7, 85, 2, 2, 866, 867, 7, 69, 2, 2, 867, 868, 7, 74, 2, 2, 868, 869, 7, 71, 2, 2, 869, 870, 7, 79, 2, 2, 870, 871, 7, 67, 2, 2, 871, 106, 3, 2, 2, 2, 872, 873, 7, 69, 2, 2, 873, 874, 7, 87, 2, 2, 874, 875, 7, 84, 2, 2, 875, 876, 7, 84, 2, 2, 876, 877, 7, 71, 2, 2, 877, 878, 7, 80, 2, 2, 878, 879, 7, 86, 2, 2, 879, 880, 7, 97, 2, 2, 880, 881, 7, 86, 2, 2, 881, 882, 7, 75, 2, 2, 882, 883, 7, 79, 2, 2, 883, 884, 7, 71, 2, 2, 884, 108, 3, 2, 2, 2, 885, 886, 7, 69, 2, 2, 886, 887, 7, 87, 2, 2, 887, 888, 7, 84, 2, 2, 888, 889, 7, 84, 2, 2, 889, 890, 7, 71, 2, 2, 890, 891, 7, 80, 2, 2, 891, 892, 7, 86, 2, 2, 892, 893, 7, 97, 2, 2, 893, 894, 7, 86, 2, 2, 894, 895, 7, 75, 2, 2, 895, 896, 7, 79, 2, 2, 896, 897, 7, 71, 2, 2, 897, 898, 7, 85, 2, 2, 898, 899, 7, 86, 2, 2, 899, 900, 7, 67, 2, 2, 900, 901, 7, 79, 2, 2, 901, 902, 7, 82, 2, 2, 902, 110, 3, 2, 2, 2, 903, 904, 7, 69, 2, 2, 904, 905, 7, 87, 2, 2, 905, 906, 7, 84, 2, 2, 906, 907, 7, 84, 2, 2, 907, 908, 7, 71, 2, 2, 908, 909, 7, 80, 2, 2, 909, 910, 7, 86, 2, 2, 910, 911, 7, 97, 2, 2, 911, 912, 7, 87, 2, 2, 912, 913, 7, 85, 2, 2, 913, 914, 7, 71, 2, 2, 914, 915, 7, 84, 2, 2, 915, 112, 3, 2, 2, 2, 916, 917, 7, 70, 2, 2, 917, 918, 7, 67, 2, 2, 918, 919, 7, 86, 2, 2, 919, 920, 7, 67, 2, 2, 920, 114, 3, 2, 2, 2, 921, 922, 7, 70, 2, 2, 922, 923, 7, 67, 2, 2, 923, 924, 7, 86, 2, 2, 924, 925, 7, 71, 2, 2, 925, 116, 3, 2, 2, 2, 926, 927, 7, 70, 2, 2, 927, 928, 7, 67, 2, 2, 928, 929, 7, 91, 2, 2, 929, 118, 3, 2, 2, 2, 930, 931, 7, 70, 2, 2, 931, 932, 7, 71, 2, 2, 932, 933, 7, 72, 2, 2, 933, 934, 7, 67, 2, 2, 934, 935, 7, 87, 2, 2, 935, 936, 7, 78, 2, 2, 936, 937, 7, 86, 2, 2, 937, 120, 3, 2, 2, 2, 938, 939, 7, 70, 2, 2, 939, 940, 7, 71, 2, 2, 940, 941, 7, 67, 2, 2, 941, 942, 7, 78, 2, 2, 942, 943, 7, 78, 2, 2, 943, 944, 7, 81, 2, 2, 944, 945, 7, 69, 2, 2, 945, 946, 7, 67, 2, 2, 946, 947, 7, 86, 2, 2, 947, 948, 7, 71, 2, 2, 948, 122, 3, 2, 2, 2, 949, 950, 7, 70, 2, 2, 950, 951, 7, 71, 2, 2, 951, 952, 7, 72, 2, 2, 952, 953, 7, 75, 2, 2, 953, 954, 7, 80, 2, 2, 954, 955, 7, 71, 2, 2, 955, 956, 7, 84, 2, 2, 956, 124, 3, 2, 2, 2, 957, 958, 7, 70, 2, 2, 958, 959, 7, 71, 2, 2, 959, 960, 7, 78, 2, 2, 960, 961, 7, 71, 2, 2, 961, 962, 7, 86, 2, 2, 962, 963, 7, 71, 2, 2, 963, 126, 3, 2, 2, 2, 964, 965, 7, 70, 2, 2, 965, 966, 7, 71, 2, 2, 966, 967, 7, 85, 2, 2, 967, 968, 7, 69, 2, 2, 968, 128, 3, 2, 2, 2, 969, 970, 7, 70, 2, 2, 970, 971, 7, 71, 2, 2, 971, 972, 7, 85, 2, 2, 972, 973, 7, 69, 2, 2, 973, 974, 7, 84, 2, 2, 974, 975, 7, 75, 2, 2, 975, 976, 7, 68, 2, 2, 976, 977, 7, 71, 2, 2, 977, 130, 3, 2, 2, 2, 978, 979, 7, 70, 2, 2, 979, 980, 7, 71, 2, 2, 980, 981, 7, 72, 2, 2, 981, 982, 7, 75, 2, 2, 982, 983, 7, 80, 2, 2, 983, 984, 7, 71, 2, 2, 984, 132, 3, 2, 2, 2, 985, 986, 7, 70, 2, 2, 986, 987, 7, 75, 2, 2, 987, 988, 7, 85, 2, 2, 988, 989, 7, 86, 2, 2, 989, 990, 7, 75, 2, 2, 990, 991, 7, 80, 2, 2, 991, 992, 7, 69, 2, 2, 992, 993, 7, 86, 2, 2, 993, 134, 3, 2, 2, 2, 994, 995, 7, 70, 2, 2, 995, 996, 7, 75, 2, 2, 996, 997, 7, 85, 2, 2, 997, 998, 7, 86, 2, 2, 998, 999, 7, 84, 2, 2, 999, 1000, 7, 75, 2, 2, 1000, 1001, 7, 68, 2, 2, 1001, 1002, 7, 87, 2, 2, 1002, 1003, 7, 86, 2, 2, 1003, 1004, 7, 71, 2, 2, 1004, 1005, 7, 70, 2, 2, 1005, 136, 3, 2, 2, 2, 1006, 1007, 7, 70, 2, 2, 1007, 1008, 7, 81, 2, 2, 1008, 1009, 7, 87, 2, 2, 1009, 1010, 7, 68, 2, 2, 1010, 1011, 7, 78, 2, 2, 1011, 1012, 7, 71, 2, 2, 1012, 138, 3, 2, 2, 2, 1013, 1014, 7, 70, 2, 2, 1014, 1015, 7, 84, 2, 2, 1015, 1016, 7, 81, 2, 2, 1016, 1017, 7, 82, 2, 2, 1017, 140, 3, 2, 2, 2, 1018, 1019, 7, 71, 2, 2, 1019, 1020, 7, 78, 2, 2, 1020, 1021, 7, 85, 2, 2, 1021, 1022, 7, 71, 2, 2, 1022, 142, 3, 2, 2, 2, 1023, 1024, 7, 71, 2, 2, 1024, 1025, 7, 79, 2, 2, 1025, 1026, 7, 82, 2, 2, 1026, 1027, 7, 86, 2, 2, 1027, 1028, 7, 91, 2, 2, 1028, 144, 3, 2, 2, 2, 1029, 1030, 7, 71, 2, 2, 1030, 1031, 7, 80, 2, 2, 1031, 1032, 7, 70, 2, 2, 1032, 146, 3, 2, 2, 2, 1033, 1034, 7, 71, 2, 2, 1034, 1035, 7, 85, 2, 2, 1035, 1036, 7, 69, 2, 2, 1036, 1037, 7, 67, 2, 2, 1037, 1038, 7, 82, 2, 2, 1038, 1039, 7, 71, 2, 2, 1039, 148, 3, 2, 2, 2, 1040, 1041, 7, 71, 2, 2, 1041, 1042, 7, 90, 2, 2, 1042, 1043, 7, 69, 2, 2, 1043, 1044, 7, 71, 2, 2, 1044, 1045, 7, 82, 2, 2, 1045, 1046, 7, 86, 2, 2, 1046, 150, 3, 2, 2, 2, 1047, 1048, 7, 71, 2, 2, 1048, 1049, 7, 90, 2, 2, 1049, 1050, 7, 69, 2, 2, 1050, 1051, 7, 78, 2, 2, 1051, 1052, 7, 87, 2, 2, 1052, 1053, 7, 70, 2, 2, 1053, 1054, 7, 75, 2, 2, 1054, 1055, 7, 80, 2, 2, 1055, 1056, 7, 73, 2, 2, 1056, 152, 3, 2, 2, 2, 1057, 1058, 7, 71, 2, 2, 1058, 1059, 7, 90, 2, 2, 1059, 1060, 7, 71, 2, 2, 1060, 1061, 7, 69, 2, 2, 1061, 1062, 7, 87, 2, 2, 1062, 1063, 7, 86, 2, 2, 1063, 1064, 7, 71, 2, 2, 1064, 154, 3, 2, 2, 2, 1065, 1066, 7, 71, 2, 2, 1066, 1067, 7, 90, 2, 2, 1067, 1068, 7, 75, 2, 2, 1068, 1069, 7, 85, 2, 2, 1069, 1070, 7, 86, 2, 2, 1070, 1071, 7, 85, 2, 2, 1071, 156, 3, 2, 2, 2, 1072, 1073, 7, 71, 2, 2, 1073, 1074, 7, 90, 2, 2, 1074, 1075, 7, 82, 2, 2, 1075, 1076, 7, 78, 2, 2, 1076, 1077, 7, 67, 2, 2, 1077, 1078, 7, 75, 2, 2, 1078, 1079, 7, 80, 2, 2, 1079, 158, 3, 2, 2, 2, 1080, 1081, 7, 71, 2, 2, 1081, 1082, 7, 90, 2, 2, 1082, 1083, 7, 86, 2, 2, 1083, 1084, 7, 84, 2, 2, 1084, 1085, 7, 67, 2, 2, 1085, 1086, 7, 69, 2, 2, 1086, 1087, 7, 86, 2, 2, 1087, 160, 3, 2, 2, 2, 1088, 1089, 7, 72, 2, 2, 1089, 1090, 7, 67, 2, 2, 1090, 1091, 7, 78, 2, 2, 1091, 1092, 7, 85, 2, 2, 1092, 1093, 7, 71, 2, 2, 1093, 162, 3, 2, 2, 2, 1094, 1095, 7, 72, 2, 2, 1095, 1096, 7, 71, 2, 2, 1096, 1097, 7, 86, 2, 2, 1097, 1098, 7, 69, 2, 2, 1098, 1099, 7, 74, 2, 2, 1099, 164, 3, 2, 2, 2, 1100, 1101, 7, 72, 2, 2, 1101, 1102, 7, 75, 2, 2, 1102, 1103, 7, 78, 2, 2, 1103, 1104, 7, 86, 2, 2, 1104, 1105, 7, 71, 2, 2, 1105, 1106, 7, 84, 2, 2, 1106, 166, 3, 2, 2, 2, 1107, 1108, 7, 72, 2, 2, 1108, 1109, 7, 75, 2, 2, 1109, 1110, 7, 80, 2, 2, 1110, 1111, 7, 67, 2, 2, 1111, 1112, 7, 78, 2, 2, 1112, 168, 3, 2, 2, 2, 1113, 1114, 7, 72, 2, 2, 1114, 1115, 7, 75, 2, 2, 1115, 1116, 7, 84, 2, 2, 1116, 1117, 7, 85, 2, 2, 1117, 1118, 7, 86, 2, 2, 1118, 170, 3, 2, 2, 2, 1119, 1120, 7, 72, 2, 2, 1120, 1121, 7, 81, 2, 2, 1121, 1122, 7, 78, 2, 2, 1122, 1123, 7, 78, 2, 2, 1123, 1124, 7, 81, 2, 2, 1124, 1125, 7, 89, 2, 2, 1125, 1126, 7, 75, 2, 2, 1126, 1127, 7, 80, 2, 2, 1127, 1128, 7, 73, 2, 2, 1128, 172, 3, 2, 2, 2, 1129, 1130, 7, 72, 2, 2, 1130, 1131, 7, 81, 2, 2, 1131, 1132, 7, 84, 2, 2, 1132, 174, 3, 2, 2, 2, 1133, 1134, 7, 72, 2, 2, 1134, 1135, 7, 81, 2, 2, 1135, 1136, 7, 84, 2, 2, 1136, 1137, 7, 79, 2, 2, 1137, 1138, 7, 67, 2, 2, 1138, 1139, 7, 86, 2, 2, 1139, 176, 3, 2, 2, 2, 1140, 1141, 7, 72, 2, 2, 1141, 1142, 7, 84, 2, 2, 1142, 1143, 7, 81, 2, 2, 1143, 1144, 7, 79, 2, 2, 1144, 178, 3, 2, 2, 2, 1145, 1146, 7, 72, 2, 2, 1146, 1147, 7, 87, 2, 2, 1147, 1148, 7, 78, 2, 2, 1148, 1149, 7, 78, 2, 2, 1149, 180, 3, 2, 2, 2, 1150, 1151, 7, 72, 2, 2, 1151, 1152, 7, 87, 2, 2, 1152, 1153, 7, 80, 2, 2, 1153, 1154, 7, 69, 2, 2, 1154, 1155, 7, 86, 2, 2, 1155, 1156, 7, 75, 2, 2, 1156, 1157, 7, 81, 2, 2, 1157, 1158, 7, 80, 2, 2, 1158, 1159, 7, 85, 2, 2, 1159, 182, 3, 2, 2, 2, 1160, 1161, 7, 73, 2, 2, 1161, 1162, 7, 84, 2, 2, 1162, 1163, 7, 67, 2, 2, 1163, 1164, 7, 80, 2, 2, 1164, 1165, 7, 86, 2, 2, 1165, 184, 3, 2, 2, 2, 1166, 1167, 7, 73, 2, 2, 1167, 1168, 7, 84, 2, 2, 1168, 1169, 7, 67, 2, 2, 1169, 1170, 7, 80, 2, 2, 1170, 1171, 7, 86, 2, 2, 1171, 1172, 7, 71, 2, 2, 1172, 1173, 7, 70, 2, 2, 1173, 186, 3, 2, 2, 2, 1174, 1175, 7, 73, 2, 2, 1175, 1176, 7, 84, 2, 2, 1176, 1177, 7, 67, 2, 2, 1177, 1178, 7, 80, 2, 2, 1178, 1179, 7, 86, 2, 2, 1179, 1180, 7, 85, 2, 2, 1180, 188, 3, 2, 2, 2, 1181, 1182, 7, 70, 2, 2, 1182, 1183, 7, 71, 2, 2, 1183, 1184, 7, 80, 2, 2, 1184, 1185, 7, 91, 2, 2, 1185, 190, 3, 2, 2, 2, 1186, 1187, 7, 73, 2, 2, 1187, 1188, 7, 84, 2, 2, 1188, 1189, 7, 67, 2, 2, 1189, 1190, 7, 82, 2, 2, 1190, 1191, 7, 74, 2, 2, 1191, 1192, 7, 88, 2, 2, 1192, 1193, 7, 75, 2, 2, 1193, 1194, 7, 92, 2, 2, 1194, 192, 3, 2, 2, 2, 1195, 1196, 7, 73, 2, 2, 1196, 1197, 7, 84, 2, 2, 1197, 1198, 7, 81, 2, 2, 1198, 1199, 7, 87, 2, 2, 1199, 1200, 7, 82, 2, 2, 1200, 194, 3, 2, 2, 2, 1201, 1202, 7, 73, 2, 2, 1202, 1203, 7, 84, 2, 2, 1203, 1204, 7, 81, 2, 2, 1204, 1205, 7, 87, 2, 2, 1205, 1206, 7, 82, 2, 2, 1206, 1207, 7, 75, 2, 2, 1207, 1208, 7, 80, 2, 2, 1208, 1209, 7, 73, 2, 2, 1209, 196, 3, 2, 2, 2, 1210, 1211, 7, 73, 2, 2, 1211, 1212, 7, 84, 2, 2, 1212, 1213, 7, 81, 2, 2, 1213, 1214, 7, 87, 2, 2, 1214, 1215, 7, 82, 2, 2, 1215, 1216, 7, 85, 2, 2, 1216, 198, 3, 2, 2, 2, 1217, 1218, 7, 74, 2, 2, 1218, 1219, 7, 67, 2, 2, 1219, 1220, 7, 88, 2, 2, 1220, 1221, 7, 75, 2, 2, 1221, 1222, 7, 80, 2, 2, 1222, 1223, 7, 73, 2, 2, 1223, 200, 3, 2, 2, 2, 1224, 1225, 7, 74, 2, 2, 1225, 1226, 7, 81, 2, 2, 1226, 1227, 7, 87, 2, 2, 1227, 1228, 7, 84, 2, 2, 1228, 202, 3, 2, 2, 2, 1229, 1230, 7, 75, 2, 2, 1230, 1231, 7, 72, 2, 2, 1231, 204, 3, 2, 2, 2, 1232, 1233, 7, 75, 2, 2, 1233, 1234, 7, 73, 2, 2, 1234, 1235, 7, 80, 2, 2, 1235, 1236, 7, 81, 2, 2, 1236, 1237, 7, 84, 2, 2, 1237, 1238, 7, 71, 2, 2, 1238, 206, 3, 2, 2, 2, 1239, 1240, 7, 75, 2, 2, 1240, 1241, 7, 80, 2, 2, 1241, 208, 3, 2, 2, 2, 1242, 1243, 7, 75, 2, 2, 1243, 1244, 7, 80, 2, 2, 1244, 1245, 7, 69, 2, 2, 1245, 1246, 7, 78, 2, 2, 1246, 1247, 7, 87, 2, 2, 1247, 1248, 7, 70, 2, 2, 1248, 1249, 7, 75, 2, 2, 1249, 1250, 7, 80, 2, 2, 1250, 1251, 7, 73, 2, 2, 1251, 210, 3, 2, 2, 2, 1252, 1253, 7, 75, 2, 2, 1253, 1254, 7, 80, 2, 2, 1254, 1255, 7, 75, 2, 2, 1255, 1256, 7, 86, 2, 2, 1256, 1257, 7, 75, 2, 2, 1257, 1258, 7, 67, 2, 2, 1258, 1259, 7, 78, 2, 2, 1259, 212, 3, 2, 2, 2, 1260, 1261, 7, 75, 2, 2, 1261, 1262, 7, 80, 2, 2, 1262, 1263, 7, 80, 2, 2, 1263, 1264, 7, 71, 2, 2, 1264, 1265, 7, 84, 2, 2, 1265, 214, 3, 2, 2, 2, 1266, 1267, 7, 75, 2, 2, 1267, 1268, 7, 80, 2, 2, 1268, 1269, 7, 82, 2, 2, 1269, 1270, 7, 87, 2, 2, 1270, 1271, 7, 86, 2, 2, 1271, 216, 3, 2, 2, 2, 1272, 1273, 7, 75, 2, 2, 1273, 1274, 7, 80, 2, 2, 1274, 1275, 7, 85, 2, 2, 1275, 1276, 7, 71, 2, 2, 1276, 1277, 7, 84, 2, 2, 1277, 1278, 7, 86, 2, 2, 1278, 218, 3, 2, 2, 2, 1279, 1280, 7, 75, 2, 2, 1280, 1281, 7, 80, 2, 2, 1281, 1282, 7, 86, 2, 2, 1282, 1283, 7, 71, 2, 2, 1283, 1284, 7, 84, 2, 2, 1284, 1285, 7, 85, 2, 2, 1285, 1286, 7, 71, 2, 2, 1286, 1287, 7, 69, 2, 2, 1287, 1288, 7, 86, 2, 2, 1288, 220, 3, 2, 2, 2, 1289, 1290, 7, 75, 2, 2, 1290, 1291, 7, 80, 2, 2, 1291, 1292, 7, 86, 2, 2, 1292, 1293, 7, 71, 2, 2, 1293, 1294, 7, 84, 2, 2, 1294, 1295, 7, 88, 2, 2, 1295, 1296, 7, 67, 2, 2, 1296, 1297, 7, 78, 2, 2, 1297, 222, 3, 2, 2, 2, 1298, 1299, 7, 75, 2, 2, 1299, 1300, 7, 80, 2, 2, 1300, 1301, 7, 86, 2, 2, 1301, 1302, 7, 81, 2, 2, 1302, 224, 3, 2, 2, 2, 1303, 1304, 7, 75, 2, 2, 1304, 1305, 7, 80, 2, 2, 1305, 1306, 7, 88, 2, 2, 1306, 1307, 7, 81, 2, 2, 1307, 1308, 7, 77, 2, 2, 1308, 1309, 7, 71, 2, 2, 1309, 1310, 7, 84, 2, 2, 1310, 226, 3, 2, 2, 2, 1311, 1312, 7, 75, 2, 2, 1312, 1313, 7, 81, 2, 2, 1313, 228, 3, 2, 2, 2, 1314, 1315, 7, 75, 2, 2, 1315, 1316, 7, 85, 2, 2, 1316, 230, 3, 2, 2, 2, 1317, 1318, 7, 75, 2, 2, 1318, 1319, 7, 85, 2, 2, 1319, 1320, 7, 81, 2, 2, 1320, 1321, 7, 78, 2, 2, 1321, 1322, 7, 67, 2, 2, 1322, 1323, 7, 86, 2, 2, 1323, 1324, 7, 75, 2, 2, 1324, 1325, 7, 81, 2, 2, 1325, 1326, 7, 80, 2, 2, 1326, 232, 3, 2, 2, 2, 1327, 1328, 7, 76, 2, 2, 1328, 1329, 7, 81, 2, 2, 1329, 1330, 7, 75, 2, 2, 1330, 1331, 7, 80, 2, 2, 1331, 234, 3, 2, 2, 2, 1332, 1333, 7, 76, 2, 2, 1333, 1334, 7, 85, 2, 2, 1334, 1335, 7, 81, 2, 2, 1335, 1336, 7, 80, 2, 2, 1336, 236, 3, 2, 2, 2, 1337, 1338, 7, 78, 2, 2, 1338, 1339, 7, 67, 2, 2, 1339, 1340, 7, 85, 2, 2, 1340, 1341, 7, 86, 2, 2, 1341, 238, 3, 2, 2, 2, 1342, 1343, 7, 78, 2, 2, 1343, 1344, 7, 67, 2, 2, 1344, 1345, 7, 86, 2, 2, 1345, 1346, 7, 71, 2, 2, 1346, 1347, 7, 84, 2, 2, 1347, 1348, 7, 67, 2, 2, 1348, 1349, 7, 78, 2, 2, 1349, 240, 3, 2, 2, 2, 1350, 1351, 7, 78, 2, 2, 1351, 1352, 7, 71, 2, 2, 1352, 1353, 7, 72, 2, 2, 1353, 1354, 7, 86, 2, 2, 1354, 242, 3, 2, 2, 2, 1355, 1356, 7, 78, 2, 2, 1356, 1357, 7, 71, 2, 2, 1357, 1358, 7, 88, 2, 2, 1358, 1359, 7, 71, 2, 2, 1359, 1360, 7, 78, 2, 2, 1360, 244, 3, 2, 2, 2, 1361, 1362, 7, 78, 2, 2, 1362, 1363, 7, 75, 2, 2, 1363, 1364, 7, 77, 2, 2, 1364, 1365, 7, 71, 2, 2, 1365, 246, 3, 2, 2, 2, 1366, 1367, 7, 78, 2, 2, 1367, 1368, 7, 75, 2, 2, 1368, 1369, 7, 79, 2, 2, 1369, 1370, 7, 75, 2, 2, 1370, 1371, 7, 86, 2, 2, 1371, 248, 3, 2, 2, 2, 1372, 1373, 7, 78, 2, 2, 1373, 1374, 7, 81, 2, 2, 1374, 1375, 7, 69, 2, 2, 1375, 1376, 7, 67, 2, 2, 1376, 1377, 7, 78, 2, 2, 1377, 250, 3, 2, 2, 2, 1378, 1379, 7, 78, 2, 2, 1379, 1380, 7, 81, 2, 2, 1380, 1381, 7, 69, 2, 2, 1381, 1382, 7, 67, 2, 2, 1382, 1383, 7, 78, 2, 2, 1383, 1384, 7, 86, 2, 2, 1384, 1385, 7, 75, 2, 2, 1385, 1386, 7, 79, 2, 2, 1386, 1387, 7, 71, 2, 2, 1387, 252, 3, 2, 2, 2, 1388, 1389, 7, 78, 2, 2, 1389, 1390, 7, 81, 2, 2, 1390, 1391, 7, 69, 2, 2, 1391, 1392, 7, 67, 2, 2, 1392, 1393, 7, 78, 2, 2, 1393, 1394, 7, 86, 2, 2, 1394, 1395, 7, 75, 2, 2, 1395, 1396, 7, 79, 2, 2, 1396, 1397, 7, 71, 2, 2, 1397, 1398, 7, 85, 2, 2, 1398, 1399, 7, 86, 2, 2, 1399, 1400, 7, 67, 2, 2, 1400, 1401, 7, 79, 2, 2, 1401, 1402, 7, 82, 2, 2, 1402, 254, 3, 2, 2, 2, 1403, 1404, 7, 78, 2, 2, 1404, 1405, 7, 81, 2, 2, 1405, 1406, 7, 73, 2, 2, 1406, 1407, 7, 75, 2, 2, 1407, 1408, 7, 69, 2, 2, 1408, 1409, 7, 67, 2, 2, 1409, 1410, 7, 78, 2, 2, 1410, 256, 3, 2, 2, 2, 1411, 1412, 7, 79, 2, 2, 1412, 1413, 7, 67, 2, 2, 1413, 1414, 7, 82, 2, 2, 1414, 258, 3, 2, 2, 2, 1415, 1416, 7, 79, 2, 2, 1416, 1417, 7, 67, 2, 2, 1417, 1418, 7, 86, 2, 2, 1418, 1419, 7, 69, 2, 2, 1419, 1420, 7, 74, 2, 2, 1420, 260, 3, 2, 2, 2, 1421, 1422, 7, 79, 2, 2, 1422, 1423, 7, 67, 2, 2, 1423, 1424, 7, 86, 2, 2, 1424, 1425, 7, 69, 2, 2, 1425, 1426, 7, 74, 2, 2, 1426, 1427, 7, 71, 2, 2, 1427, 1428, 7, 70, 2, 2, 1428, 262, 3, 2, 2, 2, 1429, 1430, 7, 79, 2, 2, 1430, 1431, 7, 67, 2, 2, 1431, 1432, 7, 86, 2, 2, 1432, 1433, 7, 69, 2, 2, 1433, 1434, 7, 74, 2, 2, 1434, 1435, 7, 71, 2, 2, 1435, 1436, 7, 85, 2, 2, 1436, 264, 3, 2, 2, 2, 1437, 1438, 7, 79, 2, 2, 1438, 1439, 7, 67, 2, 2, 1439, 1440, 7, 86, 2, 2, 1440, 1441, 7, 69, 2, 2, 1441, 1442, 7, 74, 2, 2, 1442, 1443, 7, 97, 2, 2, 1443, 1444, 7, 84, 2, 2, 1444, 1445, 7, 71, 2, 2, 1445, 1446, 7, 69, 2, 2, 1446, 1447, 7, 81, 2, 2, 1447, 1448, 7, 73, 2, 2, 1448, 1449, 7, 80, 2, 2, 1449, 1450, 7, 75, 2, 2, 1450, 1451, 7, 92, 2, 2, 1451, 1452, 7, 71, 2, 2, 1452, 266, 3, 2, 2, 2, 1453, 1454, 7, 79, 2, 2, 1454, 1455, 7, 67, 2, 2, 1455, 1456, 7, 86, 2, 2, 1456, 1457, 7, 71, 2, 2, 1457, 1458, 7, 84, 2, 2, 1458, 1459, 7, 75, 2, 2, 1459, 1460, 7, 67, 2, 2, 1460, 1461, 7, 78, 2, 2, 1461, 1462, 7, 75, 2, 2, 1462, 1463, 7, 92, 2, 2, 1463, 1464, 7, 71, 2, 2, 1464, 1465, 7, 70, 2, 2, 1465, 268, 3, 2, 2, 2, 1466, 1467, 7, 79, 2, 2, 1467, 1468, 7, 71, 2, 2, 1468, 1469, 7, 67, 2, 2, 1469, 1470, 7, 85, 2, 2, 1470, 1471, 7, 87, 2, 2, 1471, 1472, 7, 84, 2, 2, 1472, 1473, 7, 71, 2, 2, 1473, 1474, 7, 85, 2, 2, 1474, 270, 3, 2, 2, 2, 1475, 1476, 7, 79, 2, 2, 1476, 1477, 7, 71, 2, 2, 1477, 1478, 7, 84, 2, 2, 1478, 1479, 7, 73, 2, 2, 1479, 1480, 7, 71, 2, 2, 1480, 272, 3, 2, 2, 2, 1481, 1482, 7, 79, 2, 2, 1482, 1483, 7, 75, 2, 2, 1483, 1484, 7, 80, 2, 2, 1484, 1485, 7, 87, 2, 2, 1485, 1486, 7, 86, 2, 2, 1486, 1487, 7, 71, 2, 2, 1487, 274, 3, 2, 2, 2, 1488, 1489, 7, 79, 2, 2, 1489, 1490, 7, 81, 2, 2, 1490, 1491, 7, 80, 2, 2, 1491, 1492, 7, 86, 2, 2, 1492, 1493, 7, 74, 2, 2, 1493, 276, 3, 2, 2, 2, 1494, 1495, 7, 80, 2, 2, 1495, 1496, 7, 67, 2, 2, 1496, 1497, 7, 86, 2, 2, 1497, 1498, 7, 87, 2, 2, 1498, 1499, 7, 84, 2, 2, 1499, 1500, 7, 67, 2, 2, 1500, 1501, 7, 78, 2, 2, 1501, 278, 3, 2, 2, 2, 1502, 1503, 7, 80, 2, 2, 1503, 1504, 7, 71, 2, 2, 1504, 1505, 7, 90, 2, 2, 1505, 1506, 7, 86, 2, 2, 1506, 280, 3, 2, 2, 2, 1507, 1508, 7, 80, 2, 2, 1508, 1509, 7, 72, 2, 2, 1509, 1510, 7, 69, 2, 2, 1510, 282, 3, 2, 2, 2, 1511, 1512, 7, 80, 2, 2, 1512, 1513, 7, 72, 2, 2, 1513, 1514, 7, 70, 2, 2, 1514, 284, 3, 2, 2, 2, 1515, 1516, 7, 80, 2, 2, 1516, 1517, 7, 72, 2, 2, 1517, 1518, 7, 77, 2, 2, 1518, 1519, 7, 69, 2, 2, 1519, 286, 3, 2, 2, 2, 1520, 1521, 7, 80, 2, 2, 1521, 1522, 7, 72, 2, 2, 1522, 1523, 7, 77, 2, 2, 1523, 1524, 7, 70, 2, 2, 1524, 288, 3, 2, 2, 2, 1525, 1526, 7, 80, 2, 2, 1526, 1527, 7, 81, 2, 2, 1527, 290, 3, 2, 2, 2, 1528, 1529, 7, 80, 2, 2, 1529, 1530, 7, 81, 2, 2, 1530, 1531, 7, 80, 2, 2, 1531, 1532, 7, 71, 2, 2, 1532, 292, 3, 2, 2, 2, 1533, 1534, 7, 80, 2, 2, 1534, 1535, 7, 81, 2, 2, 1535, 1536, 7, 84, 2, 2, 1536, 1537, 7, 79, 2, 2, 1537, 1538, 7, 67, 2, 2, 1538, 1539, 7, 78, 2, 2, 1539, 1540, 7, 75, 2, 2, 1540, 1541, 7, 92, 2, 2, 1541, 1542, 7, 71, 2, 2, 1542, 294, 3, 2, 2, 2, 1543, 1544, 7, 80, 2, 2, 1544, 1545, 7, 81, 2, 2, 1545, 1546, 7, 86, 2, 2, 1546, 296, 3, 2, 2, 2, 1547, 1548, 7, 80, 2, 2, 1548, 1549, 7, 87, 2, 2, 1549, 1550, 7, 78, 2, 2, 1550, 1551, 7, 78, 2, 2, 1551, 298, 3, 2, 2, 2, 1552, 1553, 7, 80, 2, 2, 1553, 1554, 7, 87, 2, 2, 1554, 1555, 7, 78, 2, 2, 1555, 1556, 7, 78, 2, 2, 1556, 1557, 7, 75, 2, 2, 1557, 1558, 7, 72, 2, 2, 1558, 300, 3, 2, 2, 2, 1559, 1560, 7, 80, 2, 2, 1560, 1561, 7, 87, 2, 2, 1561, 1562, 7, 78, 2, 2, 1562, 1563, 7, 78, 2, 2, 1563, 1564, 7, 85, 2, 2, 1564, 302, 3, 2, 2, 2, 1565, 1566, 7, 81, 2, 2, 1566, 1567, 7, 72, 2, 2, 1567, 1568, 7, 72, 2, 2, 1568, 1569, 7, 85, 2, 2, 1569, 1570, 7, 71, 2, 2, 1570, 1571, 7, 86, 2, 2, 1571, 304, 3, 2, 2, 2, 1572, 1573, 7, 81, 2, 2, 1573, 1574, 7, 79, 2, 2, 1574, 1575, 7, 75, 2, 2, 1575, 1576, 7, 86, 2, 2, 1576, 306, 3, 2, 2, 2, 1577, 1578, 7, 81, 2, 2, 1578, 1579, 7, 80, 2, 2, 1579, 308, 3, 2, 2, 2, 1580, 1581, 7, 81, 2, 2, 1581, 1582, 7, 80, 2, 2, 1582, 1583, 7, 71, 2, 2, 1583, 310, 3, 2, 2, 2, 1584, 1585, 7, 81, 2, 2, 1585, 1586, 7, 80, 2, 2, 1586, 1587, 7, 78, 2, 2, 1587, 1588, 7, 91, 2, 2, 1588, 312, 3, 2, 2, 2, 1589, 1590, 7, 81, 2, 2, 1590, 1591, 7, 82, 2, 2, 1591, 1592, 7, 86, 2, 2, 1592, 1593, 7, 75, 2, 2, 1593, 1594, 7, 81, 2, 2, 1594, 1595, 7, 80, 2, 2, 1595, 314, 3, 2, 2, 2, 1596, 1597, 7, 81, 2, 2, 1597, 1598, 7, 84, 2, 2, 1598, 316, 3, 2, 2, 2, 1599, 1600, 7, 81, 2, 2, 1600, 1601, 7, 84, 2, 2, 1601, 1602, 7, 70, 2, 2, 1602, 1603, 7, 71, 2, 2, 1603, 1604, 7, 84, 2, 2, 1604, 318, 3, 2, 2, 2, 1605, 1606, 7, 81, 2, 2, 1606, 1607, 7, 84, 2, 2, 1607, 1608, 7, 70, 2, 2, 1608, 1609, 7, 75, 2, 2, 1609, 1610, 7, 80, 2, 2, 1610, 1611, 7, 67, 2, 2, 1611, 1612, 7, 78, 2, 2, 1612, 1613, 7, 75, 2, 2, 1613, 1614, 7, 86, 2, 2, 1614, 1615, 7, 91, 2, 2, 1615, 320, 3, 2, 2, 2, 1616, 1617, 7, 81, 2, 2, 1617, 1618, 7, 87, 2, 2, 1618, 1619, 7, 86, 2, 2, 1619, 1620, 7, 71, 2, 2, 1620, 1621, 7, 84, 2, 2, 1621, 322, 3, 2, 2, 2, 1622, 1623, 7, 81, 2, 2, 1623, 1624, 7, 87, 2, 2, 1624, 1625, 7, 86, 2, 2, 1625, 1626, 7, 82, 2, 2, 1626, 1627, 7, 87, 2, 2, 1627, 1628, 7, 86, 2, 2, 1628, 324, 3, 2, 2, 2, 1629, 1630, 7, 81, 2, 2, 1630, 1631, 7, 88, 2, 2, 1631, 1632, 7, 71, 2, 2, 1632, 1633, 7, 84, 2, 2, 1633, 326, 3, 2, 2, 2, 1634, 1635, 7, 82, 2, 2, 1635, 1636, 7, 67, 2, 2, 1636, 1637, 7, 84, 2, 2, 1637, 1638, 7, 86, 2, 2, 1638, 1639, 7, 75, 2, 2, 1639, 1640, 7, 86, 2, 2, 1640, 1641, 7, 75, 2, 2, 1641, 1642, 7, 81, 2, 2, 1642, 1643, 7, 80, 2, 2, 1643, 328, 3, 2, 2, 2, 1644, 1645, 7, 82, 2, 2, 1645, 1646, 7, 67, 2, 2, 1646, 1647, 7, 84, 2, 2, 1647, 1648, 7, 86, 2, 2, 1648, 1649, 7, 75, 2, 2, 1649, 1650, 7, 86, 2, 2, 1650, 1651, 7, 75, 2, 2, 1651, 1652, 7, 81, 2, 2, 1652, 1653, 7, 80, 2, 2, 1653, 1654, 7, 85, 2, 2, 1654, 330, 3, 2, 2, 2, 1655, 1656, 7, 82, 2, 2, 1656, 1657, 7, 67, 2, 2, 1657, 1658, 7, 85, 2, 2, 1658, 1659, 7, 86, 2, 2, 1659, 332, 3, 2, 2, 2, 1660, 1661, 7, 82, 2, 2, 1661, 1662, 7, 67, 2, 2, 1662, 1663, 7, 86, 2, 2, 1663, 1664, 7, 74, 2, 2, 1664, 334, 3, 2, 2, 2, 1665, 1666, 7, 82, 2, 2, 1666, 1667, 7, 67, 2, 2, 1667, 1668, 7, 86, 2, 2, 1668, 1669, 7, 86, 2, 2, 1669, 1670, 7, 71, 2, 2, 1670, 1671, 7, 84, 2, 2, 1671, 1672, 7, 80, 2, 2, 1672, 336, 3, 2, 2, 2, 1673, 1674, 7, 82, 2, 2, 1674, 1675, 7, 71, 2, 2, 1675, 1676, 7, 84, 2, 2, 1676, 338, 3, 2, 2, 2, 1677, 1678, 7, 82, 2, 2, 1678, 1679, 7, 71, 2, 2, 1679, 1680, 7, 84, 2, 2, 1680, 1681, 7, 79, 2, 2, 1681, 1682, 7, 87, 2, 2, 1682, 1683, 7, 86, 2, 2, 1683, 1684, 7, 71, 2, 2, 1684, 340, 3, 2, 2, 2, 1685, 1686, 7, 82, 2, 2, 1686, 1687, 7, 81, 2, 2, 1687, 1688, 7, 85, 2, 2, 1688, 1689, 7, 75, 2, 2, 1689, 1690, 7, 86, 2, 2, 1690, 1691, 7, 75, 2, 2, 1691, 1692, 7, 81, 2, 2, 1692, 1693, 7, 80, 2, 2, 1693, 342, 3, 2, 2, 2, 1694, 1695, 7, 82, 2, 2, 1695, 1696, 7, 84, 2, 2, 1696, 1697, 7, 71, 2, 2, 1697, 1698, 7, 69, 2, 2, 1698, 1699, 7, 71, 2, 2, 1699, 1700, 7, 70, 2, 2, 1700, 1701, 7, 75, 2, 2, 1701, 1702, 7, 80, 2, 2, 1702, 1703, 7, 73, 2, 2, 1703, 344, 3, 2, 2, 2, 1704, 1705, 7, 82, 2, 2, 1705, 1706, 7, 84, 2, 2, 1706, 1707, 7, 71, 2, 2, 1707, 1708, 7, 69, 2, 2, 1708, 1709, 7, 75, 2, 2, 1709, 1710, 7, 85, 2, 2, 1710, 1711, 7, 75, 2, 2, 1711, 1712, 7, 81, 2, 2, 1712, 1713, 7, 80, 2, 2, 1713, 346, 3, 2, 2, 2, 1714, 1715, 7, 82, 2, 2, 1715, 1716, 7, 84, 2, 2, 1716, 1717, 7, 71, 2, 2, 1717, 1718, 7, 82, 2, 2, 1718, 1719, 7, 67, 2, 2, 1719, 1720, 7, 84, 2, 2, 1720, 1721, 7, 71, 2, 2, 1721, 348, 3, 2, 2, 2, 1722, 1723, 7, 82, 2, 2, 1723, 1724, 7, 84, 2, 2, 1724, 1725, 7, 75, 2, 2, 1725, 1726, 7, 88, 2, 2, 1726, 1727, 7, 75, 2, 2, 1727, 1728, 7, 78, 2, 2, 1728, 1729, 7, 71, 2, 2, 1729, 1730, 7, 73, 2, 2, 1730, 1731, 7, 71, 2, 2, 1731, 1732, 7, 85, 2, 2, 1732, 350, 3, 2, 2, 2, 1733, 1734, 7, 82, 2, 2, 1734, 1735, 7, 84, 2, 2, 1735, 1736, 7, 81, 2, 2, 1736, 1737, 7, 82, 2, 2, 1737, 1738, 7, 71, 2, 2, 1738, 1739, 7, 84, 2, 2, 1739, 1740, 7, 86, 2, 2, 1740, 1741, 7, 75, 2, 2, 1741, 1742, 7, 71, 2, 2, 1742, 1743, 7, 85, 2, 2, 1743, 352, 3, 2, 2, 2, 1744, 1745, 7, 84, 2, 2, 1745, 1746, 7, 67, 2, 2, 1746, 1747, 7, 80, 2, 2, 1747, 1748, 7, 73, 2, 2, 1748, 1749, 7, 71, 2, 2, 1749, 354, 3, 2, 2, 2, 1750, 1751, 7, 84, 2, 2, 1751, 1752, 7, 71, 2, 2, 1752, 1753, 7, 67, 2, 2, 1753, 1754, 7, 70, 2, 2, 1754, 356, 3, 2, 2, 2, 1755, 1756, 7, 84, 2, 2, 1756, 1757, 7, 71, 2, 2, 1757, 1758, 7, 69, 2, 2, 1758, 1759, 7, 87, 2, 2, 1759, 1760, 7, 84, 2, 2, 1760, 1761, 7, 85, 2, 2, 1761, 1762, 7, 75, 2, 2, 1762, 1763, 7, 88, 2, 2, 1763, 1764, 7, 71, 2, 2, 1764, 358, 3, 2, 2, 2, 1765, 1766, 7, 84, 2, 2, 1766, 1767, 7, 71, 2, 2, 1767, 1768, 7, 72, 2, 2, 1768, 1769, 7, 84, 2, 2, 1769, 1770, 7, 71, 2, 2, 1770, 1771, 7, 85, 2, 2, 1771, 1772, 7, 74, 2, 2, 1772, 360, 3, 2, 2, 2, 1773, 1774, 7, 84, 2, 2, 1774, 1775, 7, 71, 2, 2, 1775, 1776, 7, 80, 2, 2, 1776, 1777, 7, 67, 2, 2, 1777, 1778, 7, 79, 2, 2, 1778, 1779, 7, 71, 2, 2, 1779, 362, 3, 2, 2, 2, 1780, 1781, 7, 84, 2, 2, 1781, 1782, 7, 71, 2, 2, 1782, 1783, 7, 82, 2, 2, 1783, 1784, 7, 71, 2, 2, 1784, 1785, 7, 67, 2, 2, 1785, 1786, 7, 86, 2, 2, 1786, 1787, 7, 67, 2, 2, 1787, 1788, 7, 68, 2, 2, 1788, 1789, 7, 78, 2, 2, 1789, 1790, 7, 71, 2, 2, 1790, 364, 3, 2, 2, 2, 1791, 1792, 7, 84, 2, 2, 1792, 1793, 7, 71, 2, 2, 1793, 1794, 7, 82, 2, 2, 1794, 1795, 7, 78, 2, 2, 1795, 1796, 7, 67, 2, 2, 1796, 1797, 7, 69, 2, 2, 1797, 1798, 7, 71, 2, 2, 1798, 366, 3, 2, 2, 2, 1799, 1800, 7, 84, 2, 2, 1800, 1801, 7, 71, 2, 2, 1801, 1802, 7, 85, 2, 2, 1802, 1803, 7, 71, 2, 2, 1803, 1804, 7, 86, 2, 2, 1804, 368, 3, 2, 2, 2, 1805, 1806, 7, 84, 2, 2, 1806, 1807, 7, 71, 2, 2, 1807, 1808, 7, 85, 2, 2, 1808, 1809, 7, 82, 2, 2, 1809, 1810, 7, 71, 2, 2, 1810, 1811, 7, 69, 2, 2, 1811, 1812, 7, 86, 2, 2, 1812, 370, 3, 2, 2, 2, 1813, 1814, 7, 84, 2, 2, 1814, 1815, 7, 71, 2, 2, 1815, 1816, 7, 85, 2, 2, 1816, 1817, 7, 86, 2, 2, 1817, 1818, 7, 84, 2, 2, 1818, 1819, 7, 75, 2, 2, 1819, 1820, 7, 69, 2, 2, 1820, 1821, 7, 86, 2, 2, 1821, 372, 3, 2, 2, 2, 1822, 1823, 7, 84, 2, 2, 1823, 1824, 7, 71, 2, 2, 1824, 1825, 7, 88, 2, 2, 1825, 1826, 7, 81, 2, 2, 1826, 1827, 7, 77, 2, 2, 1827, 1828, 7, 71, 2, 2, 1828, 374, 3, 2, 2, 2, 1829, 1830, 7, 84, 2, 2, 1830, 1831, 7, 75, 2, 2, 1831, 1832, 7, 73, 2, 2, 1832, 1833, 7, 74, 2, 2, 1833, 1834, 7, 86, 2, 2, 1834, 376, 3, 2, 2, 2, 1835, 1836, 7, 84, 2, 2, 1836, 1837, 7, 81, 2, 2, 1837, 1838, 7, 78, 2, 2, 1838, 1839, 7, 71, 2, 2, 1839, 378, 3, 2, 2, 2, 1840, 1841, 7, 84, 2, 2, 1841, 1842, 7, 81, 2, 2, 1842, 1843, 7, 78, 2, 2, 1843, 1844, 7, 71, 2, 2, 1844, 1845, 7, 85, 2, 2, 1845, 380, 3, 2, 2, 2, 1846, 1847, 7, 84, 2, 2, 1847, 1848, 7, 81, 2, 2, 1848, 1849, 7, 78, 2, 2, 1849, 1850, 7, 78, 2, 2, 1850, 1851, 7, 68, 2, 2, 1851, 1852, 7, 67, 2, 2, 1852, 1853, 7, 69, 2, 2, 1853, 1854, 7, 77, 2, 2, 1854, 382, 3, 2, 2, 2, 1855, 1856, 7, 84, 2, 2, 1856, 1857, 7, 81, 2, 2, 1857, 1858, 7, 78, 2, 2, 1858, 1859, 7, 78, 2, 2, 1859, 1860, 7, 87, 2, 2, 1860, 1861, 7, 82, 2, 2, 1861, 384, 3, 2, 2, 2, 1862, 1863, 7, 84, 2, 2, 1863, 1864, 7, 81, 2, 2, 1864, 1865, 7, 89, 2, 2, 1865, 386, 3, 2, 2, 2, 1866, 1867, 7, 84, 2, 2, 1867, 1868, 7, 81, 2, 2, 1868, 1869, 7, 89, 2, 2, 1869, 1870, 7, 85, 2, 2, 1870, 388, 3, 2, 2, 2, 1871, 1872, 7, 84, 2, 2, 1872, 1873, 7, 87, 2, 2, 1873, 1874, 7, 80, 2, 2, 1874, 1875, 7, 80, 2, 2, 1875, 1876, 7, 75, 2, 2, 1876, 1877, 7, 80, 2, 2, 1877, 1878, 7, 73, 2, 2, 1878, 390, 3, 2, 2, 2, 1879, 1880, 7, 85, 2, 2, 1880, 1881, 7, 69, 2, 2, 1881, 1882, 7, 74, 2, 2, 1882, 1883, 7, 71, 2, 2, 1883, 1884, 7, 79, 2, 2, 1884, 1885, 7, 67, 2, 2, 1885, 392, 3, 2, 2, 2, 1886, 1887, 7, 85, 2, 2, 1887, 1888, 7, 69, 2, 2, 1888, 1889, 7, 74, 2, 2, 1889, 1890, 7, 71, 2, 2, 1890, 1891, 7, 79, 2, 2, 1891, 1892, 7, 67, 2, 2, 1892, 1893, 7, 85, 2, 2, 1893, 394, 3, 2, 2, 2, 1894, 1895, 7, 85, 2, 2, 1895, 1896, 7, 71, 2, 2, 1896, 1897, 7, 69, 2, 2, 1897, 1898, 7, 81, 2, 2, 1898, 1899, 7, 80, 2, 2, 1899, 1900, 7, 70, 2, 2, 1900, 396, 3, 2, 2, 2, 1901, 1902, 7, 85, 2, 2, 1902, 1903, 7, 71, 2, 2, 1903, 1904, 7, 69, 2, 2, 1904, 1905, 7, 87, 2, 2, 1905, 1906, 7, 84, 2, 2, 1906, 1907, 7, 75, 2, 2, 1907, 1908, 7, 86, 2, 2, 1908, 1909, 7, 91, 2, 2, 1909, 398, 3, 2, 2, 2, 1910, 1911, 7, 85, 2, 2, 1911, 1912, 7, 71, 2, 2, 1912, 1913, 7, 71, 2, 2, 1913, 1914, 7, 77, 2, 2, 1914, 400, 3, 2, 2, 2, 1915, 1916, 7, 85, 2, 2, 1916, 1917, 7, 71, 2, 2, 1917, 1918, 7, 78, 2, 2, 1918, 1919, 7, 71, 2, 2, 1919, 1920, 7, 69, 2, 2, 1920, 1921, 7, 86, 2, 2, 1921, 402, 3, 2, 2, 2, 1922, 1923, 7, 85, 2, 2, 1923, 1924, 7, 71, 2, 2, 1924, 1925, 7, 84, 2, 2, 1925, 1926, 7, 75, 2, 2, 1926, 1927, 7, 67, 2, 2, 1927, 1928, 7, 78, 2, 2, 1928, 1929, 7, 75, 2, 2, 1929, 1930, 7, 92, 2, 2, 1930, 1931, 7, 67, 2, 2, 1931, 1932, 7, 68, 2, 2, 1932, 1933, 7, 78, 2, 2, 1933, 1934, 7, 71, 2, 2, 1934, 404, 3, 2, 2, 2, 1935, 1936, 7, 85, 2, 2, 1936, 1937, 7, 71, 2, 2, 1937, 1938, 7, 85, 2, 2, 1938, 1939, 7, 85, 2, 2, 1939, 1940, 7, 75, 2, 2, 1940, 1941, 7, 81, 2, 2, 1941, 1942, 7, 80, 2, 2, 1942, 406, 3, 2, 2, 2, 1943, 1944, 7, 85, 2, 2, 1944, 1945, 7, 71, 2, 2, 1945, 1946, 7, 86, 2, 2, 1946, 408, 3, 2, 2, 2, 1947, 1948, 7, 85, 2, 2, 1948, 1949, 7, 71, 2, 2, 1949, 1950, 7, 86, 2, 2, 1950, 1951, 7, 85, 2, 2, 1951, 410, 3, 2, 2, 2, 1952, 1953, 7, 85, 2, 2, 1953, 1954, 7, 74, 2, 2, 1954, 1955, 7, 81, 2, 2, 1955, 1956, 7, 89, 2, 2, 1956, 412, 3, 2, 2, 2, 1957, 1958, 7, 85, 2, 2, 1958, 1959, 7, 81, 2, 2, 1959, 1960, 7, 79, 2, 2, 1960, 1961, 7, 71, 2, 2, 1961, 414, 3, 2, 2, 2, 1962, 1963, 7, 85, 2, 2, 1963, 1964, 7, 86, 2, 2, 1964, 1965, 7, 67, 2, 2, 1965, 1966, 7, 84, 2, 2, 1966, 1967, 7, 86, 2, 2, 1967, 416, 3, 2, 2, 2, 1968, 1969, 7, 85, 2, 2, 1969, 1970, 7, 86, 2, 2, 1970, 1971, 7, 67, 2, 2, 1971, 1972, 7, 86, 2, 2, 1972, 1973, 7, 85, 2, 2, 1973, 418, 3, 2, 2, 2, 1974, 1975, 7, 85, 2, 2, 1975, 1976, 7, 87, 2, 2, 1976, 1977, 7, 68, 2, 2, 1977, 1978, 7, 85, 2, 2, 1978, 1979, 7, 71, 2, 2, 1979, 1980, 7, 86, 2, 2, 1980, 420, 3, 2, 2, 2, 1981, 1982, 7, 85, 2, 2, 1982, 1983, 7, 87, 2, 2, 1983, 1984, 7, 68, 2, 2, 1984, 1985, 7, 85, 2, 2, 1985, 1986, 7, 86, 2, 2, 1986, 1987, 7, 84, 2, 2, 1987, 1988, 7, 75, 2, 2, 1988, 1989, 7, 80, 2, 2, 1989, 1990, 7, 73, 2, 2, 1990, 422, 3, 2, 2, 2, 1991, 1992, 7, 85, 2, 2, 1992, 1993, 7, 91, 2, 2, 1993, 1994, 7, 85, 2, 2, 1994, 1995, 7, 86, 2, 2, 1995, 1996, 7, 71, 2, 2, 1996, 1997, 7, 79, 2, 2, 1997, 424, 3, 2, 2, 2, 1998, 1999, 7, 86, 2, 2, 1999, 2000, 7, 67, 2, 2, 2000, 2001, 7, 68, 2, 2, 2001, 2002, 7, 78, 2, 2, 2002, 2003, 7, 71, 2, 2, 2003, 426, 3, 2, 2, 2, 2004, 2005, 7, 86, 2, 2, 2005, 2006, 7, 67, 2, 2, 2006, 2007, 7, 68, 2, 2, 2007, 2008, 7, 78, 2, 2, 2008, 2009, 7, 71, 2, 2, 2009, 2010, 7, 85, 2, 2, 2010, 428, 3, 2, 2, 2, 2011, 2012, 7, 86, 2, 2, 2012, 2013, 7, 67, 2, 2, 2013, 2014, 7, 68, 2, 2, 2014, 2015, 7, 78, 2, 2, 2015, 2016, 7, 71, 2, 2, 2016, 2017, 7, 85, 2, 2, 2017, 2018, 7, 67, 2, 2, 2018, 2019, 7, 79, 2, 2, 2019, 2020, 7, 82, 2, 2, 2020, 2021, 7, 78, 2, 2, 2021, 2022, 7, 71, 2, 2, 2022, 430, 3, 2, 2, 2, 2023, 2024, 7, 86, 2, 2, 2024, 2025, 7, 71, 2, 2, 2025, 2026, 7, 90, 2, 2, 2026, 2027, 7, 86, 2, 2, 2027, 432, 3, 2, 2, 2, 2028, 2029, 7, 86, 2, 2, 2029, 2030, 7, 74, 2, 2, 2030, 2031, 7, 71, 2, 2, 2031, 2032, 7, 80, 2, 2, 2032, 434, 3, 2, 2, 2, 2033, 2034, 7, 86, 2, 2, 2034, 2035, 7, 75, 2, 2, 2035, 2036, 7, 71, 2, 2, 2036, 2037, 7, 85, 2, 2, 2037, 436, 3, 2, 2, 2, 2038, 2039, 7, 86, 2, 2, 2039, 2040, 7, 75, 2, 2, 2040, 2041, 7, 79, 2, 2, 2041, 2042, 7, 71, 2, 2, 2042, 438, 3, 2, 2, 2, 2043, 2044, 7, 86, 2, 2, 2044, 2045, 7, 75, 2, 2, 2045, 2046, 7, 79, 2, 2, 2046, 2047, 7, 71, 2, 2, 2047, 2048, 7, 85, 2, 2, 2048, 2049, 7, 86, 2, 2, 2049, 2050, 7, 67, 2, 2, 2050, 2051, 7, 79, 2, 2, 2051, 2052, 7, 82, 2, 2, 2052, 440, 3, 2, 2, 2, 2053, 2054, 7, 86, 2, 2, 2054, 2055, 7, 81, 2, 2, 2055, 442, 3, 2, 2, 2, 2056, 2057, 7, 86, 2, 2, 2057, 2058, 7, 84, 2, 2, 2058, 2059, 7, 67, 2, 2, 2059, 2060, 7, 80, 2, 2, 2060, 2061, 7, 85, 2, 2, 2061, 2062, 7, 67, 2, 2, 2062, 2063, 7, 69, 2, 2, 2063, 2064, 7, 86, 2, 2, 2064, 2065, 7, 75, 2, 2, 2065, 2066, 7, 81, 2, 2, 2066, 2067, 7, 80, 2, 2, 2067, 444, 3, 2, 2, 2, 2068, 2069, 7, 86, 2, 2, 2069, 2070, 7, 84, 2, 2, 2070, 2071, 7, 87, 2, 2, 2071, 2072, 7, 80, 2, 2, 2072, 2073, 7, 69, 2, 2, 2073, 2074, 7, 67, 2, 2, 2074, 2075, 7, 86, 2, 2, 2075, 2076, 7, 71, 2, 2, 2076, 446, 3, 2, 2, 2, 2077, 2078, 7, 86, 2, 2, 2078, 2079, 7, 84, 2, 2, 2079, 2080, 7, 87, 2, 2, 2080, 2081, 7, 71, 2, 2, 2081, 448, 3, 2, 2, 2, 2082, 2083, 7, 86, 2, 2, 2083, 2084, 7, 84, 2, 2, 2084, 2085, 7, 91, 2, 2, 2085, 2086, 7, 97, 2, 2, 2086, 2087, 7, 69, 2, 2, 2087, 2088, 7, 67, 2, 2, 2088, 2089, 7, 85, 2, 2, 2089, 2090, 7, 86, 2, 2, 2090, 450, 3, 2, 2, 2, 2091, 2092, 7, 86, 2, 2, 2092, 2093, 7, 91, 2, 2, 2093, 2094, 7, 82, 2, 2, 2094, 2095, 7, 71, 2, 2, 2095, 452, 3, 2, 2, 2, 2096, 2097, 7, 87, 2, 2, 2097, 2098, 7, 71, 2, 2, 2098, 2099, 7, 85, 2, 2, 2099, 2100, 7, 69, 2, 2, 2100, 2101, 7, 67, 2, 2, 2101, 2102, 7, 82, 2, 2, 2102, 2103, 7, 71, 2, 2, 2103, 454, 3, 2, 2, 2, 2104, 2105, 7, 87, 2, 2, 2105, 2106, 7, 80, 2, 2, 2106, 2107, 7, 68, 2, 2, 2107, 2108, 7, 81, 2, 2, 2108, 2109, 7, 87, 2, 2, 2109, 2110, 7, 80, 2, 2, 2110, 2111, 7, 70, 2, 2, 2111, 2112, 7, 71, 2, 2, 2112, 2113, 7, 70, 2, 2, 2113, 456, 3, 2, 2, 2, 2114, 2115, 7, 87, 2, 2, 2115, 2116, 7, 80, 2, 2, 2116, 2117, 7, 69, 2, 2, 2117, 2118, 7, 81, 2, 2, 2118, 2119, 7, 79, 2, 2, 2119, 2120, 7, 79, 2, 2, 2120, 2121, 7, 75, 2, 2, 2121, 2122, 7, 86, 2, 2, 2122, 2123, 7, 86, 2, 2, 2123, 2124, 7, 71, 2, 2, 2124, 2125, 7, 70, 2, 2, 2125, 458, 3, 2, 2, 2, 2126, 2127, 7, 87, 2, 2, 2127, 2128, 7, 80, 2, 2, 2128, 2129, 7, 75, 2, 2, 2129, 2130, 7, 81, 2, 2, 2130, 2131, 7, 80, 2, 2, 2131, 460, 3, 2, 2, 2, 2132, 2133, 7, 87, 2, 2, 2133, 2134, 7, 80, 2, 2, 2134, 2135, 7, 79, 2, 2, 2135, 2136, 7, 67, 2, 2, 2136, 2137, 7, 86, 2, 2, 2137, 2138, 7, 69, 2, 2, 2138, 2139, 7, 74, 2, 2, 2139, 2140, 7, 71, 2, 2, 2140, 2141, 7, 70, 2, 2, 2141, 462, 3, 2, 2, 2, 2142, 2143, 7, 87, 2, 2, 2143, 2144, 7, 80, 2, 2, 2144, 2145, 7, 80, 2, 2, 2145, 2146, 7, 71, 2, 2, 2146, 2147, 7, 85, 2, 2, 2147, 2148, 7, 86, 2, 2, 2148, 464, 3, 2, 2, 2, 2149, 2150, 7, 87, 2, 2, 2150, 2151, 7, 82, 2, 2, 2151, 2152, 7, 70, 2, 2, 2152, 2153, 7, 67, 2, 2, 2153, 2154, 7, 86, 2, 2, 2154, 2155, 7, 71, 2, 2, 2155, 466, 3, 2, 2, 2, 2156, 2157, 7, 87, 2, 2, 2157, 2158, 7, 85, 2, 2, 2158, 2159, 7, 71, 2, 2, 2159, 468, 3, 2, 2, 2, 2160, 2161, 7, 87, 2, 2, 2161, 2162, 7, 85, 2, 2, 2162, 2163, 7, 71, 2, 2, 2163, 2164, 7, 84, 2, 2, 2164, 470, 3, 2, 2, 2, 2165, 2166, 7, 87, 2, 2, 2166, 2167, 7, 85, 2, 2, 2167, 2168, 7, 75, 2, 2, 2168, 2169, 7, 80, 2, 2, 2169, 2170, 7, 73, 2, 2, 2170, 472, 3, 2, 2, 2, 2171, 2172, 7, 88, 2, 2, 2172, 2173, 7, 67, 2, 2, 2173, 2174, 7, 78, 2, 2, 2174, 2175, 7, 75, 2, 2, 2175, 2176, 7, 70, 2, 2, 2176, 2177, 7, 67, 2, 2, 2177, 2178, 7, 86, 2, 2, 2178, 2179, 7, 71, 2, 2, 2179, 474, 3, 2, 2, 2, 2180, 2181, 7, 88, 2, 2, 2181, 2182, 7, 67, 2, 2, 2182, 2183, 7, 78, 2, 2, 2183, 2184, 7, 87, 2, 2, 2184, 2185, 7, 71, 2, 2, 2185, 2186, 7, 85, 2, 2, 2186, 476, 3, 2, 2, 2, 2187, 2188, 7, 88, 2, 2, 2188, 2189, 7, 71, 2, 2, 2189, 2190, 7, 84, 2, 2, 2190, 2191, 7, 68, 2, 2, 2191, 2192, 7, 81, 2, 2, 2192, 2193, 7, 85, 2, 2, 2193, 2194, 7, 71, 2, 2, 2194, 478, 3, 2, 2, 2, 2195, 2196, 7, 88, 2, 2, 2196, 2197, 7, 75, 2, 2, 2197, 2198, 7, 71, 2, 2, 2198, 2199, 7, 89, 2, 2, 2199, 480, 3, 2, 2, 2, 2200, 2201, 7, 89, 2, 2, 2201, 2202, 7, 74, 2, 2, 2202, 2203, 7, 71, 2, 2, 2203, 2204, 7, 80, 2, 2, 2204, 482, 3, 2, 2, 2, 2205, 2206, 7, 89, 2, 2, 2206, 2207, 7, 74, 2, 2, 2207, 2208, 7, 71, 2, 2, 2208, 2209, 7, 84, 2, 2, 2209, 2210, 7, 71, 2, 2, 2210, 484, 3, 2, 2, 2, 2211, 2212, 7, 89, 2, 2, 2212, 2213, 7, 75, 2, 2, 2213, 2214, 7, 80, 2, 2, 2214, 2215, 7, 70, 2, 2, 2215, 2216, 7, 81, 2, 2, 2216, 2217, 7, 89, 2, 2, 2217, 486, 3, 2, 2, 2, 2218, 2219, 7, 89, 2, 2, 2219, 2220, 7, 75, 2, 2, 2220, 2221, 7, 86, 2, 2, 2221, 2222, 7, 74, 2, 2, 2222, 488, 3, 2, 2, 2, 2223, 2224, 7, 89, 2, 2, 2224, 2225, 7, 75, 2, 2, 2225, 2226, 7, 86, 2, 2, 2226, 2227, 7, 74, 2, 2, 2227, 2228, 7, 81, 2, 2, 2228, 2229, 7, 87, 2, 2, 2229, 2230, 7, 86, 2, 2, 2230, 490, 3, 2, 2, 2, 2231, 2232, 7, 89, 2, 2, 2232, 2233, 7, 81, 2, 2, 2233, 2234, 7, 84, 2, 2, 2234, 2235, 7, 77, 2, 2, 2235, 492, 3, 2, 2, 2, 2236, 2237, 7, 89, 2, 2, 2237, 2238, 7, 84, 2, 2, 2238, 2239, 7, 75, 2, 2, 2239, 2240, 7, 86, 2, 2, 2240, 2241, 7, 71, 2, 2, 2241, 494, 3, 2, 2, 2, 2242, 2243, 7, 91, 2, 2, 2243, 2244, 7, 71, 2, 2, 2244, 2245, 7, 67, 2, 2, 2245, 2246, 7, 84, 2, 2, 2246, 496, 3, 2, 2, 2, 2247, 2248, 7, 92, 2, 2, 2248, 2249, 7, 81, 2, 2, 2249, 2250, 7, 80, 2, 2, 2250, 2251, 7, 71, 2, 2, 2251, 498, 3, 2, 2, 2, 2252, 2253, 7, 63, 2, 2, 2253, 500, 3, 2, 2, 2, 2254, 2255, 7, 62, 2, 2, 2255, 2259, 7, 64, 2, 2, 2256, 2257, 7, 35, 2, 2, 2257, 2259, 7, 63, 2, 2, 2258, 2254, 3, 2, 2, 2, 2258, 2256, 3, 2, 2, 2, 2259, 502, 3, 2, 2, 2, 2260, 2261, 7, 62, 2, 2, 2261, 504, 3, 2, 2, 2, 2262, 2263, 7, 62, 2, 2, 2263, 2264, 7, 63, 2, 2, 2264, 506, 3, 2, 2, 2, 2265, 2266, 7, 64, 2, 2, 2266, 508, 3, 2, 2, 2, 2267, 2268, 7, 64, 2, 2, 2268, 2269, 7, 63, 2, 2, 2269, 510, 3, 2, 2, 2, 2270, 2271, 7, 45, 2, 2, 2271, 512, 3, 2, 2, 2, 2272, 2273, 7, 47, 2, 2, 2273, 514, 3, 2, 2, 2, 2274, 2275, 7, 44, 2, 2, 2275, 516, 3, 2, 2, 2, 2276, 2277, 7, 49, 2, 2, 2277, 518, 3, 2, 2, 2, 2278, 2279, 7, 39, 2, 2, 2279, 520, 3, 2, 2, 2, 2280, 2281, 7, 126, 2, 2, 2281, 2282, 7, 126, 2, 2, 2282, 522, 3, 2, 2, 2, 2283, 2284, 7, 65, 2, 2, 2284, 524, 3, 2, 2, 2, 2285, 2291, 7, 41, 2, 2, 2286, 2290, 10, 2, 2, 2, 2287, 2288, 7, 41, 2, 2, 2288, 2290, 7, 41, 2, 2, 2289, 2286, 3, 2, 2, 2, 2289, 2287, 3, 2, 2, 2, 2290, 2293, 3, 2, 2, 2, 2291, 2289, 3, 2, 2, 2, 2291, 2292, 3, 2, 2, 2, 2292, 2294, 3, 2, 2, 2, 2293, 2291, 3, 2, 2, 2, 2294, 2295, 7, 41, 2, 2, 2295, 526, 3, 2, 2, 2, 2296, 2297, 7, 87, 2, 2, 2297, 2298, 7, 40, 2, 2, 2298, 2299, 7, 41, 2, 2, 2299, 2305, 3, 2, 2, 2, 2300, 2304, 10, 2, 2, 2, 2301, 2302, 7, 41, 2, 2, 2302, 2304, 7, 41, 2, 2, 2303, 2300, 3, 2, 2, 2, 2303, 2301, 3, 2, 2, 2, 2304, 2307, 3, 2, 2, 2, 2305, 2303, 3, 2, 2, 2, 2305, 2306, 3, 2, 2, 2, 2306, 2308, 3, 2, 2, 2, 2307, 2305, 3, 2, 2, 2, 2308, 2309, 7, 41, 2, 2, 2309, 528, 3, 2, 2, 2, 2310, 2311, 7, 90, 2, 2, 2311, 2312, 7, 41, 2, 2, 2312, 2316, 3, 2, 2, 2, 2313, 2315, 10, 2, 2, 2, 2314, 2313, 3, 2, 2, 2, 2315, 2318, 3, 2, 2, 2, 2316, 2314, 3, 2, 2, 2, 2316, 2317, 3, 2, 2, 2, 2317, 2319, 3, 2, 2, 2, 2318, 2316, 3, 2, 2, 2, 2319, 2320, 7, 41, 2, 2, 2320, 530, 3, 2, 2, 2, 2321, 2323, 5, 549, 275, 2, 2322, 2321, 3, 2, 2, 2, 2323, 2324, 3, 2, 2, 2, 2324, 2322, 3, 2, 2, 2, 2324, 2325, 3, 2, 2, 2, 2325, 532, 3, 2, 2, 2, 2326, 2328, 5, 549, 275, 2, 2327, 2326, 3, 2, 2, 2, 2328, 2329, 3, 2, 2, 2, 2329, 2327, 3, 2, 2, 2, 2329, 2330, 3, 2, 2, 2, 2330, 2331, 3, 2, 2, 2, 2331, 2335, 7, 48, 2, 2, 2332, 2334, 5, 549, 275, 2, 2333, 2332, 3, 2, 2, 2, 2334, 2337, 3, 2, 2, 2, 2335, 2333, 3, 2, 2, 2, 2335, 2336, 3, 2, 2, 2, 2336, 2345, 3, 2, 2, 2, 2337, 2335, 3, 2, 2, 2, 2338, 2340, 7, 48, 2, 2, 2339, 2341, 5, 549, 275, 2, 2340, 2339, 3, 2, 2, 2, 2341, 2342, 3, 2, 2, 2, 2342, 2340, 3, 2, 2, 2, 2342, 2343, 3, 2, 2, 2, 2343, 2345, 3, 2, 2, 2, 2344, 2327, 3, 2, 2, 2, 2344, 2338, 3, 2, 2, 2, 2345, 534, 3, 2, 2, 2, 2346, 2348, 5, 549, 275, 2, 2347, 2346, 3, 2, 2, 2, 2348, 2349, 3, 2, 2, 2, 2349, 2347, 3, 2, 2, 2, 2349, 2350, 3, 2, 2, 2, 2350, 2358, 3, 2, 2, 2, 2351, 2355, 7, 48, 2, 2, 2352, 2354, 5, 549, 275, 2, 2353, 2352, 3, 2, 2, 2, 2354, 2357, 3, 2, 2, 2, 2355, 2353, 3, 2, 2, 2, 2355, 2356, 3, 2, 2, 2, 2356, 2359, 3, 2, 2, 2, 2357, 2355, 3, 2, 2, 2, 2358, 2351, 3, 2, 2, 2, 2358, 2359, 3, 2, 2, 2, 2359, 2360, 3, 2, 2, 2, 2360, 2361, 5, 547, 274, 2, 2361, 2371, 3, 2, 2, 2, 2362, 2364, 7, 48, 2, 2, 2363, 2365, 5, 549, 275, 2, 2364, 2363, 3, 2, 2, 2, 2365, 2366, 3, 2, 2, 2, 2366, 2364, 3, 2, 2, 2, 2366, 2367, 3, 2, 2, 2, 2367, 2368, 3, 2, 2, 2, 2368, 2369, 5, 547, 274, 2, 2369, 2371, 3, 2, 2, 2, 2370, 2347, 3, 2, 2, 2, 2370, 2362, 3, 2, 2, 2, 2371, 536, 3, 2, 2, 2, 2372, 2375, 5, 551, 276, 2, 2373, 2375, 7, 97, 2, 2, 2374, 2372, 3, 2, 2, 2, 2374, 2373, 3, 2, 2, 2, 2375, 2381, 3, 2, 2, 2, 2376, 2380, 5, 551, 276, 2, 2377, 2380, 5, 549, 275, 2, 2378, 2380, 7, 97, 2, 2, 2379, 2376, 3, 2, 2, 2, 2379, 2377, 3, 2, 2, 2, 2379, 2378, 3, 2, 2, 2, 2380, 2383, 3, 2, 2, 2, 2381, 2379, 3, 2, 2, 2, 2381, 2382, 3, 2, 2, 2, 2382, 538, 3, 2, 2, 2, 2383, 2381, 3, 2, 2, 2, 2384, 2388, 5, 549, 275, 2, 2385, 2389, 5, 551, 276, 2, 2386, 2389, 5, 549, 275, 2, 2387, 2389, 7, 97, 2, 2, 2388, 2385, 3, 2, 2, 2, 2388, 2386, 3, 2, 2, 2, 2388, 2387, 3, 2, 2, 2, 2389, 2390, 3, 2, 2, 2, 2390, 2388, 3, 2, 2, 2, 2390, 2391, 3, 2, 2, 2, 2391, 540, 3, 2, 2, 2, 2392, 2398, 7, 36, 2, 2, 2393, 2397, 10, 3, 2, 2, 2394, 2395, 7, 36, 2, 2, 2395, 2397, 7, 36, 2, 2, 2396, 2393, 3, 2, 2, 2, 2396, 2394, 3, 2, 2, 2, 2397, 2400, 3, 2, 2, 2, 2398, 2396, 3, 2, 2, 2, 2398, 2399, 3, 2, 2, 2, 2399, 2401, 3, 2, 2, 2, 2400, 2398, 3, 2, 2, 2, 2401, 2402, 7, 36, 2, 2, 2402, 542, 3, 2, 2, 2, 2403, 2409, 7, 98, 2, 2, 2404, 2408, 10, 4, 2, 2, 2405, 2406, 7, 98, 2, 2, 2406, 2408, 7, 98, 2, 2, 2407, 2404, 3, 2, 2, 2, 2407, 2405, 3, 2, 2, 2, 2408, 2411, 3, 2, 2, 2, 2409, 2407, 3, 2, 2, 2, 2409, 2410, 3, 2, 2, 2, 2410, 2412, 3, 2, 2, 2, 2411, 2409, 3, 2, 2, 2, 2412, 2413, 7, 98, 2, 2, 2413, 544, 3, 2, 2, 2, 2414, 2415, 7, 61, 2, 2, 2415, 546, 3, 2, 2, 2, 2416, 2418, 7, 71, 2, 2, 2417, 2419, 9, 5, 2, 2, 2418, 2417, 3, 2, 2, 2, 2418, 2419, 3, 2, 2, 2, 2419, 2421, 3, 2, 2, 2, 2420, 2422, 5, 549, 275, 2, 2421, 2420, 3, 2, 2, 2, 2422, 2423, 3, 2, 2, 2, 2423, 2421, 3, 2, 2, 2, 2423, 2424, 3, 2, 2, 2, 2424, 548, 3, 2, 2, 2, 2425, 2426, 9, 6, 2, 2, 2426, 550, 3, 2, 2, 2, 2427, 2428, 9, 7, 2, 2, 2428, 552, 3, 2, 2, 2, 2429, 2430, 7, 47, 2, 2, 2430, 2431, 7, 47, 2, 2, 2431, 2435, 3, 2, 2, 2, 2432, 2434, 10, 8, 2, 2, 2433, 2432, 3, 2, 2, 2, 2434, 2437, 3, 2, 2, 2, 2435, 2433, 3, 2, 2, 2, 2435, 2436, 3, 2, 2, 2, 2436, 2439, 3, 2, 2, 2, 2437, 2435, 3, 2, 2, 2, 2438, 2440, 7, 15, 2, 2, 2439, 2438, 3, 2, 2, 2, 2439, 2440, 3, 2, 2, 2, 2440, 2442, 3, 2, 2, 2, 2441, 2443, 7, 12, 2, 2, 2442, 2441, 3, 2, 2, 2, 2442, 2443, 3, 2, 2, 2, 2443, 2444, 3, 2, 2, 2, 2444, 2445, 8, 277, 2, 2, 2445, 554, 3, 2, 2, 2, 2446, 2447, 7, 49, 2, 2, 2447, 2448, 7, 44, 2, 2, 2448, 2452, 3, 2, 2, 2, 2449, 2451, 11, 2, 2, 2, 2450, 2449, 3, 2, 2, 2, 2451, 2454, 3, 2, 2, 2, 2452, 2453, 3, 2, 2, 2, 2452, 2450, 3, 2, 2, 2, 2453, 2455, 3, 2, 2, 2, 2454, 2452, 3, 2, 2, 2, 2455, 2456, 7, 44, 2, 2, 2456, 2457, 7, 49, 2, 2, 2457, 2458, 3, 2, 2, 2, 2458, 2459, 8, 278, 2, 2, 2459, 556, 3, 2, 2, 2, 2460, 2462, 9, 9, 2, 2, 2461, 2460, 3, 2, 2, 2, 2462, 2463, 3, 2, 2, 2, 2463, 2461, 3, 2, 2, 2, 2463, 2464, 3, 2, 2, 2, 2464, 2465, 3, 2, 2, 2, 2465, 2466, 8, 279, 2, 2, 2466, 558, 3, 2, 2, 2, 2467, 2468, 11, 2, 2, 2, 2468, 560, 3, 2, 2, 2, 35, 2, 2258, 2289, 2291, 2303, 2305, 2316, 2324, 2329, 2335, 2342, 2344, 2349, 2355, 2358, 2366, 2370, 2374, 2379, 2381, 2388, 2390, 2396, 2398, 2407, 2409, 2418, 2423, 2435, 2439, 2442, 2452, 2463, 3, 2, 3, 2] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 278, 2469, 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, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255, 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259, 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 4, 263, 9, 263, 4, 264, 9, 264, 4, 265, 9, 265, 4, 266, 9, 266, 4, 267, 9, 267, 4, 268, 9, 268, 4, 269, 9, 269, 4, 270, 9, 270, 4, 271, 9, 271, 4, 272, 9, 272, 4, 273, 9, 273, 4, 274, 9, 274, 4, 275, 9, 275, 4, 276, 9, 276, 4, 277, 9, 277, 4, 278, 9, 278, 4, 279, 9, 279, 4, 280, 9, 280, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 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, 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, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 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, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 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, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 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, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 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, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 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, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 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, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 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, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 155, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 202, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 204, 3, 204, 3, 204, 3, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 211, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 221, 3, 221, 3, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 233, 3, 234, 3, 234, 3, 234, 3, 234, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 242, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 243, 3, 244, 3, 244, 3, 244, 3, 244, 3, 244, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 246, 3, 246, 3, 246, 3, 246, 3, 246, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 247, 3, 248, 3, 248, 3, 248, 3, 248, 3, 248, 3, 249, 3, 249, 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3, 251, 3, 251, 3, 251, 3, 251, 5, 251, 2259, 10, 251, 3, 252, 3, 252, 3, 253, 3, 253, 3, 253, 3, 254, 3, 254, 3, 255, 3, 255, 3, 255, 3, 256, 3, 256, 3, 257, 3, 257, 3, 258, 3, 258, 3, 259, 3, 259, 3, 260, 3, 260, 3, 261, 3, 261, 3, 261, 3, 262, 3, 262, 3, 263, 3, 263, 3, 263, 3, 263, 7, 263, 2290, 10, 263, 12, 263, 14, 263, 2293, 11, 263, 3, 263, 3, 263, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 3, 264, 7, 264, 2304, 10, 264, 12, 264, 14, 264, 2307, 11, 264, 3, 264, 3, 264, 3, 265, 3, 265, 3, 265, 3, 265, 7, 265, 2315, 10, 265, 12, 265, 14, 265, 2318, 11, 265, 3, 265, 3, 265, 3, 266, 6, 266, 2323, 10, 266, 13, 266, 14, 266, 2324, 3, 267, 6, 267, 2328, 10, 267, 13, 267, 14, 267, 2329, 3, 267, 3, 267, 7, 267, 2334, 10, 267, 12, 267, 14, 267, 2337, 11, 267, 3, 267, 3, 267, 6, 267, 2341, 10, 267, 13, 267, 14, 267, 2342, 5, 267, 2345, 10, 267, 3, 268, 6, 268, 2348, 10, 268, 13, 268, 14, 268, 2349, 3, 268, 3, 268, 7, 268, 2354, 10, 268, 12, 268, 14, 268, 2357, 11, 268, 5, 268, 2359, 10, 268, 3, 268, 3, 268, 3, 268, 3, 268, 6, 268, 2365, 10, 268, 13, 268, 14, 268, 2366, 3, 268, 3, 268, 5, 268, 2371, 10, 268, 3, 269, 3, 269, 5, 269, 2375, 10, 269, 3, 269, 3, 269, 3, 269, 7, 269, 2380, 10, 269, 12, 269, 14, 269, 2383, 11, 269, 3, 270, 3, 270, 3, 270, 3, 270, 6, 270, 2389, 10, 270, 13, 270, 14, 270, 2390, 3, 271, 3, 271, 3, 271, 3, 271, 7, 271, 2397, 10, 271, 12, 271, 14, 271, 2400, 11, 271, 3, 271, 3, 271, 3, 272, 3, 272, 3, 272, 3, 272, 7, 272, 2408, 10, 272, 12, 272, 14, 272, 2411, 11, 272, 3, 272, 3, 272, 3, 273, 3, 273, 3, 274, 3, 274, 5, 274, 2419, 10, 274, 3, 274, 6, 274, 2422, 10, 274, 13, 274, 14, 274, 2423, 3, 275, 3, 275, 3, 276, 3, 276, 3, 277, 3, 277, 3, 277, 3, 277, 7, 277, 2434, 10, 277, 12, 277, 14, 277, 2437, 11, 277, 3, 277, 5, 277, 2440, 10, 277, 3, 277, 5, 277, 2443, 10, 277, 3, 277, 3, 277, 3, 278, 3, 278, 3, 278, 3, 278, 7, 278, 2451, 10, 278, 12, 278, 14, 278, 2454, 11, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 278, 3, 279, 6, 279, 2462, 10, 279, 13, 279, 14, 279, 2463, 3, 279, 3, 279, 3, 280, 3, 280, 3, 2452, 2, 2, 281, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 145, 2, 74, 147, 2, 75, 149, 2, 76, 151, 2, 77, 153, 2, 78, 155, 2, 79, 157, 2, 80, 159, 2, 81, 161, 2, 82, 163, 2, 83, 165, 2, 84, 167, 2, 85, 169, 2, 86, 171, 2, 87, 173, 2, 88, 175, 2, 89, 177, 2, 90, 179, 2, 91, 181, 2, 92, 183, 2, 93, 185, 2, 94, 187, 2, 95, 189, 2, 96, 191, 2, 97, 193, 2, 98, 195, 2, 99, 197, 2, 100, 199, 2, 101, 201, 2, 102, 203, 2, 103, 205, 2, 104, 207, 2, 105, 209, 2, 106, 211, 2, 107, 213, 2, 108, 215, 2, 109, 217, 2, 110, 219, 2, 111, 221, 2, 112, 223, 2, 113, 225, 2, 114, 227, 2, 115, 229, 2, 116, 231, 2, 117, 233, 2, 118, 235, 2, 119, 237, 2, 120, 239, 2, 121, 241, 2, 122, 243, 2, 123, 245, 2, 124, 247, 2, 125, 249, 2, 126, 251, 2, 127, 253, 2, 128, 255, 2, 129, 257, 2, 130, 259, 2, 131, 261, 2, 132, 263, 2, 133, 265, 2, 134, 267, 2, 135, 269, 2, 136, 271, 2, 137, 273, 2, 138, 275, 2, 139, 277, 2, 140, 279, 2, 141, 281, 2, 142, 283, 2, 143, 285, 2, 144, 287, 2, 145, 289, 2, 146, 291, 2, 147, 293, 2, 148, 295, 2, 149, 297, 2, 150, 299, 2, 151, 301, 2, 152, 303, 2, 153, 305, 2, 154, 307, 2, 155, 309, 2, 156, 311, 2, 157, 313, 2, 158, 315, 2, 159, 317, 2, 160, 319, 2, 161, 321, 2, 162, 323, 2, 163, 325, 2, 164, 327, 2, 165, 329, 2, 166, 331, 2, 167, 333, 2, 168, 335, 2, 169, 337, 2, 170, 339, 2, 171, 341, 2, 172, 343, 2, 173, 345, 2, 174, 347, 2, 175, 349, 2, 176, 351, 2, 177, 353, 2, 178, 355, 2, 179, 357, 2, 180, 359, 2, 181, 361, 2, 182, 363, 2, 183, 365, 2, 184, 367, 2, 185, 369, 2, 186, 371, 2, 187, 373, 2, 188, 375, 2, 189, 377, 2, 190, 379, 2, 191, 381, 2, 192, 383, 2, 193, 385, 2, 194, 387, 2, 195, 389, 2, 196, 391, 2, 197, 393, 2, 198, 395, 2, 199, 397, 2, 200, 399, 2, 201, 401, 2, 202, 403, 2, 203, 405, 2, 204, 407, 2, 205, 409, 2, 206, 411, 2, 207, 413, 2, 208, 415, 2, 209, 417, 2, 210, 419, 2, 211, 421, 2, 212, 423, 2, 213, 425, 2, 214, 427, 2, 215, 429, 2, 216, 431, 2, 217, 433, 2, 218, 435, 2, 219, 437, 2, 220, 439, 2, 221, 441, 2, 222, 443, 2, 223, 445, 2, 224, 447, 2, 225, 449, 2, 226, 451, 2, 227, 453, 2, 228, 455, 2, 229, 457, 2, 230, 459, 2, 231, 461, 2, 232, 463, 2, 233, 465, 2, 234, 467, 2, 235, 469, 2, 236, 471, 2, 237, 473, 2, 238, 475, 2, 239, 477, 2, 240, 479, 2, 241, 481, 2, 242, 483, 2, 243, 485, 2, 244, 487, 2, 245, 489, 2, 246, 491, 2, 247, 493, 2, 248, 495, 2, 249, 497, 2, 250, 499, 2, 251, 501, 2, 252, 503, 2, 253, 505, 2, 254, 507, 2, 255, 509, 2, 256, 511, 2, 257, 513, 2, 258, 515, 2, 259, 517, 2, 260, 519, 2, 261, 521, 2, 262, 523, 2, 263, 525, 2, 264, 527, 2, 265, 529, 2, 266, 531, 2, 267, 533, 2, 268, 535, 2, 269, 537, 2, 270, 539, 2, 271, 541, 2, 272, 543, 2, 273, 545, 2, 274, 547, 2, 2, 549, 2, 2, 551, 2, 2, 553, 2, 275, 555, 2, 276, 557, 2, 277, 559, 2, 278, 3, 2, 10, 3, 2, 41, 41, 3, 2, 36, 36, 3, 2, 98, 98, 4, 2, 45, 45, 47, 47, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 2, 2499, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 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, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 275, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 295, 3, 2, 2, 2, 2, 297, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 2, 309, 3, 2, 2, 2, 2, 311, 3, 2, 2, 2, 2, 313, 3, 2, 2, 2, 2, 315, 3, 2, 2, 2, 2, 317, 3, 2, 2, 2, 2, 319, 3, 2, 2, 2, 2, 321, 3, 2, 2, 2, 2, 323, 3, 2, 2, 2, 2, 325, 3, 2, 2, 2, 2, 327, 3, 2, 2, 2, 2, 329, 3, 2, 2, 2, 2, 331, 3, 2, 2, 2, 2, 333, 3, 2, 2, 2, 2, 335, 3, 2, 2, 2, 2, 337, 3, 2, 2, 2, 2, 339, 3, 2, 2, 2, 2, 341, 3, 2, 2, 2, 2, 343, 3, 2, 2, 2, 2, 345, 3, 2, 2, 2, 2, 347, 3, 2, 2, 2, 2, 349, 3, 2, 2, 2, 2, 351, 3, 2, 2, 2, 2, 353, 3, 2, 2, 2, 2, 355, 3, 2, 2, 2, 2, 357, 3, 2, 2, 2, 2, 359, 3, 2, 2, 2, 2, 361, 3, 2, 2, 2, 2, 363, 3, 2, 2, 2, 2, 365, 3, 2, 2, 2, 2, 367, 3, 2, 2, 2, 2, 369, 3, 2, 2, 2, 2, 371, 3, 2, 2, 2, 2, 373, 3, 2, 2, 2, 2, 375, 3, 2, 2, 2, 2, 377, 3, 2, 2, 2, 2, 379, 3, 2, 2, 2, 2, 381, 3, 2, 2, 2, 2, 383, 3, 2, 2, 2, 2, 385, 3, 2, 2, 2, 2, 387, 3, 2, 2, 2, 2, 389, 3, 2, 2, 2, 2, 391, 3, 2, 2, 2, 2, 393, 3, 2, 2, 2, 2, 395, 3, 2, 2, 2, 2, 397, 3, 2, 2, 2, 2, 399, 3, 2, 2, 2, 2, 401, 3, 2, 2, 2, 2, 403, 3, 2, 2, 2, 2, 405, 3, 2, 2, 2, 2, 407, 3, 2, 2, 2, 2, 409, 3, 2, 2, 2, 2, 411, 3, 2, 2, 2, 2, 413, 3, 2, 2, 2, 2, 415, 3, 2, 2, 2, 2, 417, 3, 2, 2, 2, 2, 419, 3, 2, 2, 2, 2, 421, 3, 2, 2, 2, 2, 423, 3, 2, 2, 2, 2, 425, 3, 2, 2, 2, 2, 427, 3, 2, 2, 2, 2, 429, 3, 2, 2, 2, 2, 431, 3, 2, 2, 2, 2, 433, 3, 2, 2, 2, 2, 435, 3, 2, 2, 2, 2, 437, 3, 2, 2, 2, 2, 439, 3, 2, 2, 2, 2, 441, 3, 2, 2, 2, 2, 443, 3, 2, 2, 2, 2, 445, 3, 2, 2, 2, 2, 447, 3, 2, 2, 2, 2, 449, 3, 2, 2, 2, 2, 451, 3, 2, 2, 2, 2, 453, 3, 2, 2, 2, 2, 455, 3, 2, 2, 2, 2, 457, 3, 2, 2, 2, 2, 459, 3, 2, 2, 2, 2, 461, 3, 2, 2, 2, 2, 463, 3, 2, 2, 2, 2, 465, 3, 2, 2, 2, 2, 467, 3, 2, 2, 2, 2, 469, 3, 2, 2, 2, 2, 471, 3, 2, 2, 2, 2, 473, 3, 2, 2, 2, 2, 475, 3, 2, 2, 2, 2, 477, 3, 2, 2, 2, 2, 479, 3, 2, 2, 2, 2, 481, 3, 2, 2, 2, 2, 483, 3, 2, 2, 2, 2, 485, 3, 2, 2, 2, 2, 487, 3, 2, 2, 2, 2, 489, 3, 2, 2, 2, 2, 491, 3, 2, 2, 2, 2, 493, 3, 2, 2, 2, 2, 495, 3, 2, 2, 2, 2, 497, 3, 2, 2, 2, 2, 499, 3, 2, 2, 2, 2, 501, 3, 2, 2, 2, 2, 503, 3, 2, 2, 2, 2, 505, 3, 2, 2, 2, 2, 507, 3, 2, 2, 2, 2, 509, 3, 2, 2, 2, 2, 511, 3, 2, 2, 2, 2, 513, 3, 2, 2, 2, 2, 515, 3, 2, 2, 2, 2, 517, 3, 2, 2, 2, 2, 519, 3, 2, 2, 2, 2, 521, 3, 2, 2, 2, 2, 523, 3, 2, 2, 2, 2, 525, 3, 2, 2, 2, 2, 527, 3, 2, 2, 2, 2, 529, 3, 2, 2, 2, 2, 531, 3, 2, 2, 2, 2, 533, 3, 2, 2, 2, 2, 535, 3, 2, 2, 2, 2, 537, 3, 2, 2, 2, 2, 539, 3, 2, 2, 2, 2, 541, 3, 2, 2, 2, 2, 543, 3, 2, 2, 2, 2, 545, 3, 2, 2, 2, 2, 553, 3, 2, 2, 2, 2, 555, 3, 2, 2, 2, 2, 557, 3, 2, 2, 2, 2, 559, 3, 2, 2, 2, 3, 561, 3, 2, 2, 2, 5, 563, 3, 2, 2, 2, 7, 565, 3, 2, 2, 2, 9, 567, 3, 2, 2, 2, 11, 569, 3, 2, 2, 2, 13, 574, 3, 2, 2, 2, 15, 577, 3, 2, 2, 2, 17, 579, 3, 2, 2, 2, 19, 581, 3, 2, 2, 2, 21, 583, 3, 2, 2, 2, 23, 585, 3, 2, 2, 2, 25, 587, 3, 2, 2, 2, 27, 590, 3, 2, 2, 2, 29, 593, 3, 2, 2, 2, 31, 595, 3, 2, 2, 2, 33, 597, 3, 2, 2, 2, 35, 600, 3, 2, 2, 2, 37, 604, 3, 2, 2, 2, 39, 610, 3, 2, 2, 2, 41, 616, 3, 2, 2, 2, 43, 620, 3, 2, 2, 2, 45, 626, 3, 2, 2, 2, 47, 634, 3, 2, 2, 2, 49, 638, 3, 2, 2, 2, 51, 642, 3, 2, 2, 2, 53, 648, 3, 2, 2, 2, 55, 651, 3, 2, 2, 2, 57, 655, 3, 2, 2, 2, 59, 658, 3, 2, 2, 2, 61, 672, 3, 2, 2, 2, 63, 682, 3, 2, 2, 2, 65, 690, 3, 2, 2, 2, 67, 693, 3, 2, 2, 2, 69, 698, 3, 2, 2, 2, 71, 706, 3, 2, 2, 2, 73, 711, 3, 2, 2, 2, 75, 716, 3, 2, 2, 2, 77, 725, 3, 2, 2, 2, 79, 732, 3, 2, 2, 2, 81, 740, 3, 2, 2, 2, 83, 748, 3, 2, 2, 2, 85, 755, 3, 2, 2, 2, 87, 765, 3, 2, 2, 2, 89, 776, 3, 2, 2, 2, 91, 783, 3, 2, 2, 2, 93, 789, 3, 2, 2, 2, 95, 794, 3, 2, 2, 2, 97, 802, 3, 2, 2, 2, 99, 818, 3, 2, 2, 2, 101, 831, 3, 2, 2, 2, 103, 844, 3, 2, 2, 2, 105, 857, 3, 2, 2, 2, 107, 872, 3, 2, 2, 2, 109, 885, 3, 2, 2, 2, 111, 903, 3, 2, 2, 2, 113, 916, 3, 2, 2, 2, 115, 921, 3, 2, 2, 2, 117, 926, 3, 2, 2, 2, 119, 930, 3, 2, 2, 2, 121, 938, 3, 2, 2, 2, 123, 949, 3, 2, 2, 2, 125, 957, 3, 2, 2, 2, 127, 964, 3, 2, 2, 2, 129, 969, 3, 2, 2, 2, 131, 978, 3, 2, 2, 2, 133, 985, 3, 2, 2, 2, 135, 994, 3, 2, 2, 2, 137, 1006, 3, 2, 2, 2, 139, 1013, 3, 2, 2, 2, 141, 1018, 3, 2, 2, 2, 143, 1023, 3, 2, 2, 2, 145, 1029, 3, 2, 2, 2, 147, 1033, 3, 2, 2, 2, 149, 1040, 3, 2, 2, 2, 151, 1047, 3, 2, 2, 2, 153, 1057, 3, 2, 2, 2, 155, 1065, 3, 2, 2, 2, 157, 1072, 3, 2, 2, 2, 159, 1080, 3, 2, 2, 2, 161, 1088, 3, 2, 2, 2, 163, 1094, 3, 2, 2, 2, 165, 1100, 3, 2, 2, 2, 167, 1107, 3, 2, 2, 2, 169, 1113, 3, 2, 2, 2, 171, 1119, 3, 2, 2, 2, 173, 1129, 3, 2, 2, 2, 175, 1133, 3, 2, 2, 2, 177, 1140, 3, 2, 2, 2, 179, 1145, 3, 2, 2, 2, 181, 1150, 3, 2, 2, 2, 183, 1160, 3, 2, 2, 2, 185, 1166, 3, 2, 2, 2, 187, 1174, 3, 2, 2, 2, 189, 1181, 3, 2, 2, 2, 191, 1186, 3, 2, 2, 2, 193, 1195, 3, 2, 2, 2, 195, 1201, 3, 2, 2, 2, 197, 1210, 3, 2, 2, 2, 199, 1217, 3, 2, 2, 2, 201, 1224, 3, 2, 2, 2, 203, 1229, 3, 2, 2, 2, 205, 1232, 3, 2, 2, 2, 207, 1239, 3, 2, 2, 2, 209, 1242, 3, 2, 2, 2, 211, 1252, 3, 2, 2, 2, 213, 1260, 3, 2, 2, 2, 215, 1266, 3, 2, 2, 2, 217, 1272, 3, 2, 2, 2, 219, 1279, 3, 2, 2, 2, 221, 1289, 3, 2, 2, 2, 223, 1298, 3, 2, 2, 2, 225, 1303, 3, 2, 2, 2, 227, 1311, 3, 2, 2, 2, 229, 1314, 3, 2, 2, 2, 231, 1317, 3, 2, 2, 2, 233, 1327, 3, 2, 2, 2, 235, 1332, 3, 2, 2, 2, 237, 1337, 3, 2, 2, 2, 239, 1342, 3, 2, 2, 2, 241, 1350, 3, 2, 2, 2, 243, 1355, 3, 2, 2, 2, 245, 1361, 3, 2, 2, 2, 247, 1366, 3, 2, 2, 2, 249, 1372, 3, 2, 2, 2, 251, 1378, 3, 2, 2, 2, 253, 1388, 3, 2, 2, 2, 255, 1403, 3, 2, 2, 2, 257, 1411, 3, 2, 2, 2, 259, 1415, 3, 2, 2, 2, 261, 1421, 3, 2, 2, 2, 263, 1429, 3, 2, 2, 2, 265, 1437, 3, 2, 2, 2, 267, 1453, 3, 2, 2, 2, 269, 1466, 3, 2, 2, 2, 271, 1475, 3, 2, 2, 2, 273, 1481, 3, 2, 2, 2, 275, 1488, 3, 2, 2, 2, 277, 1494, 3, 2, 2, 2, 279, 1502, 3, 2, 2, 2, 281, 1507, 3, 2, 2, 2, 283, 1511, 3, 2, 2, 2, 285, 1515, 3, 2, 2, 2, 287, 1520, 3, 2, 2, 2, 289, 1525, 3, 2, 2, 2, 291, 1528, 3, 2, 2, 2, 293, 1533, 3, 2, 2, 2, 295, 1543, 3, 2, 2, 2, 297, 1547, 3, 2, 2, 2, 299, 1552, 3, 2, 2, 2, 301, 1559, 3, 2, 2, 2, 303, 1565, 3, 2, 2, 2, 305, 1572, 3, 2, 2, 2, 307, 1577, 3, 2, 2, 2, 309, 1580, 3, 2, 2, 2, 311, 1584, 3, 2, 2, 2, 313, 1589, 3, 2, 2, 2, 315, 1596, 3, 2, 2, 2, 317, 1599, 3, 2, 2, 2, 319, 1605, 3, 2, 2, 2, 321, 1616, 3, 2, 2, 2, 323, 1622, 3, 2, 2, 2, 325, 1629, 3, 2, 2, 2, 327, 1634, 3, 2, 2, 2, 329, 1644, 3, 2, 2, 2, 331, 1655, 3, 2, 2, 2, 333, 1660, 3, 2, 2, 2, 335, 1665, 3, 2, 2, 2, 337, 1673, 3, 2, 2, 2, 339, 1677, 3, 2, 2, 2, 341, 1685, 3, 2, 2, 2, 343, 1694, 3, 2, 2, 2, 345, 1704, 3, 2, 2, 2, 347, 1714, 3, 2, 2, 2, 349, 1722, 3, 2, 2, 2, 351, 1733, 3, 2, 2, 2, 353, 1744, 3, 2, 2, 2, 355, 1750, 3, 2, 2, 2, 357, 1755, 3, 2, 2, 2, 359, 1765, 3, 2, 2, 2, 361, 1773, 3, 2, 2, 2, 363, 1780, 3, 2, 2, 2, 365, 1791, 3, 2, 2, 2, 367, 1799, 3, 2, 2, 2, 369, 1805, 3, 2, 2, 2, 371, 1813, 3, 2, 2, 2, 373, 1822, 3, 2, 2, 2, 375, 1829, 3, 2, 2, 2, 377, 1835, 3, 2, 2, 2, 379, 1840, 3, 2, 2, 2, 381, 1846, 3, 2, 2, 2, 383, 1855, 3, 2, 2, 2, 385, 1862, 3, 2, 2, 2, 387, 1866, 3, 2, 2, 2, 389, 1871, 3, 2, 2, 2, 391, 1879, 3, 2, 2, 2, 393, 1886, 3, 2, 2, 2, 395, 1894, 3, 2, 2, 2, 397, 1901, 3, 2, 2, 2, 399, 1910, 3, 2, 2, 2, 401, 1915, 3, 2, 2, 2, 403, 1922, 3, 2, 2, 2, 405, 1935, 3, 2, 2, 2, 407, 1943, 3, 2, 2, 2, 409, 1947, 3, 2, 2, 2, 411, 1952, 3, 2, 2, 2, 413, 1957, 3, 2, 2, 2, 415, 1962, 3, 2, 2, 2, 417, 1968, 3, 2, 2, 2, 419, 1974, 3, 2, 2, 2, 421, 1981, 3, 2, 2, 2, 423, 1991, 3, 2, 2, 2, 425, 1998, 3, 2, 2, 2, 427, 2004, 3, 2, 2, 2, 429, 2011, 3, 2, 2, 2, 431, 2023, 3, 2, 2, 2, 433, 2028, 3, 2, 2, 2, 435, 2033, 3, 2, 2, 2, 437, 2038, 3, 2, 2, 2, 439, 2043, 3, 2, 2, 2, 441, 2053, 3, 2, 2, 2, 443, 2056, 3, 2, 2, 2, 445, 2068, 3, 2, 2, 2, 447, 2077, 3, 2, 2, 2, 449, 2082, 3, 2, 2, 2, 451, 2091, 3, 2, 2, 2, 453, 2096, 3, 2, 2, 2, 455, 2104, 3, 2, 2, 2, 457, 2114, 3, 2, 2, 2, 459, 2126, 3, 2, 2, 2, 461, 2132, 3, 2, 2, 2, 463, 2142, 3, 2, 2, 2, 465, 2149, 3, 2, 2, 2, 467, 2156, 3, 2, 2, 2, 469, 2160, 3, 2, 2, 2, 471, 2165, 3, 2, 2, 2, 473, 2171, 3, 2, 2, 2, 475, 2180, 3, 2, 2, 2, 477, 2187, 3, 2, 2, 2, 479, 2195, 3, 2, 2, 2, 481, 2200, 3, 2, 2, 2, 483, 2205, 3, 2, 2, 2, 485, 2211, 3, 2, 2, 2, 487, 2218, 3, 2, 2, 2, 489, 2223, 3, 2, 2, 2, 491, 2231, 3, 2, 2, 2, 493, 2236, 3, 2, 2, 2, 495, 2242, 3, 2, 2, 2, 497, 2247, 3, 2, 2, 2, 499, 2252, 3, 2, 2, 2, 501, 2258, 3, 2, 2, 2, 503, 2260, 3, 2, 2, 2, 505, 2262, 3, 2, 2, 2, 507, 2265, 3, 2, 2, 2, 509, 2267, 3, 2, 2, 2, 511, 2270, 3, 2, 2, 2, 513, 2272, 3, 2, 2, 2, 515, 2274, 3, 2, 2, 2, 517, 2276, 3, 2, 2, 2, 519, 2278, 3, 2, 2, 2, 521, 2280, 3, 2, 2, 2, 523, 2283, 3, 2, 2, 2, 525, 2285, 3, 2, 2, 2, 527, 2296, 3, 2, 2, 2, 529, 2310, 3, 2, 2, 2, 531, 2322, 3, 2, 2, 2, 533, 2344, 3, 2, 2, 2, 535, 2370, 3, 2, 2, 2, 537, 2374, 3, 2, 2, 2, 539, 2384, 3, 2, 2, 2, 541, 2392, 3, 2, 2, 2, 543, 2403, 3, 2, 2, 2, 545, 2414, 3, 2, 2, 2, 547, 2416, 3, 2, 2, 2, 549, 2425, 3, 2, 2, 2, 551, 2427, 3, 2, 2, 2, 553, 2429, 3, 2, 2, 2, 555, 2446, 3, 2, 2, 2, 557, 2461, 3, 2, 2, 2, 559, 2467, 3, 2, 2, 2, 561, 562, 7, 42, 2, 2, 562, 4, 3, 2, 2, 2, 563, 564, 7, 43, 2, 2, 564, 6, 3, 2, 2, 2, 565, 566, 7, 46, 2, 2, 566, 8, 3, 2, 2, 2, 567, 568, 7, 48, 2, 2, 568, 10, 3, 2, 2, 2, 569, 570, 7, 85, 2, 2, 570, 571, 7, 77, 2, 2, 571, 572, 7, 75, 2, 2, 572, 573, 7, 82, 2, 2, 573, 12, 3, 2, 2, 2, 574, 575, 7, 47, 2, 2, 575, 576, 7, 64, 2, 2, 576, 14, 3, 2, 2, 2, 577, 578, 7, 93, 2, 2, 578, 16, 3, 2, 2, 2, 579, 580, 7, 95, 2, 2, 580, 18, 3, 2, 2, 2, 581, 582, 7, 126, 2, 2, 582, 20, 3, 2, 2, 2, 583, 584, 7, 96, 2, 2, 584, 22, 3, 2, 2, 2, 585, 586, 7, 38, 2, 2, 586, 24, 3, 2, 2, 2, 587, 588, 7, 125, 2, 2, 588, 589, 7, 47, 2, 2, 589, 26, 3, 2, 2, 2, 590, 591, 7, 47, 2, 2, 591, 592, 7, 127, 2, 2, 592, 28, 3, 2, 2, 2, 593, 594, 7, 125, 2, 2, 594, 30, 3, 2, 2, 2, 595, 596, 7, 127, 2, 2, 596, 32, 3, 2, 2, 2, 597, 598, 7, 63, 2, 2, 598, 599, 7, 64, 2, 2, 599, 34, 3, 2, 2, 2, 600, 601, 7, 67, 2, 2, 601, 602, 7, 70, 2, 2, 602, 603, 7, 70, 2, 2, 603, 36, 3, 2, 2, 2, 604, 605, 7, 67, 2, 2, 605, 606, 7, 70, 2, 2, 606, 607, 7, 79, 2, 2, 607, 608, 7, 75, 2, 2, 608, 609, 7, 80, 2, 2, 609, 38, 3, 2, 2, 2, 610, 611, 7, 67, 2, 2, 611, 612, 7, 72, 2, 2, 612, 613, 7, 86, 2, 2, 613, 614, 7, 71, 2, 2, 614, 615, 7, 84, 2, 2, 615, 40, 3, 2, 2, 2, 616, 617, 7, 67, 2, 2, 617, 618, 7, 78, 2, 2, 618, 619, 7, 78, 2, 2, 619, 42, 3, 2, 2, 2, 620, 621, 7, 67, 2, 2, 621, 622, 7, 78, 2, 2, 622, 623, 7, 86, 2, 2, 623, 624, 7, 71, 2, 2, 624, 625, 7, 84, 2, 2, 625, 44, 3, 2, 2, 2, 626, 627, 7, 67, 2, 2, 627, 628, 7, 80, 2, 2, 628, 629, 7, 67, 2, 2, 629, 630, 7, 78, 2, 2, 630, 631, 7, 91, 2, 2, 631, 632, 7, 92, 2, 2, 632, 633, 7, 71, 2, 2, 633, 46, 3, 2, 2, 2, 634, 635, 7, 67, 2, 2, 635, 636, 7, 80, 2, 2, 636, 637, 7, 70, 2, 2, 637, 48, 3, 2, 2, 2, 638, 639, 7, 67, 2, 2, 639, 640, 7, 80, 2, 2, 640, 641, 7, 91, 2, 2, 641, 50, 3, 2, 2, 2, 642, 643, 7, 67, 2, 2, 643, 644, 7, 84, 2, 2, 644, 645, 7, 84, 2, 2, 645, 646, 7, 67, 2, 2, 646, 647, 7, 91, 2, 2, 647, 52, 3, 2, 2, 2, 648, 649, 7, 67, 2, 2, 649, 650, 7, 85, 2, 2, 650, 54, 3, 2, 2, 2, 651, 652, 7, 67, 2, 2, 652, 653, 7, 85, 2, 2, 653, 654, 7, 69, 2, 2, 654, 56, 3, 2, 2, 2, 655, 656, 7, 67, 2, 2, 656, 657, 7, 86, 2, 2, 657, 58, 3, 2, 2, 2, 658, 659, 7, 67, 2, 2, 659, 660, 7, 87, 2, 2, 660, 661, 7, 86, 2, 2, 661, 662, 7, 74, 2, 2, 662, 663, 7, 81, 2, 2, 663, 664, 7, 84, 2, 2, 664, 665, 7, 75, 2, 2, 665, 666, 7, 92, 2, 2, 666, 667, 7, 67, 2, 2, 667, 668, 7, 86, 2, 2, 668, 669, 7, 75, 2, 2, 669, 670, 7, 81, 2, 2, 670, 671, 7, 80, 2, 2, 671, 60, 3, 2, 2, 2, 672, 673, 7, 68, 2, 2, 673, 674, 7, 71, 2, 2, 674, 675, 7, 84, 2, 2, 675, 676, 7, 80, 2, 2, 676, 677, 7, 81, 2, 2, 677, 678, 7, 87, 2, 2, 678, 679, 7, 78, 2, 2, 679, 680, 7, 78, 2, 2, 680, 681, 7, 75, 2, 2, 681, 62, 3, 2, 2, 2, 682, 683, 7, 68, 2, 2, 683, 684, 7, 71, 2, 2, 684, 685, 7, 86, 2, 2, 685, 686, 7, 89, 2, 2, 686, 687, 7, 71, 2, 2, 687, 688, 7, 71, 2, 2, 688, 689, 7, 80, 2, 2, 689, 64, 3, 2, 2, 2, 690, 691, 7, 68, 2, 2, 691, 692, 7, 91, 2, 2, 692, 66, 3, 2, 2, 2, 693, 694, 7, 69, 2, 2, 694, 695, 7, 67, 2, 2, 695, 696, 7, 78, 2, 2, 696, 697, 7, 78, 2, 2, 697, 68, 3, 2, 2, 2, 698, 699, 7, 69, 2, 2, 699, 700, 7, 67, 2, 2, 700, 701, 7, 85, 2, 2, 701, 702, 7, 69, 2, 2, 702, 703, 7, 67, 2, 2, 703, 704, 7, 70, 2, 2, 704, 705, 7, 71, 2, 2, 705, 70, 3, 2, 2, 2, 706, 707, 7, 69, 2, 2, 707, 708, 7, 67, 2, 2, 708, 709, 7, 85, 2, 2, 709, 710, 7, 71, 2, 2, 710, 72, 3, 2, 2, 2, 711, 712, 7, 69, 2, 2, 712, 713, 7, 67, 2, 2, 713, 714, 7, 85, 2, 2, 714, 715, 7, 86, 2, 2, 715, 74, 3, 2, 2, 2, 716, 717, 7, 69, 2, 2, 717, 718, 7, 67, 2, 2, 718, 719, 7, 86, 2, 2, 719, 720, 7, 67, 2, 2, 720, 721, 7, 78, 2, 2, 721, 722, 7, 81, 2, 2, 722, 723, 7, 73, 2, 2, 723, 724, 7, 85, 2, 2, 724, 76, 3, 2, 2, 2, 725, 726, 7, 69, 2, 2, 726, 727, 7, 81, 2, 2, 727, 728, 7, 78, 2, 2, 728, 729, 7, 87, 2, 2, 729, 730, 7, 79, 2, 2, 730, 731, 7, 80, 2, 2, 731, 78, 3, 2, 2, 2, 732, 733, 7, 69, 2, 2, 733, 734, 7, 81, 2, 2, 734, 735, 7, 78, 2, 2, 735, 736, 7, 87, 2, 2, 736, 737, 7, 79, 2, 2, 737, 738, 7, 80, 2, 2, 738, 739, 7, 85, 2, 2, 739, 80, 3, 2, 2, 2, 740, 741, 7, 69, 2, 2, 741, 742, 7, 81, 2, 2, 742, 743, 7, 79, 2, 2, 743, 744, 7, 79, 2, 2, 744, 745, 7, 71, 2, 2, 745, 746, 7, 80, 2, 2, 746, 747, 7, 86, 2, 2, 747, 82, 3, 2, 2, 2, 748, 749, 7, 69, 2, 2, 749, 750, 7, 81, 2, 2, 750, 751, 7, 79, 2, 2, 751, 752, 7, 79, 2, 2, 752, 753, 7, 75, 2, 2, 753, 754, 7, 86, 2, 2, 754, 84, 3, 2, 2, 2, 755, 756, 7, 69, 2, 2, 756, 757, 7, 81, 2, 2, 757, 758, 7, 79, 2, 2, 758, 759, 7, 79, 2, 2, 759, 760, 7, 75, 2, 2, 760, 761, 7, 86, 2, 2, 761, 762, 7, 86, 2, 2, 762, 763, 7, 71, 2, 2, 763, 764, 7, 70, 2, 2, 764, 86, 3, 2, 2, 2, 765, 766, 7, 69, 2, 2, 766, 767, 7, 81, 2, 2, 767, 768, 7, 80, 2, 2, 768, 769, 7, 85, 2, 2, 769, 770, 7, 86, 2, 2, 770, 771, 7, 84, 2, 2, 771, 772, 7, 67, 2, 2, 772, 773, 7, 75, 2, 2, 773, 774, 7, 80, 2, 2, 774, 775, 7, 86, 2, 2, 775, 88, 3, 2, 2, 2, 776, 777, 7, 69, 2, 2, 777, 778, 7, 84, 2, 2, 778, 779, 7, 71, 2, 2, 779, 780, 7, 67, 2, 2, 780, 781, 7, 86, 2, 2, 781, 782, 7, 71, 2, 2, 782, 90, 3, 2, 2, 2, 783, 784, 7, 69, 2, 2, 784, 785, 7, 84, 2, 2, 785, 786, 7, 81, 2, 2, 786, 787, 7, 85, 2, 2, 787, 788, 7, 85, 2, 2, 788, 92, 3, 2, 2, 2, 789, 790, 7, 69, 2, 2, 790, 791, 7, 87, 2, 2, 791, 792, 7, 68, 2, 2, 792, 793, 7, 71, 2, 2, 793, 94, 3, 2, 2, 2, 794, 795, 7, 69, 2, 2, 795, 796, 7, 87, 2, 2, 796, 797, 7, 84, 2, 2, 797, 798, 7, 84, 2, 2, 798, 799, 7, 71, 2, 2, 799, 800, 7, 80, 2, 2, 800, 801, 7, 86, 2, 2, 801, 96, 3, 2, 2, 2, 802, 803, 7, 69, 2, 2, 803, 804, 7, 87, 2, 2, 804, 805, 7, 84, 2, 2, 805, 806, 7, 84, 2, 2, 806, 807, 7, 71, 2, 2, 807, 808, 7, 80, 2, 2, 808, 809, 7, 86, 2, 2, 809, 810, 7, 97, 2, 2, 810, 811, 7, 69, 2, 2, 811, 812, 7, 67, 2, 2, 812, 813, 7, 86, 2, 2, 813, 814, 7, 67, 2, 2, 814, 815, 7, 78, 2, 2, 815, 816, 7, 81, 2, 2, 816, 817, 7, 73, 2, 2, 817, 98, 3, 2, 2, 2, 818, 819, 7, 69, 2, 2, 819, 820, 7, 87, 2, 2, 820, 821, 7, 84, 2, 2, 821, 822, 7, 84, 2, 2, 822, 823, 7, 71, 2, 2, 823, 824, 7, 80, 2, 2, 824, 825, 7, 86, 2, 2, 825, 826, 7, 97, 2, 2, 826, 827, 7, 70, 2, 2, 827, 828, 7, 67, 2, 2, 828, 829, 7, 86, 2, 2, 829, 830, 7, 71, 2, 2, 830, 100, 3, 2, 2, 2, 831, 832, 7, 69, 2, 2, 832, 833, 7, 87, 2, 2, 833, 834, 7, 84, 2, 2, 834, 835, 7, 84, 2, 2, 835, 836, 7, 71, 2, 2, 836, 837, 7, 80, 2, 2, 837, 838, 7, 86, 2, 2, 838, 839, 7, 97, 2, 2, 839, 840, 7, 82, 2, 2, 840, 841, 7, 67, 2, 2, 841, 842, 7, 86, 2, 2, 842, 843, 7, 74, 2, 2, 843, 102, 3, 2, 2, 2, 844, 845, 7, 69, 2, 2, 845, 846, 7, 87, 2, 2, 846, 847, 7, 84, 2, 2, 847, 848, 7, 84, 2, 2, 848, 849, 7, 71, 2, 2, 849, 850, 7, 80, 2, 2, 850, 851, 7, 86, 2, 2, 851, 852, 7, 97, 2, 2, 852, 853, 7, 84, 2, 2, 853, 854, 7, 81, 2, 2, 854, 855, 7, 78, 2, 2, 855, 856, 7, 71, 2, 2, 856, 104, 3, 2, 2, 2, 857, 858, 7, 69, 2, 2, 858, 859, 7, 87, 2, 2, 859, 860, 7, 84, 2, 2, 860, 861, 7, 84, 2, 2, 861, 862, 7, 71, 2, 2, 862, 863, 7, 80, 2, 2, 863, 864, 7, 86, 2, 2, 864, 865, 7, 97, 2, 2, 865, 866, 7, 85, 2, 2, 866, 867, 7, 69, 2, 2, 867, 868, 7, 74, 2, 2, 868, 869, 7, 71, 2, 2, 869, 870, 7, 79, 2, 2, 870, 871, 7, 67, 2, 2, 871, 106, 3, 2, 2, 2, 872, 873, 7, 69, 2, 2, 873, 874, 7, 87, 2, 2, 874, 875, 7, 84, 2, 2, 875, 876, 7, 84, 2, 2, 876, 877, 7, 71, 2, 2, 877, 878, 7, 80, 2, 2, 878, 879, 7, 86, 2, 2, 879, 880, 7, 97, 2, 2, 880, 881, 7, 86, 2, 2, 881, 882, 7, 75, 2, 2, 882, 883, 7, 79, 2, 2, 883, 884, 7, 71, 2, 2, 884, 108, 3, 2, 2, 2, 885, 886, 7, 69, 2, 2, 886, 887, 7, 87, 2, 2, 887, 888, 7, 84, 2, 2, 888, 889, 7, 84, 2, 2, 889, 890, 7, 71, 2, 2, 890, 891, 7, 80, 2, 2, 891, 892, 7, 86, 2, 2, 892, 893, 7, 97, 2, 2, 893, 894, 7, 86, 2, 2, 894, 895, 7, 75, 2, 2, 895, 896, 7, 79, 2, 2, 896, 897, 7, 71, 2, 2, 897, 898, 7, 85, 2, 2, 898, 899, 7, 86, 2, 2, 899, 900, 7, 67, 2, 2, 900, 901, 7, 79, 2, 2, 901, 902, 7, 82, 2, 2, 902, 110, 3, 2, 2, 2, 903, 904, 7, 69, 2, 2, 904, 905, 7, 87, 2, 2, 905, 906, 7, 84, 2, 2, 906, 907, 7, 84, 2, 2, 907, 908, 7, 71, 2, 2, 908, 909, 7, 80, 2, 2, 909, 910, 7, 86, 2, 2, 910, 911, 7, 97, 2, 2, 911, 912, 7, 87, 2, 2, 912, 913, 7, 85, 2, 2, 913, 914, 7, 71, 2, 2, 914, 915, 7, 84, 2, 2, 915, 112, 3, 2, 2, 2, 916, 917, 7, 70, 2, 2, 917, 918, 7, 67, 2, 2, 918, 919, 7, 86, 2, 2, 919, 920, 7, 67, 2, 2, 920, 114, 3, 2, 2, 2, 921, 922, 7, 70, 2, 2, 922, 923, 7, 67, 2, 2, 923, 924, 7, 86, 2, 2, 924, 925, 7, 71, 2, 2, 925, 116, 3, 2, 2, 2, 926, 927, 7, 70, 2, 2, 927, 928, 7, 67, 2, 2, 928, 929, 7, 91, 2, 2, 929, 118, 3, 2, 2, 2, 930, 931, 7, 70, 2, 2, 931, 932, 7, 71, 2, 2, 932, 933, 7, 72, 2, 2, 933, 934, 7, 67, 2, 2, 934, 935, 7, 87, 2, 2, 935, 936, 7, 78, 2, 2, 936, 937, 7, 86, 2, 2, 937, 120, 3, 2, 2, 2, 938, 939, 7, 70, 2, 2, 939, 940, 7, 71, 2, 2, 940, 941, 7, 67, 2, 2, 941, 942, 7, 78, 2, 2, 942, 943, 7, 78, 2, 2, 943, 944, 7, 81, 2, 2, 944, 945, 7, 69, 2, 2, 945, 946, 7, 67, 2, 2, 946, 947, 7, 86, 2, 2, 947, 948, 7, 71, 2, 2, 948, 122, 3, 2, 2, 2, 949, 950, 7, 70, 2, 2, 950, 951, 7, 71, 2, 2, 951, 952, 7, 72, 2, 2, 952, 953, 7, 75, 2, 2, 953, 954, 7, 80, 2, 2, 954, 955, 7, 71, 2, 2, 955, 956, 7, 84, 2, 2, 956, 124, 3, 2, 2, 2, 957, 958, 7, 70, 2, 2, 958, 959, 7, 71, 2, 2, 959, 960, 7, 78, 2, 2, 960, 961, 7, 71, 2, 2, 961, 962, 7, 86, 2, 2, 962, 963, 7, 71, 2, 2, 963, 126, 3, 2, 2, 2, 964, 965, 7, 70, 2, 2, 965, 966, 7, 71, 2, 2, 966, 967, 7, 85, 2, 2, 967, 968, 7, 69, 2, 2, 968, 128, 3, 2, 2, 2, 969, 970, 7, 70, 2, 2, 970, 971, 7, 71, 2, 2, 971, 972, 7, 85, 2, 2, 972, 973, 7, 69, 2, 2, 973, 974, 7, 84, 2, 2, 974, 975, 7, 75, 2, 2, 975, 976, 7, 68, 2, 2, 976, 977, 7, 71, 2, 2, 977, 130, 3, 2, 2, 2, 978, 979, 7, 70, 2, 2, 979, 980, 7, 71, 2, 2, 980, 981, 7, 72, 2, 2, 981, 982, 7, 75, 2, 2, 982, 983, 7, 80, 2, 2, 983, 984, 7, 71, 2, 2, 984, 132, 3, 2, 2, 2, 985, 986, 7, 70, 2, 2, 986, 987, 7, 75, 2, 2, 987, 988, 7, 85, 2, 2, 988, 989, 7, 86, 2, 2, 989, 990, 7, 75, 2, 2, 990, 991, 7, 80, 2, 2, 991, 992, 7, 69, 2, 2, 992, 993, 7, 86, 2, 2, 993, 134, 3, 2, 2, 2, 994, 995, 7, 70, 2, 2, 995, 996, 7, 75, 2, 2, 996, 997, 7, 85, 2, 2, 997, 998, 7, 86, 2, 2, 998, 999, 7, 84, 2, 2, 999, 1000, 7, 75, 2, 2, 1000, 1001, 7, 68, 2, 2, 1001, 1002, 7, 87, 2, 2, 1002, 1003, 7, 86, 2, 2, 1003, 1004, 7, 71, 2, 2, 1004, 1005, 7, 70, 2, 2, 1005, 136, 3, 2, 2, 2, 1006, 1007, 7, 70, 2, 2, 1007, 1008, 7, 81, 2, 2, 1008, 1009, 7, 87, 2, 2, 1009, 1010, 7, 68, 2, 2, 1010, 1011, 7, 78, 2, 2, 1011, 1012, 7, 71, 2, 2, 1012, 138, 3, 2, 2, 2, 1013, 1014, 7, 70, 2, 2, 1014, 1015, 7, 84, 2, 2, 1015, 1016, 7, 81, 2, 2, 1016, 1017, 7, 82, 2, 2, 1017, 140, 3, 2, 2, 2, 1018, 1019, 7, 71, 2, 2, 1019, 1020, 7, 78, 2, 2, 1020, 1021, 7, 85, 2, 2, 1021, 1022, 7, 71, 2, 2, 1022, 142, 3, 2, 2, 2, 1023, 1024, 7, 71, 2, 2, 1024, 1025, 7, 79, 2, 2, 1025, 1026, 7, 82, 2, 2, 1026, 1027, 7, 86, 2, 2, 1027, 1028, 7, 91, 2, 2, 1028, 144, 3, 2, 2, 2, 1029, 1030, 7, 71, 2, 2, 1030, 1031, 7, 80, 2, 2, 1031, 1032, 7, 70, 2, 2, 1032, 146, 3, 2, 2, 2, 1033, 1034, 7, 71, 2, 2, 1034, 1035, 7, 85, 2, 2, 1035, 1036, 7, 69, 2, 2, 1036, 1037, 7, 67, 2, 2, 1037, 1038, 7, 82, 2, 2, 1038, 1039, 7, 71, 2, 2, 1039, 148, 3, 2, 2, 2, 1040, 1041, 7, 71, 2, 2, 1041, 1042, 7, 90, 2, 2, 1042, 1043, 7, 69, 2, 2, 1043, 1044, 7, 71, 2, 2, 1044, 1045, 7, 82, 2, 2, 1045, 1046, 7, 86, 2, 2, 1046, 150, 3, 2, 2, 2, 1047, 1048, 7, 71, 2, 2, 1048, 1049, 7, 90, 2, 2, 1049, 1050, 7, 69, 2, 2, 1050, 1051, 7, 78, 2, 2, 1051, 1052, 7, 87, 2, 2, 1052, 1053, 7, 70, 2, 2, 1053, 1054, 7, 75, 2, 2, 1054, 1055, 7, 80, 2, 2, 1055, 1056, 7, 73, 2, 2, 1056, 152, 3, 2, 2, 2, 1057, 1058, 7, 71, 2, 2, 1058, 1059, 7, 90, 2, 2, 1059, 1060, 7, 71, 2, 2, 1060, 1061, 7, 69, 2, 2, 1061, 1062, 7, 87, 2, 2, 1062, 1063, 7, 86, 2, 2, 1063, 1064, 7, 71, 2, 2, 1064, 154, 3, 2, 2, 2, 1065, 1066, 7, 71, 2, 2, 1066, 1067, 7, 90, 2, 2, 1067, 1068, 7, 75, 2, 2, 1068, 1069, 7, 85, 2, 2, 1069, 1070, 7, 86, 2, 2, 1070, 1071, 7, 85, 2, 2, 1071, 156, 3, 2, 2, 2, 1072, 1073, 7, 71, 2, 2, 1073, 1074, 7, 90, 2, 2, 1074, 1075, 7, 82, 2, 2, 1075, 1076, 7, 78, 2, 2, 1076, 1077, 7, 67, 2, 2, 1077, 1078, 7, 75, 2, 2, 1078, 1079, 7, 80, 2, 2, 1079, 158, 3, 2, 2, 2, 1080, 1081, 7, 71, 2, 2, 1081, 1082, 7, 90, 2, 2, 1082, 1083, 7, 86, 2, 2, 1083, 1084, 7, 84, 2, 2, 1084, 1085, 7, 67, 2, 2, 1085, 1086, 7, 69, 2, 2, 1086, 1087, 7, 86, 2, 2, 1087, 160, 3, 2, 2, 2, 1088, 1089, 7, 72, 2, 2, 1089, 1090, 7, 67, 2, 2, 1090, 1091, 7, 78, 2, 2, 1091, 1092, 7, 85, 2, 2, 1092, 1093, 7, 71, 2, 2, 1093, 162, 3, 2, 2, 2, 1094, 1095, 7, 72, 2, 2, 1095, 1096, 7, 71, 2, 2, 1096, 1097, 7, 86, 2, 2, 1097, 1098, 7, 69, 2, 2, 1098, 1099, 7, 74, 2, 2, 1099, 164, 3, 2, 2, 2, 1100, 1101, 7, 72, 2, 2, 1101, 1102, 7, 75, 2, 2, 1102, 1103, 7, 78, 2, 2, 1103, 1104, 7, 86, 2, 2, 1104, 1105, 7, 71, 2, 2, 1105, 1106, 7, 84, 2, 2, 1106, 166, 3, 2, 2, 2, 1107, 1108, 7, 72, 2, 2, 1108, 1109, 7, 75, 2, 2, 1109, 1110, 7, 80, 2, 2, 1110, 1111, 7, 67, 2, 2, 1111, 1112, 7, 78, 2, 2, 1112, 168, 3, 2, 2, 2, 1113, 1114, 7, 72, 2, 2, 1114, 1115, 7, 75, 2, 2, 1115, 1116, 7, 84, 2, 2, 1116, 1117, 7, 85, 2, 2, 1117, 1118, 7, 86, 2, 2, 1118, 170, 3, 2, 2, 2, 1119, 1120, 7, 72, 2, 2, 1120, 1121, 7, 81, 2, 2, 1121, 1122, 7, 78, 2, 2, 1122, 1123, 7, 78, 2, 2, 1123, 1124, 7, 81, 2, 2, 1124, 1125, 7, 89, 2, 2, 1125, 1126, 7, 75, 2, 2, 1126, 1127, 7, 80, 2, 2, 1127, 1128, 7, 73, 2, 2, 1128, 172, 3, 2, 2, 2, 1129, 1130, 7, 72, 2, 2, 1130, 1131, 7, 81, 2, 2, 1131, 1132, 7, 84, 2, 2, 1132, 174, 3, 2, 2, 2, 1133, 1134, 7, 72, 2, 2, 1134, 1135, 7, 81, 2, 2, 1135, 1136, 7, 84, 2, 2, 1136, 1137, 7, 79, 2, 2, 1137, 1138, 7, 67, 2, 2, 1138, 1139, 7, 86, 2, 2, 1139, 176, 3, 2, 2, 2, 1140, 1141, 7, 72, 2, 2, 1141, 1142, 7, 84, 2, 2, 1142, 1143, 7, 81, 2, 2, 1143, 1144, 7, 79, 2, 2, 1144, 178, 3, 2, 2, 2, 1145, 1146, 7, 72, 2, 2, 1146, 1147, 7, 87, 2, 2, 1147, 1148, 7, 78, 2, 2, 1148, 1149, 7, 78, 2, 2, 1149, 180, 3, 2, 2, 2, 1150, 1151, 7, 72, 2, 2, 1151, 1152, 7, 87, 2, 2, 1152, 1153, 7, 80, 2, 2, 1153, 1154, 7, 69, 2, 2, 1154, 1155, 7, 86, 2, 2, 1155, 1156, 7, 75, 2, 2, 1156, 1157, 7, 81, 2, 2, 1157, 1158, 7, 80, 2, 2, 1158, 1159, 7, 85, 2, 2, 1159, 182, 3, 2, 2, 2, 1160, 1161, 7, 73, 2, 2, 1161, 1162, 7, 84, 2, 2, 1162, 1163, 7, 67, 2, 2, 1163, 1164, 7, 80, 2, 2, 1164, 1165, 7, 86, 2, 2, 1165, 184, 3, 2, 2, 2, 1166, 1167, 7, 73, 2, 2, 1167, 1168, 7, 84, 2, 2, 1168, 1169, 7, 67, 2, 2, 1169, 1170, 7, 80, 2, 2, 1170, 1171, 7, 86, 2, 2, 1171, 1172, 7, 71, 2, 2, 1172, 1173, 7, 70, 2, 2, 1173, 186, 3, 2, 2, 2, 1174, 1175, 7, 73, 2, 2, 1175, 1176, 7, 84, 2, 2, 1176, 1177, 7, 67, 2, 2, 1177, 1178, 7, 80, 2, 2, 1178, 1179, 7, 86, 2, 2, 1179, 1180, 7, 85, 2, 2, 1180, 188, 3, 2, 2, 2, 1181, 1182, 7, 70, 2, 2, 1182, 1183, 7, 71, 2, 2, 1183, 1184, 7, 80, 2, 2, 1184, 1185, 7, 91, 2, 2, 1185, 190, 3, 2, 2, 2, 1186, 1187, 7, 73, 2, 2, 1187, 1188, 7, 84, 2, 2, 1188, 1189, 7, 67, 2, 2, 1189, 1190, 7, 82, 2, 2, 1190, 1191, 7, 74, 2, 2, 1191, 1192, 7, 88, 2, 2, 1192, 1193, 7, 75, 2, 2, 1193, 1194, 7, 92, 2, 2, 1194, 192, 3, 2, 2, 2, 1195, 1196, 7, 73, 2, 2, 1196, 1197, 7, 84, 2, 2, 1197, 1198, 7, 81, 2, 2, 1198, 1199, 7, 87, 2, 2, 1199, 1200, 7, 82, 2, 2, 1200, 194, 3, 2, 2, 2, 1201, 1202, 7, 73, 2, 2, 1202, 1203, 7, 84, 2, 2, 1203, 1204, 7, 81, 2, 2, 1204, 1205, 7, 87, 2, 2, 1205, 1206, 7, 82, 2, 2, 1206, 1207, 7, 75, 2, 2, 1207, 1208, 7, 80, 2, 2, 1208, 1209, 7, 73, 2, 2, 1209, 196, 3, 2, 2, 2, 1210, 1211, 7, 73, 2, 2, 1211, 1212, 7, 84, 2, 2, 1212, 1213, 7, 81, 2, 2, 1213, 1214, 7, 87, 2, 2, 1214, 1215, 7, 82, 2, 2, 1215, 1216, 7, 85, 2, 2, 1216, 198, 3, 2, 2, 2, 1217, 1218, 7, 74, 2, 2, 1218, 1219, 7, 67, 2, 2, 1219, 1220, 7, 88, 2, 2, 1220, 1221, 7, 75, 2, 2, 1221, 1222, 7, 80, 2, 2, 1222, 1223, 7, 73, 2, 2, 1223, 200, 3, 2, 2, 2, 1224, 1225, 7, 74, 2, 2, 1225, 1226, 7, 81, 2, 2, 1226, 1227, 7, 87, 2, 2, 1227, 1228, 7, 84, 2, 2, 1228, 202, 3, 2, 2, 2, 1229, 1230, 7, 75, 2, 2, 1230, 1231, 7, 72, 2, 2, 1231, 204, 3, 2, 2, 2, 1232, 1233, 7, 75, 2, 2, 1233, 1234, 7, 73, 2, 2, 1234, 1235, 7, 80, 2, 2, 1235, 1236, 7, 81, 2, 2, 1236, 1237, 7, 84, 2, 2, 1237, 1238, 7, 71, 2, 2, 1238, 206, 3, 2, 2, 2, 1239, 1240, 7, 75, 2, 2, 1240, 1241, 7, 80, 2, 2, 1241, 208, 3, 2, 2, 2, 1242, 1243, 7, 75, 2, 2, 1243, 1244, 7, 80, 2, 2, 1244, 1245, 7, 69, 2, 2, 1245, 1246, 7, 78, 2, 2, 1246, 1247, 7, 87, 2, 2, 1247, 1248, 7, 70, 2, 2, 1248, 1249, 7, 75, 2, 2, 1249, 1250, 7, 80, 2, 2, 1250, 1251, 7, 73, 2, 2, 1251, 210, 3, 2, 2, 2, 1252, 1253, 7, 75, 2, 2, 1253, 1254, 7, 80, 2, 2, 1254, 1255, 7, 75, 2, 2, 1255, 1256, 7, 86, 2, 2, 1256, 1257, 7, 75, 2, 2, 1257, 1258, 7, 67, 2, 2, 1258, 1259, 7, 78, 2, 2, 1259, 212, 3, 2, 2, 2, 1260, 1261, 7, 75, 2, 2, 1261, 1262, 7, 80, 2, 2, 1262, 1263, 7, 80, 2, 2, 1263, 1264, 7, 71, 2, 2, 1264, 1265, 7, 84, 2, 2, 1265, 214, 3, 2, 2, 2, 1266, 1267, 7, 75, 2, 2, 1267, 1268, 7, 80, 2, 2, 1268, 1269, 7, 82, 2, 2, 1269, 1270, 7, 87, 2, 2, 1270, 1271, 7, 86, 2, 2, 1271, 216, 3, 2, 2, 2, 1272, 1273, 7, 75, 2, 2, 1273, 1274, 7, 80, 2, 2, 1274, 1275, 7, 85, 2, 2, 1275, 1276, 7, 71, 2, 2, 1276, 1277, 7, 84, 2, 2, 1277, 1278, 7, 86, 2, 2, 1278, 218, 3, 2, 2, 2, 1279, 1280, 7, 75, 2, 2, 1280, 1281, 7, 80, 2, 2, 1281, 1282, 7, 86, 2, 2, 1282, 1283, 7, 71, 2, 2, 1283, 1284, 7, 84, 2, 2, 1284, 1285, 7, 85, 2, 2, 1285, 1286, 7, 71, 2, 2, 1286, 1287, 7, 69, 2, 2, 1287, 1288, 7, 86, 2, 2, 1288, 220, 3, 2, 2, 2, 1289, 1290, 7, 75, 2, 2, 1290, 1291, 7, 80, 2, 2, 1291, 1292, 7, 86, 2, 2, 1292, 1293, 7, 71, 2, 2, 1293, 1294, 7, 84, 2, 2, 1294, 1295, 7, 88, 2, 2, 1295, 1296, 7, 67, 2, 2, 1296, 1297, 7, 78, 2, 2, 1297, 222, 3, 2, 2, 2, 1298, 1299, 7, 75, 2, 2, 1299, 1300, 7, 80, 2, 2, 1300, 1301, 7, 86, 2, 2, 1301, 1302, 7, 81, 2, 2, 1302, 224, 3, 2, 2, 2, 1303, 1304, 7, 75, 2, 2, 1304, 1305, 7, 80, 2, 2, 1305, 1306, 7, 88, 2, 2, 1306, 1307, 7, 81, 2, 2, 1307, 1308, 7, 77, 2, 2, 1308, 1309, 7, 71, 2, 2, 1309, 1310, 7, 84, 2, 2, 1310, 226, 3, 2, 2, 2, 1311, 1312, 7, 75, 2, 2, 1312, 1313, 7, 81, 2, 2, 1313, 228, 3, 2, 2, 2, 1314, 1315, 7, 75, 2, 2, 1315, 1316, 7, 85, 2, 2, 1316, 230, 3, 2, 2, 2, 1317, 1318, 7, 75, 2, 2, 1318, 1319, 7, 85, 2, 2, 1319, 1320, 7, 81, 2, 2, 1320, 1321, 7, 78, 2, 2, 1321, 1322, 7, 67, 2, 2, 1322, 1323, 7, 86, 2, 2, 1323, 1324, 7, 75, 2, 2, 1324, 1325, 7, 81, 2, 2, 1325, 1326, 7, 80, 2, 2, 1326, 232, 3, 2, 2, 2, 1327, 1328, 7, 76, 2, 2, 1328, 1329, 7, 81, 2, 2, 1329, 1330, 7, 75, 2, 2, 1330, 1331, 7, 80, 2, 2, 1331, 234, 3, 2, 2, 2, 1332, 1333, 7, 76, 2, 2, 1333, 1334, 7, 85, 2, 2, 1334, 1335, 7, 81, 2, 2, 1335, 1336, 7, 80, 2, 2, 1336, 236, 3, 2, 2, 2, 1337, 1338, 7, 78, 2, 2, 1338, 1339, 7, 67, 2, 2, 1339, 1340, 7, 85, 2, 2, 1340, 1341, 7, 86, 2, 2, 1341, 238, 3, 2, 2, 2, 1342, 1343, 7, 78, 2, 2, 1343, 1344, 7, 67, 2, 2, 1344, 1345, 7, 86, 2, 2, 1345, 1346, 7, 71, 2, 2, 1346, 1347, 7, 84, 2, 2, 1347, 1348, 7, 67, 2, 2, 1348, 1349, 7, 78, 2, 2, 1349, 240, 3, 2, 2, 2, 1350, 1351, 7, 78, 2, 2, 1351, 1352, 7, 71, 2, 2, 1352, 1353, 7, 72, 2, 2, 1353, 1354, 7, 86, 2, 2, 1354, 242, 3, 2, 2, 2, 1355, 1356, 7, 78, 2, 2, 1356, 1357, 7, 71, 2, 2, 1357, 1358, 7, 88, 2, 2, 1358, 1359, 7, 71, 2, 2, 1359, 1360, 7, 78, 2, 2, 1360, 244, 3, 2, 2, 2, 1361, 1362, 7, 78, 2, 2, 1362, 1363, 7, 75, 2, 2, 1363, 1364, 7, 77, 2, 2, 1364, 1365, 7, 71, 2, 2, 1365, 246, 3, 2, 2, 2, 1366, 1367, 7, 78, 2, 2, 1367, 1368, 7, 75, 2, 2, 1368, 1369, 7, 79, 2, 2, 1369, 1370, 7, 75, 2, 2, 1370, 1371, 7, 86, 2, 2, 1371, 248, 3, 2, 2, 2, 1372, 1373, 7, 78, 2, 2, 1373, 1374, 7, 81, 2, 2, 1374, 1375, 7, 69, 2, 2, 1375, 1376, 7, 67, 2, 2, 1376, 1377, 7, 78, 2, 2, 1377, 250, 3, 2, 2, 2, 1378, 1379, 7, 78, 2, 2, 1379, 1380, 7, 81, 2, 2, 1380, 1381, 7, 69, 2, 2, 1381, 1382, 7, 67, 2, 2, 1382, 1383, 7, 78, 2, 2, 1383, 1384, 7, 86, 2, 2, 1384, 1385, 7, 75, 2, 2, 1385, 1386, 7, 79, 2, 2, 1386, 1387, 7, 71, 2, 2, 1387, 252, 3, 2, 2, 2, 1388, 1389, 7, 78, 2, 2, 1389, 1390, 7, 81, 2, 2, 1390, 1391, 7, 69, 2, 2, 1391, 1392, 7, 67, 2, 2, 1392, 1393, 7, 78, 2, 2, 1393, 1394, 7, 86, 2, 2, 1394, 1395, 7, 75, 2, 2, 1395, 1396, 7, 79, 2, 2, 1396, 1397, 7, 71, 2, 2, 1397, 1398, 7, 85, 2, 2, 1398, 1399, 7, 86, 2, 2, 1399, 1400, 7, 67, 2, 2, 1400, 1401, 7, 79, 2, 2, 1401, 1402, 7, 82, 2, 2, 1402, 254, 3, 2, 2, 2, 1403, 1404, 7, 78, 2, 2, 1404, 1405, 7, 81, 2, 2, 1405, 1406, 7, 73, 2, 2, 1406, 1407, 7, 75, 2, 2, 1407, 1408, 7, 69, 2, 2, 1408, 1409, 7, 67, 2, 2, 1409, 1410, 7, 78, 2, 2, 1410, 256, 3, 2, 2, 2, 1411, 1412, 7, 79, 2, 2, 1412, 1413, 7, 67, 2, 2, 1413, 1414, 7, 82, 2, 2, 1414, 258, 3, 2, 2, 2, 1415, 1416, 7, 79, 2, 2, 1416, 1417, 7, 67, 2, 2, 1417, 1418, 7, 86, 2, 2, 1418, 1419, 7, 69, 2, 2, 1419, 1420, 7, 74, 2, 2, 1420, 260, 3, 2, 2, 2, 1421, 1422, 7, 79, 2, 2, 1422, 1423, 7, 67, 2, 2, 1423, 1424, 7, 86, 2, 2, 1424, 1425, 7, 69, 2, 2, 1425, 1426, 7, 74, 2, 2, 1426, 1427, 7, 71, 2, 2, 1427, 1428, 7, 70, 2, 2, 1428, 262, 3, 2, 2, 2, 1429, 1430, 7, 79, 2, 2, 1430, 1431, 7, 67, 2, 2, 1431, 1432, 7, 86, 2, 2, 1432, 1433, 7, 69, 2, 2, 1433, 1434, 7, 74, 2, 2, 1434, 1435, 7, 71, 2, 2, 1435, 1436, 7, 85, 2, 2, 1436, 264, 3, 2, 2, 2, 1437, 1438, 7, 79, 2, 2, 1438, 1439, 7, 67, 2, 2, 1439, 1440, 7, 86, 2, 2, 1440, 1441, 7, 69, 2, 2, 1441, 1442, 7, 74, 2, 2, 1442, 1443, 7, 97, 2, 2, 1443, 1444, 7, 84, 2, 2, 1444, 1445, 7, 71, 2, 2, 1445, 1446, 7, 69, 2, 2, 1446, 1447, 7, 81, 2, 2, 1447, 1448, 7, 73, 2, 2, 1448, 1449, 7, 80, 2, 2, 1449, 1450, 7, 75, 2, 2, 1450, 1451, 7, 92, 2, 2, 1451, 1452, 7, 71, 2, 2, 1452, 266, 3, 2, 2, 2, 1453, 1454, 7, 79, 2, 2, 1454, 1455, 7, 67, 2, 2, 1455, 1456, 7, 86, 2, 2, 1456, 1457, 7, 71, 2, 2, 1457, 1458, 7, 84, 2, 2, 1458, 1459, 7, 75, 2, 2, 1459, 1460, 7, 67, 2, 2, 1460, 1461, 7, 78, 2, 2, 1461, 1462, 7, 75, 2, 2, 1462, 1463, 7, 92, 2, 2, 1463, 1464, 7, 71, 2, 2, 1464, 1465, 7, 70, 2, 2, 1465, 268, 3, 2, 2, 2, 1466, 1467, 7, 79, 2, 2, 1467, 1468, 7, 71, 2, 2, 1468, 1469, 7, 67, 2, 2, 1469, 1470, 7, 85, 2, 2, 1470, 1471, 7, 87, 2, 2, 1471, 1472, 7, 84, 2, 2, 1472, 1473, 7, 71, 2, 2, 1473, 1474, 7, 85, 2, 2, 1474, 270, 3, 2, 2, 2, 1475, 1476, 7, 79, 2, 2, 1476, 1477, 7, 71, 2, 2, 1477, 1478, 7, 84, 2, 2, 1478, 1479, 7, 73, 2, 2, 1479, 1480, 7, 71, 2, 2, 1480, 272, 3, 2, 2, 2, 1481, 1482, 7, 79, 2, 2, 1482, 1483, 7, 75, 2, 2, 1483, 1484, 7, 80, 2, 2, 1484, 1485, 7, 87, 2, 2, 1485, 1486, 7, 86, 2, 2, 1486, 1487, 7, 71, 2, 2, 1487, 274, 3, 2, 2, 2, 1488, 1489, 7, 79, 2, 2, 1489, 1490, 7, 81, 2, 2, 1490, 1491, 7, 80, 2, 2, 1491, 1492, 7, 86, 2, 2, 1492, 1493, 7, 74, 2, 2, 1493, 276, 3, 2, 2, 2, 1494, 1495, 7, 80, 2, 2, 1495, 1496, 7, 67, 2, 2, 1496, 1497, 7, 86, 2, 2, 1497, 1498, 7, 87, 2, 2, 1498, 1499, 7, 84, 2, 2, 1499, 1500, 7, 67, 2, 2, 1500, 1501, 7, 78, 2, 2, 1501, 278, 3, 2, 2, 2, 1502, 1503, 7, 80, 2, 2, 1503, 1504, 7, 71, 2, 2, 1504, 1505, 7, 90, 2, 2, 1505, 1506, 7, 86, 2, 2, 1506, 280, 3, 2, 2, 2, 1507, 1508, 7, 80, 2, 2, 1508, 1509, 7, 72, 2, 2, 1509, 1510, 7, 69, 2, 2, 1510, 282, 3, 2, 2, 2, 1511, 1512, 7, 80, 2, 2, 1512, 1513, 7, 72, 2, 2, 1513, 1514, 7, 70, 2, 2, 1514, 284, 3, 2, 2, 2, 1515, 1516, 7, 80, 2, 2, 1516, 1517, 7, 72, 2, 2, 1517, 1518, 7, 77, 2, 2, 1518, 1519, 7, 69, 2, 2, 1519, 286, 3, 2, 2, 2, 1520, 1521, 7, 80, 2, 2, 1521, 1522, 7, 72, 2, 2, 1522, 1523, 7, 77, 2, 2, 1523, 1524, 7, 70, 2, 2, 1524, 288, 3, 2, 2, 2, 1525, 1526, 7, 80, 2, 2, 1526, 1527, 7, 81, 2, 2, 1527, 290, 3, 2, 2, 2, 1528, 1529, 7, 80, 2, 2, 1529, 1530, 7, 81, 2, 2, 1530, 1531, 7, 80, 2, 2, 1531, 1532, 7, 71, 2, 2, 1532, 292, 3, 2, 2, 2, 1533, 1534, 7, 80, 2, 2, 1534, 1535, 7, 81, 2, 2, 1535, 1536, 7, 84, 2, 2, 1536, 1537, 7, 79, 2, 2, 1537, 1538, 7, 67, 2, 2, 1538, 1539, 7, 78, 2, 2, 1539, 1540, 7, 75, 2, 2, 1540, 1541, 7, 92, 2, 2, 1541, 1542, 7, 71, 2, 2, 1542, 294, 3, 2, 2, 2, 1543, 1544, 7, 80, 2, 2, 1544, 1545, 7, 81, 2, 2, 1545, 1546, 7, 86, 2, 2, 1546, 296, 3, 2, 2, 2, 1547, 1548, 7, 80, 2, 2, 1548, 1549, 7, 87, 2, 2, 1549, 1550, 7, 78, 2, 2, 1550, 1551, 7, 78, 2, 2, 1551, 298, 3, 2, 2, 2, 1552, 1553, 7, 80, 2, 2, 1553, 1554, 7, 87, 2, 2, 1554, 1555, 7, 78, 2, 2, 1555, 1556, 7, 78, 2, 2, 1556, 1557, 7, 75, 2, 2, 1557, 1558, 7, 72, 2, 2, 1558, 300, 3, 2, 2, 2, 1559, 1560, 7, 80, 2, 2, 1560, 1561, 7, 87, 2, 2, 1561, 1562, 7, 78, 2, 2, 1562, 1563, 7, 78, 2, 2, 1563, 1564, 7, 85, 2, 2, 1564, 302, 3, 2, 2, 2, 1565, 1566, 7, 81, 2, 2, 1566, 1567, 7, 72, 2, 2, 1567, 1568, 7, 72, 2, 2, 1568, 1569, 7, 85, 2, 2, 1569, 1570, 7, 71, 2, 2, 1570, 1571, 7, 86, 2, 2, 1571, 304, 3, 2, 2, 2, 1572, 1573, 7, 81, 2, 2, 1573, 1574, 7, 79, 2, 2, 1574, 1575, 7, 75, 2, 2, 1575, 1576, 7, 86, 2, 2, 1576, 306, 3, 2, 2, 2, 1577, 1578, 7, 81, 2, 2, 1578, 1579, 7, 80, 2, 2, 1579, 308, 3, 2, 2, 2, 1580, 1581, 7, 81, 2, 2, 1581, 1582, 7, 80, 2, 2, 1582, 1583, 7, 71, 2, 2, 1583, 310, 3, 2, 2, 2, 1584, 1585, 7, 81, 2, 2, 1585, 1586, 7, 80, 2, 2, 1586, 1587, 7, 78, 2, 2, 1587, 1588, 7, 91, 2, 2, 1588, 312, 3, 2, 2, 2, 1589, 1590, 7, 81, 2, 2, 1590, 1591, 7, 82, 2, 2, 1591, 1592, 7, 86, 2, 2, 1592, 1593, 7, 75, 2, 2, 1593, 1594, 7, 81, 2, 2, 1594, 1595, 7, 80, 2, 2, 1595, 314, 3, 2, 2, 2, 1596, 1597, 7, 81, 2, 2, 1597, 1598, 7, 84, 2, 2, 1598, 316, 3, 2, 2, 2, 1599, 1600, 7, 81, 2, 2, 1600, 1601, 7, 84, 2, 2, 1601, 1602, 7, 70, 2, 2, 1602, 1603, 7, 71, 2, 2, 1603, 1604, 7, 84, 2, 2, 1604, 318, 3, 2, 2, 2, 1605, 1606, 7, 81, 2, 2, 1606, 1607, 7, 84, 2, 2, 1607, 1608, 7, 70, 2, 2, 1608, 1609, 7, 75, 2, 2, 1609, 1610, 7, 80, 2, 2, 1610, 1611, 7, 67, 2, 2, 1611, 1612, 7, 78, 2, 2, 1612, 1613, 7, 75, 2, 2, 1613, 1614, 7, 86, 2, 2, 1614, 1615, 7, 91, 2, 2, 1615, 320, 3, 2, 2, 2, 1616, 1617, 7, 81, 2, 2, 1617, 1618, 7, 87, 2, 2, 1618, 1619, 7, 86, 2, 2, 1619, 1620, 7, 71, 2, 2, 1620, 1621, 7, 84, 2, 2, 1621, 322, 3, 2, 2, 2, 1622, 1623, 7, 81, 2, 2, 1623, 1624, 7, 87, 2, 2, 1624, 1625, 7, 86, 2, 2, 1625, 1626, 7, 82, 2, 2, 1626, 1627, 7, 87, 2, 2, 1627, 1628, 7, 86, 2, 2, 1628, 324, 3, 2, 2, 2, 1629, 1630, 7, 81, 2, 2, 1630, 1631, 7, 88, 2, 2, 1631, 1632, 7, 71, 2, 2, 1632, 1633, 7, 84, 2, 2, 1633, 326, 3, 2, 2, 2, 1634, 1635, 7, 82, 2, 2, 1635, 1636, 7, 67, 2, 2, 1636, 1637, 7, 84, 2, 2, 1637, 1638, 7, 86, 2, 2, 1638, 1639, 7, 75, 2, 2, 1639, 1640, 7, 86, 2, 2, 1640, 1641, 7, 75, 2, 2, 1641, 1642, 7, 81, 2, 2, 1642, 1643, 7, 80, 2, 2, 1643, 328, 3, 2, 2, 2, 1644, 1645, 7, 82, 2, 2, 1645, 1646, 7, 67, 2, 2, 1646, 1647, 7, 84, 2, 2, 1647, 1648, 7, 86, 2, 2, 1648, 1649, 7, 75, 2, 2, 1649, 1650, 7, 86, 2, 2, 1650, 1651, 7, 75, 2, 2, 1651, 1652, 7, 81, 2, 2, 1652, 1653, 7, 80, 2, 2, 1653, 1654, 7, 85, 2, 2, 1654, 330, 3, 2, 2, 2, 1655, 1656, 7, 82, 2, 2, 1656, 1657, 7, 67, 2, 2, 1657, 1658, 7, 85, 2, 2, 1658, 1659, 7, 86, 2, 2, 1659, 332, 3, 2, 2, 2, 1660, 1661, 7, 82, 2, 2, 1661, 1662, 7, 67, 2, 2, 1662, 1663, 7, 86, 2, 2, 1663, 1664, 7, 74, 2, 2, 1664, 334, 3, 2, 2, 2, 1665, 1666, 7, 82, 2, 2, 1666, 1667, 7, 67, 2, 2, 1667, 1668, 7, 86, 2, 2, 1668, 1669, 7, 86, 2, 2, 1669, 1670, 7, 71, 2, 2, 1670, 1671, 7, 84, 2, 2, 1671, 1672, 7, 80, 2, 2, 1672, 336, 3, 2, 2, 2, 1673, 1674, 7, 82, 2, 2, 1674, 1675, 7, 71, 2, 2, 1675, 1676, 7, 84, 2, 2, 1676, 338, 3, 2, 2, 2, 1677, 1678, 7, 82, 2, 2, 1678, 1679, 7, 71, 2, 2, 1679, 1680, 7, 84, 2, 2, 1680, 1681, 7, 79, 2, 2, 1681, 1682, 7, 87, 2, 2, 1682, 1683, 7, 86, 2, 2, 1683, 1684, 7, 71, 2, 2, 1684, 340, 3, 2, 2, 2, 1685, 1686, 7, 82, 2, 2, 1686, 1687, 7, 81, 2, 2, 1687, 1688, 7, 85, 2, 2, 1688, 1689, 7, 75, 2, 2, 1689, 1690, 7, 86, 2, 2, 1690, 1691, 7, 75, 2, 2, 1691, 1692, 7, 81, 2, 2, 1692, 1693, 7, 80, 2, 2, 1693, 342, 3, 2, 2, 2, 1694, 1695, 7, 82, 2, 2, 1695, 1696, 7, 84, 2, 2, 1696, 1697, 7, 71, 2, 2, 1697, 1698, 7, 69, 2, 2, 1698, 1699, 7, 71, 2, 2, 1699, 1700, 7, 70, 2, 2, 1700, 1701, 7, 75, 2, 2, 1701, 1702, 7, 80, 2, 2, 1702, 1703, 7, 73, 2, 2, 1703, 344, 3, 2, 2, 2, 1704, 1705, 7, 82, 2, 2, 1705, 1706, 7, 84, 2, 2, 1706, 1707, 7, 71, 2, 2, 1707, 1708, 7, 69, 2, 2, 1708, 1709, 7, 75, 2, 2, 1709, 1710, 7, 85, 2, 2, 1710, 1711, 7, 75, 2, 2, 1711, 1712, 7, 81, 2, 2, 1712, 1713, 7, 80, 2, 2, 1713, 346, 3, 2, 2, 2, 1714, 1715, 7, 82, 2, 2, 1715, 1716, 7, 84, 2, 2, 1716, 1717, 7, 71, 2, 2, 1717, 1718, 7, 82, 2, 2, 1718, 1719, 7, 67, 2, 2, 1719, 1720, 7, 84, 2, 2, 1720, 1721, 7, 71, 2, 2, 1721, 348, 3, 2, 2, 2, 1722, 1723, 7, 82, 2, 2, 1723, 1724, 7, 84, 2, 2, 1724, 1725, 7, 75, 2, 2, 1725, 1726, 7, 88, 2, 2, 1726, 1727, 7, 75, 2, 2, 1727, 1728, 7, 78, 2, 2, 1728, 1729, 7, 71, 2, 2, 1729, 1730, 7, 73, 2, 2, 1730, 1731, 7, 71, 2, 2, 1731, 1732, 7, 85, 2, 2, 1732, 350, 3, 2, 2, 2, 1733, 1734, 7, 82, 2, 2, 1734, 1735, 7, 84, 2, 2, 1735, 1736, 7, 81, 2, 2, 1736, 1737, 7, 82, 2, 2, 1737, 1738, 7, 71, 2, 2, 1738, 1739, 7, 84, 2, 2, 1739, 1740, 7, 86, 2, 2, 1740, 1741, 7, 75, 2, 2, 1741, 1742, 7, 71, 2, 2, 1742, 1743, 7, 85, 2, 2, 1743, 352, 3, 2, 2, 2, 1744, 1745, 7, 84, 2, 2, 1745, 1746, 7, 67, 2, 2, 1746, 1747, 7, 80, 2, 2, 1747, 1748, 7, 73, 2, 2, 1748, 1749, 7, 71, 2, 2, 1749, 354, 3, 2, 2, 2, 1750, 1751, 7, 84, 2, 2, 1751, 1752, 7, 71, 2, 2, 1752, 1753, 7, 67, 2, 2, 1753, 1754, 7, 70, 2, 2, 1754, 356, 3, 2, 2, 2, 1755, 1756, 7, 84, 2, 2, 1756, 1757, 7, 71, 2, 2, 1757, 1758, 7, 69, 2, 2, 1758, 1759, 7, 87, 2, 2, 1759, 1760, 7, 84, 2, 2, 1760, 1761, 7, 85, 2, 2, 1761, 1762, 7, 75, 2, 2, 1762, 1763, 7, 88, 2, 2, 1763, 1764, 7, 71, 2, 2, 1764, 358, 3, 2, 2, 2, 1765, 1766, 7, 84, 2, 2, 1766, 1767, 7, 71, 2, 2, 1767, 1768, 7, 72, 2, 2, 1768, 1769, 7, 84, 2, 2, 1769, 1770, 7, 71, 2, 2, 1770, 1771, 7, 85, 2, 2, 1771, 1772, 7, 74, 2, 2, 1772, 360, 3, 2, 2, 2, 1773, 1774, 7, 84, 2, 2, 1774, 1775, 7, 71, 2, 2, 1775, 1776, 7, 80, 2, 2, 1776, 1777, 7, 67, 2, 2, 1777, 1778, 7, 79, 2, 2, 1778, 1779, 7, 71, 2, 2, 1779, 362, 3, 2, 2, 2, 1780, 1781, 7, 84, 2, 2, 1781, 1782, 7, 71, 2, 2, 1782, 1783, 7, 82, 2, 2, 1783, 1784, 7, 71, 2, 2, 1784, 1785, 7, 67, 2, 2, 1785, 1786, 7, 86, 2, 2, 1786, 1787, 7, 67, 2, 2, 1787, 1788, 7, 68, 2, 2, 1788, 1789, 7, 78, 2, 2, 1789, 1790, 7, 71, 2, 2, 1790, 364, 3, 2, 2, 2, 1791, 1792, 7, 84, 2, 2, 1792, 1793, 7, 71, 2, 2, 1793, 1794, 7, 82, 2, 2, 1794, 1795, 7, 78, 2, 2, 1795, 1796, 7, 67, 2, 2, 1796, 1797, 7, 69, 2, 2, 1797, 1798, 7, 71, 2, 2, 1798, 366, 3, 2, 2, 2, 1799, 1800, 7, 84, 2, 2, 1800, 1801, 7, 71, 2, 2, 1801, 1802, 7, 85, 2, 2, 1802, 1803, 7, 71, 2, 2, 1803, 1804, 7, 86, 2, 2, 1804, 368, 3, 2, 2, 2, 1805, 1806, 7, 84, 2, 2, 1806, 1807, 7, 71, 2, 2, 1807, 1808, 7, 85, 2, 2, 1808, 1809, 7, 82, 2, 2, 1809, 1810, 7, 71, 2, 2, 1810, 1811, 7, 69, 2, 2, 1811, 1812, 7, 86, 2, 2, 1812, 370, 3, 2, 2, 2, 1813, 1814, 7, 84, 2, 2, 1814, 1815, 7, 71, 2, 2, 1815, 1816, 7, 85, 2, 2, 1816, 1817, 7, 86, 2, 2, 1817, 1818, 7, 84, 2, 2, 1818, 1819, 7, 75, 2, 2, 1819, 1820, 7, 69, 2, 2, 1820, 1821, 7, 86, 2, 2, 1821, 372, 3, 2, 2, 2, 1822, 1823, 7, 84, 2, 2, 1823, 1824, 7, 71, 2, 2, 1824, 1825, 7, 88, 2, 2, 1825, 1826, 7, 81, 2, 2, 1826, 1827, 7, 77, 2, 2, 1827, 1828, 7, 71, 2, 2, 1828, 374, 3, 2, 2, 2, 1829, 1830, 7, 84, 2, 2, 1830, 1831, 7, 75, 2, 2, 1831, 1832, 7, 73, 2, 2, 1832, 1833, 7, 74, 2, 2, 1833, 1834, 7, 86, 2, 2, 1834, 376, 3, 2, 2, 2, 1835, 1836, 7, 84, 2, 2, 1836, 1837, 7, 81, 2, 2, 1837, 1838, 7, 78, 2, 2, 1838, 1839, 7, 71, 2, 2, 1839, 378, 3, 2, 2, 2, 1840, 1841, 7, 84, 2, 2, 1841, 1842, 7, 81, 2, 2, 1842, 1843, 7, 78, 2, 2, 1843, 1844, 7, 71, 2, 2, 1844, 1845, 7, 85, 2, 2, 1845, 380, 3, 2, 2, 2, 1846, 1847, 7, 84, 2, 2, 1847, 1848, 7, 81, 2, 2, 1848, 1849, 7, 78, 2, 2, 1849, 1850, 7, 78, 2, 2, 1850, 1851, 7, 68, 2, 2, 1851, 1852, 7, 67, 2, 2, 1852, 1853, 7, 69, 2, 2, 1853, 1854, 7, 77, 2, 2, 1854, 382, 3, 2, 2, 2, 1855, 1856, 7, 84, 2, 2, 1856, 1857, 7, 81, 2, 2, 1857, 1858, 7, 78, 2, 2, 1858, 1859, 7, 78, 2, 2, 1859, 1860, 7, 87, 2, 2, 1860, 1861, 7, 82, 2, 2, 1861, 384, 3, 2, 2, 2, 1862, 1863, 7, 84, 2, 2, 1863, 1864, 7, 81, 2, 2, 1864, 1865, 7, 89, 2, 2, 1865, 386, 3, 2, 2, 2, 1866, 1867, 7, 84, 2, 2, 1867, 1868, 7, 81, 2, 2, 1868, 1869, 7, 89, 2, 2, 1869, 1870, 7, 85, 2, 2, 1870, 388, 3, 2, 2, 2, 1871, 1872, 7, 84, 2, 2, 1872, 1873, 7, 87, 2, 2, 1873, 1874, 7, 80, 2, 2, 1874, 1875, 7, 80, 2, 2, 1875, 1876, 7, 75, 2, 2, 1876, 1877, 7, 80, 2, 2, 1877, 1878, 7, 73, 2, 2, 1878, 390, 3, 2, 2, 2, 1879, 1880, 7, 85, 2, 2, 1880, 1881, 7, 69, 2, 2, 1881, 1882, 7, 74, 2, 2, 1882, 1883, 7, 71, 2, 2, 1883, 1884, 7, 79, 2, 2, 1884, 1885, 7, 67, 2, 2, 1885, 392, 3, 2, 2, 2, 1886, 1887, 7, 85, 2, 2, 1887, 1888, 7, 69, 2, 2, 1888, 1889, 7, 74, 2, 2, 1889, 1890, 7, 71, 2, 2, 1890, 1891, 7, 79, 2, 2, 1891, 1892, 7, 67, 2, 2, 1892, 1893, 7, 85, 2, 2, 1893, 394, 3, 2, 2, 2, 1894, 1895, 7, 85, 2, 2, 1895, 1896, 7, 71, 2, 2, 1896, 1897, 7, 69, 2, 2, 1897, 1898, 7, 81, 2, 2, 1898, 1899, 7, 80, 2, 2, 1899, 1900, 7, 70, 2, 2, 1900, 396, 3, 2, 2, 2, 1901, 1902, 7, 85, 2, 2, 1902, 1903, 7, 71, 2, 2, 1903, 1904, 7, 69, 2, 2, 1904, 1905, 7, 87, 2, 2, 1905, 1906, 7, 84, 2, 2, 1906, 1907, 7, 75, 2, 2, 1907, 1908, 7, 86, 2, 2, 1908, 1909, 7, 91, 2, 2, 1909, 398, 3, 2, 2, 2, 1910, 1911, 7, 85, 2, 2, 1911, 1912, 7, 71, 2, 2, 1912, 1913, 7, 71, 2, 2, 1913, 1914, 7, 77, 2, 2, 1914, 400, 3, 2, 2, 2, 1915, 1916, 7, 85, 2, 2, 1916, 1917, 7, 71, 2, 2, 1917, 1918, 7, 78, 2, 2, 1918, 1919, 7, 71, 2, 2, 1919, 1920, 7, 69, 2, 2, 1920, 1921, 7, 86, 2, 2, 1921, 402, 3, 2, 2, 2, 1922, 1923, 7, 85, 2, 2, 1923, 1924, 7, 71, 2, 2, 1924, 1925, 7, 84, 2, 2, 1925, 1926, 7, 75, 2, 2, 1926, 1927, 7, 67, 2, 2, 1927, 1928, 7, 78, 2, 2, 1928, 1929, 7, 75, 2, 2, 1929, 1930, 7, 92, 2, 2, 1930, 1931, 7, 67, 2, 2, 1931, 1932, 7, 68, 2, 2, 1932, 1933, 7, 78, 2, 2, 1933, 1934, 7, 71, 2, 2, 1934, 404, 3, 2, 2, 2, 1935, 1936, 7, 85, 2, 2, 1936, 1937, 7, 71, 2, 2, 1937, 1938, 7, 85, 2, 2, 1938, 1939, 7, 85, 2, 2, 1939, 1940, 7, 75, 2, 2, 1940, 1941, 7, 81, 2, 2, 1941, 1942, 7, 80, 2, 2, 1942, 406, 3, 2, 2, 2, 1943, 1944, 7, 85, 2, 2, 1944, 1945, 7, 71, 2, 2, 1945, 1946, 7, 86, 2, 2, 1946, 408, 3, 2, 2, 2, 1947, 1948, 7, 85, 2, 2, 1948, 1949, 7, 71, 2, 2, 1949, 1950, 7, 86, 2, 2, 1950, 1951, 7, 85, 2, 2, 1951, 410, 3, 2, 2, 2, 1952, 1953, 7, 85, 2, 2, 1953, 1954, 7, 74, 2, 2, 1954, 1955, 7, 81, 2, 2, 1955, 1956, 7, 89, 2, 2, 1956, 412, 3, 2, 2, 2, 1957, 1958, 7, 85, 2, 2, 1958, 1959, 7, 81, 2, 2, 1959, 1960, 7, 79, 2, 2, 1960, 1961, 7, 71, 2, 2, 1961, 414, 3, 2, 2, 2, 1962, 1963, 7, 85, 2, 2, 1963, 1964, 7, 86, 2, 2, 1964, 1965, 7, 67, 2, 2, 1965, 1966, 7, 84, 2, 2, 1966, 1967, 7, 86, 2, 2, 1967, 416, 3, 2, 2, 2, 1968, 1969, 7, 85, 2, 2, 1969, 1970, 7, 86, 2, 2, 1970, 1971, 7, 67, 2, 2, 1971, 1972, 7, 86, 2, 2, 1972, 1973, 7, 85, 2, 2, 1973, 418, 3, 2, 2, 2, 1974, 1975, 7, 85, 2, 2, 1975, 1976, 7, 87, 2, 2, 1976, 1977, 7, 68, 2, 2, 1977, 1978, 7, 85, 2, 2, 1978, 1979, 7, 71, 2, 2, 1979, 1980, 7, 86, 2, 2, 1980, 420, 3, 2, 2, 2, 1981, 1982, 7, 85, 2, 2, 1982, 1983, 7, 87, 2, 2, 1983, 1984, 7, 68, 2, 2, 1984, 1985, 7, 85, 2, 2, 1985, 1986, 7, 86, 2, 2, 1986, 1987, 7, 84, 2, 2, 1987, 1988, 7, 75, 2, 2, 1988, 1989, 7, 80, 2, 2, 1989, 1990, 7, 73, 2, 2, 1990, 422, 3, 2, 2, 2, 1991, 1992, 7, 85, 2, 2, 1992, 1993, 7, 91, 2, 2, 1993, 1994, 7, 85, 2, 2, 1994, 1995, 7, 86, 2, 2, 1995, 1996, 7, 71, 2, 2, 1996, 1997, 7, 79, 2, 2, 1997, 424, 3, 2, 2, 2, 1998, 1999, 7, 86, 2, 2, 1999, 2000, 7, 67, 2, 2, 2000, 2001, 7, 68, 2, 2, 2001, 2002, 7, 78, 2, 2, 2002, 2003, 7, 71, 2, 2, 2003, 426, 3, 2, 2, 2, 2004, 2005, 7, 86, 2, 2, 2005, 2006, 7, 67, 2, 2, 2006, 2007, 7, 68, 2, 2, 2007, 2008, 7, 78, 2, 2, 2008, 2009, 7, 71, 2, 2, 2009, 2010, 7, 85, 2, 2, 2010, 428, 3, 2, 2, 2, 2011, 2012, 7, 86, 2, 2, 2012, 2013, 7, 67, 2, 2, 2013, 2014, 7, 68, 2, 2, 2014, 2015, 7, 78, 2, 2, 2015, 2016, 7, 71, 2, 2, 2016, 2017, 7, 85, 2, 2, 2017, 2018, 7, 67, 2, 2, 2018, 2019, 7, 79, 2, 2, 2019, 2020, 7, 82, 2, 2, 2020, 2021, 7, 78, 2, 2, 2021, 2022, 7, 71, 2, 2, 2022, 430, 3, 2, 2, 2, 2023, 2024, 7, 86, 2, 2, 2024, 2025, 7, 71, 2, 2, 2025, 2026, 7, 90, 2, 2, 2026, 2027, 7, 86, 2, 2, 2027, 432, 3, 2, 2, 2, 2028, 2029, 7, 86, 2, 2, 2029, 2030, 7, 74, 2, 2, 2030, 2031, 7, 71, 2, 2, 2031, 2032, 7, 80, 2, 2, 2032, 434, 3, 2, 2, 2, 2033, 2034, 7, 86, 2, 2, 2034, 2035, 7, 75, 2, 2, 2035, 2036, 7, 71, 2, 2, 2036, 2037, 7, 85, 2, 2, 2037, 436, 3, 2, 2, 2, 2038, 2039, 7, 86, 2, 2, 2039, 2040, 7, 75, 2, 2, 2040, 2041, 7, 79, 2, 2, 2041, 2042, 7, 71, 2, 2, 2042, 438, 3, 2, 2, 2, 2043, 2044, 7, 86, 2, 2, 2044, 2045, 7, 75, 2, 2, 2045, 2046, 7, 79, 2, 2, 2046, 2047, 7, 71, 2, 2, 2047, 2048, 7, 85, 2, 2, 2048, 2049, 7, 86, 2, 2, 2049, 2050, 7, 67, 2, 2, 2050, 2051, 7, 79, 2, 2, 2051, 2052, 7, 82, 2, 2, 2052, 440, 3, 2, 2, 2, 2053, 2054, 7, 86, 2, 2, 2054, 2055, 7, 81, 2, 2, 2055, 442, 3, 2, 2, 2, 2056, 2057, 7, 86, 2, 2, 2057, 2058, 7, 84, 2, 2, 2058, 2059, 7, 67, 2, 2, 2059, 2060, 7, 80, 2, 2, 2060, 2061, 7, 85, 2, 2, 2061, 2062, 7, 67, 2, 2, 2062, 2063, 7, 69, 2, 2, 2063, 2064, 7, 86, 2, 2, 2064, 2065, 7, 75, 2, 2, 2065, 2066, 7, 81, 2, 2, 2066, 2067, 7, 80, 2, 2, 2067, 444, 3, 2, 2, 2, 2068, 2069, 7, 86, 2, 2, 2069, 2070, 7, 84, 2, 2, 2070, 2071, 7, 87, 2, 2, 2071, 2072, 7, 80, 2, 2, 2072, 2073, 7, 69, 2, 2, 2073, 2074, 7, 67, 2, 2, 2074, 2075, 7, 86, 2, 2, 2075, 2076, 7, 71, 2, 2, 2076, 446, 3, 2, 2, 2, 2077, 2078, 7, 86, 2, 2, 2078, 2079, 7, 84, 2, 2, 2079, 2080, 7, 87, 2, 2, 2080, 2081, 7, 71, 2, 2, 2081, 448, 3, 2, 2, 2, 2082, 2083, 7, 86, 2, 2, 2083, 2084, 7, 84, 2, 2, 2084, 2085, 7, 91, 2, 2, 2085, 2086, 7, 97, 2, 2, 2086, 2087, 7, 69, 2, 2, 2087, 2088, 7, 67, 2, 2, 2088, 2089, 7, 85, 2, 2, 2089, 2090, 7, 86, 2, 2, 2090, 450, 3, 2, 2, 2, 2091, 2092, 7, 86, 2, 2, 2092, 2093, 7, 91, 2, 2, 2093, 2094, 7, 82, 2, 2, 2094, 2095, 7, 71, 2, 2, 2095, 452, 3, 2, 2, 2, 2096, 2097, 7, 87, 2, 2, 2097, 2098, 7, 71, 2, 2, 2098, 2099, 7, 85, 2, 2, 2099, 2100, 7, 69, 2, 2, 2100, 2101, 7, 67, 2, 2, 2101, 2102, 7, 82, 2, 2, 2102, 2103, 7, 71, 2, 2, 2103, 454, 3, 2, 2, 2, 2104, 2105, 7, 87, 2, 2, 2105, 2106, 7, 80, 2, 2, 2106, 2107, 7, 68, 2, 2, 2107, 2108, 7, 81, 2, 2, 2108, 2109, 7, 87, 2, 2, 2109, 2110, 7, 80, 2, 2, 2110, 2111, 7, 70, 2, 2, 2111, 2112, 7, 71, 2, 2, 2112, 2113, 7, 70, 2, 2, 2113, 456, 3, 2, 2, 2, 2114, 2115, 7, 87, 2, 2, 2115, 2116, 7, 80, 2, 2, 2116, 2117, 7, 69, 2, 2, 2117, 2118, 7, 81, 2, 2, 2118, 2119, 7, 79, 2, 2, 2119, 2120, 7, 79, 2, 2, 2120, 2121, 7, 75, 2, 2, 2121, 2122, 7, 86, 2, 2, 2122, 2123, 7, 86, 2, 2, 2123, 2124, 7, 71, 2, 2, 2124, 2125, 7, 70, 2, 2, 2125, 458, 3, 2, 2, 2, 2126, 2127, 7, 87, 2, 2, 2127, 2128, 7, 80, 2, 2, 2128, 2129, 7, 75, 2, 2, 2129, 2130, 7, 81, 2, 2, 2130, 2131, 7, 80, 2, 2, 2131, 460, 3, 2, 2, 2, 2132, 2133, 7, 87, 2, 2, 2133, 2134, 7, 80, 2, 2, 2134, 2135, 7, 79, 2, 2, 2135, 2136, 7, 67, 2, 2, 2136, 2137, 7, 86, 2, 2, 2137, 2138, 7, 69, 2, 2, 2138, 2139, 7, 74, 2, 2, 2139, 2140, 7, 71, 2, 2, 2140, 2141, 7, 70, 2, 2, 2141, 462, 3, 2, 2, 2, 2142, 2143, 7, 87, 2, 2, 2143, 2144, 7, 80, 2, 2, 2144, 2145, 7, 80, 2, 2, 2145, 2146, 7, 71, 2, 2, 2146, 2147, 7, 85, 2, 2, 2147, 2148, 7, 86, 2, 2, 2148, 464, 3, 2, 2, 2, 2149, 2150, 7, 87, 2, 2, 2150, 2151, 7, 82, 2, 2, 2151, 2152, 7, 70, 2, 2, 2152, 2153, 7, 67, 2, 2, 2153, 2154, 7, 86, 2, 2, 2154, 2155, 7, 71, 2, 2, 2155, 466, 3, 2, 2, 2, 2156, 2157, 7, 87, 2, 2, 2157, 2158, 7, 85, 2, 2, 2158, 2159, 7, 71, 2, 2, 2159, 468, 3, 2, 2, 2, 2160, 2161, 7, 87, 2, 2, 2161, 2162, 7, 85, 2, 2, 2162, 2163, 7, 71, 2, 2, 2163, 2164, 7, 84, 2, 2, 2164, 470, 3, 2, 2, 2, 2165, 2166, 7, 87, 2, 2, 2166, 2167, 7, 85, 2, 2, 2167, 2168, 7, 75, 2, 2, 2168, 2169, 7, 80, 2, 2, 2169, 2170, 7, 73, 2, 2, 2170, 472, 3, 2, 2, 2, 2171, 2172, 7, 88, 2, 2, 2172, 2173, 7, 67, 2, 2, 2173, 2174, 7, 78, 2, 2, 2174, 2175, 7, 75, 2, 2, 2175, 2176, 7, 70, 2, 2, 2176, 2177, 7, 67, 2, 2, 2177, 2178, 7, 86, 2, 2, 2178, 2179, 7, 71, 2, 2, 2179, 474, 3, 2, 2, 2, 2180, 2181, 7, 88, 2, 2, 2181, 2182, 7, 67, 2, 2, 2182, 2183, 7, 78, 2, 2, 2183, 2184, 7, 87, 2, 2, 2184, 2185, 7, 71, 2, 2, 2185, 2186, 7, 85, 2, 2, 2186, 476, 3, 2, 2, 2, 2187, 2188, 7, 88, 2, 2, 2188, 2189, 7, 71, 2, 2, 2189, 2190, 7, 84, 2, 2, 2190, 2191, 7, 68, 2, 2, 2191, 2192, 7, 81, 2, 2, 2192, 2193, 7, 85, 2, 2, 2193, 2194, 7, 71, 2, 2, 2194, 478, 3, 2, 2, 2, 2195, 2196, 7, 88, 2, 2, 2196, 2197, 7, 75, 2, 2, 2197, 2198, 7, 71, 2, 2, 2198, 2199, 7, 89, 2, 2, 2199, 480, 3, 2, 2, 2, 2200, 2201, 7, 89, 2, 2, 2201, 2202, 7, 74, 2, 2, 2202, 2203, 7, 71, 2, 2, 2203, 2204, 7, 80, 2, 2, 2204, 482, 3, 2, 2, 2, 2205, 2206, 7, 89, 2, 2, 2206, 2207, 7, 74, 2, 2, 2207, 2208, 7, 71, 2, 2, 2208, 2209, 7, 84, 2, 2, 2209, 2210, 7, 71, 2, 2, 2210, 484, 3, 2, 2, 2, 2211, 2212, 7, 89, 2, 2, 2212, 2213, 7, 75, 2, 2, 2213, 2214, 7, 80, 2, 2, 2214, 2215, 7, 70, 2, 2, 2215, 2216, 7, 81, 2, 2, 2216, 2217, 7, 89, 2, 2, 2217, 486, 3, 2, 2, 2, 2218, 2219, 7, 89, 2, 2, 2219, 2220, 7, 75, 2, 2, 2220, 2221, 7, 86, 2, 2, 2221, 2222, 7, 74, 2, 2, 2222, 488, 3, 2, 2, 2, 2223, 2224, 7, 89, 2, 2, 2224, 2225, 7, 75, 2, 2, 2225, 2226, 7, 86, 2, 2, 2226, 2227, 7, 74, 2, 2, 2227, 2228, 7, 81, 2, 2, 2228, 2229, 7, 87, 2, 2, 2229, 2230, 7, 86, 2, 2, 2230, 490, 3, 2, 2, 2, 2231, 2232, 7, 89, 2, 2, 2232, 2233, 7, 81, 2, 2, 2233, 2234, 7, 84, 2, 2, 2234, 2235, 7, 77, 2, 2, 2235, 492, 3, 2, 2, 2, 2236, 2237, 7, 89, 2, 2, 2237, 2238, 7, 84, 2, 2, 2238, 2239, 7, 75, 2, 2, 2239, 2240, 7, 86, 2, 2, 2240, 2241, 7, 71, 2, 2, 2241, 494, 3, 2, 2, 2, 2242, 2243, 7, 91, 2, 2, 2243, 2244, 7, 71, 2, 2, 2244, 2245, 7, 67, 2, 2, 2245, 2246, 7, 84, 2, 2, 2246, 496, 3, 2, 2, 2, 2247, 2248, 7, 92, 2, 2, 2248, 2249, 7, 81, 2, 2, 2249, 2250, 7, 80, 2, 2, 2250, 2251, 7, 71, 2, 2, 2251, 498, 3, 2, 2, 2, 2252, 2253, 7, 63, 2, 2, 2253, 500, 3, 2, 2, 2, 2254, 2255, 7, 62, 2, 2, 2255, 2259, 7, 64, 2, 2, 2256, 2257, 7, 35, 2, 2, 2257, 2259, 7, 63, 2, 2, 2258, 2254, 3, 2, 2, 2, 2258, 2256, 3, 2, 2, 2, 2259, 502, 3, 2, 2, 2, 2260, 2261, 7, 62, 2, 2, 2261, 504, 3, 2, 2, 2, 2262, 2263, 7, 62, 2, 2, 2263, 2264, 7, 63, 2, 2, 2264, 506, 3, 2, 2, 2, 2265, 2266, 7, 64, 2, 2, 2266, 508, 3, 2, 2, 2, 2267, 2268, 7, 64, 2, 2, 2268, 2269, 7, 63, 2, 2, 2269, 510, 3, 2, 2, 2, 2270, 2271, 7, 45, 2, 2, 2271, 512, 3, 2, 2, 2, 2272, 2273, 7, 47, 2, 2, 2273, 514, 3, 2, 2, 2, 2274, 2275, 7, 44, 2, 2, 2275, 516, 3, 2, 2, 2, 2276, 2277, 7, 49, 2, 2, 2277, 518, 3, 2, 2, 2, 2278, 2279, 7, 39, 2, 2, 2279, 520, 3, 2, 2, 2, 2280, 2281, 7, 126, 2, 2, 2281, 2282, 7, 126, 2, 2, 2282, 522, 3, 2, 2, 2, 2283, 2284, 7, 65, 2, 2, 2284, 524, 3, 2, 2, 2, 2285, 2291, 7, 41, 2, 2, 2286, 2290, 10, 2, 2, 2, 2287, 2288, 7, 41, 2, 2, 2288, 2290, 7, 41, 2, 2, 2289, 2286, 3, 2, 2, 2, 2289, 2287, 3, 2, 2, 2, 2290, 2293, 3, 2, 2, 2, 2291, 2289, 3, 2, 2, 2, 2291, 2292, 3, 2, 2, 2, 2292, 2294, 3, 2, 2, 2, 2293, 2291, 3, 2, 2, 2, 2294, 2295, 7, 41, 2, 2, 2295, 526, 3, 2, 2, 2, 2296, 2297, 7, 87, 2, 2, 2297, 2298, 7, 40, 2, 2, 2298, 2299, 7, 41, 2, 2, 2299, 2305, 3, 2, 2, 2, 2300, 2304, 10, 2, 2, 2, 2301, 2302, 7, 41, 2, 2, 2302, 2304, 7, 41, 2, 2, 2303, 2300, 3, 2, 2, 2, 2303, 2301, 3, 2, 2, 2, 2304, 2307, 3, 2, 2, 2, 2305, 2303, 3, 2, 2, 2, 2305, 2306, 3, 2, 2, 2, 2306, 2308, 3, 2, 2, 2, 2307, 2305, 3, 2, 2, 2, 2308, 2309, 7, 41, 2, 2, 2309, 528, 3, 2, 2, 2, 2310, 2311, 7, 90, 2, 2, 2311, 2312, 7, 41, 2, 2, 2312, 2316, 3, 2, 2, 2, 2313, 2315, 10, 2, 2, 2, 2314, 2313, 3, 2, 2, 2, 2315, 2318, 3, 2, 2, 2, 2316, 2314, 3, 2, 2, 2, 2316, 2317, 3, 2, 2, 2, 2317, 2319, 3, 2, 2, 2, 2318, 2316, 3, 2, 2, 2, 2319, 2320, 7, 41, 2, 2, 2320, 530, 3, 2, 2, 2, 2321, 2323, 5, 549, 275, 2, 2322, 2321, 3, 2, 2, 2, 2323, 2324, 3, 2, 2, 2, 2324, 2322, 3, 2, 2, 2, 2324, 2325, 3, 2, 2, 2, 2325, 532, 3, 2, 2, 2, 2326, 2328, 5, 549, 275, 2, 2327, 2326, 3, 2, 2, 2, 2328, 2329, 3, 2, 2, 2, 2329, 2327, 3, 2, 2, 2, 2329, 2330, 3, 2, 2, 2, 2330, 2331, 3, 2, 2, 2, 2331, 2335, 7, 48, 2, 2, 2332, 2334, 5, 549, 275, 2, 2333, 2332, 3, 2, 2, 2, 2334, 2337, 3, 2, 2, 2, 2335, 2333, 3, 2, 2, 2, 2335, 2336, 3, 2, 2, 2, 2336, 2345, 3, 2, 2, 2, 2337, 2335, 3, 2, 2, 2, 2338, 2340, 7, 48, 2, 2, 2339, 2341, 5, 549, 275, 2, 2340, 2339, 3, 2, 2, 2, 2341, 2342, 3, 2, 2, 2, 2342, 2340, 3, 2, 2, 2, 2342, 2343, 3, 2, 2, 2, 2343, 2345, 3, 2, 2, 2, 2344, 2327, 3, 2, 2, 2, 2344, 2338, 3, 2, 2, 2, 2345, 534, 3, 2, 2, 2, 2346, 2348, 5, 549, 275, 2, 2347, 2346, 3, 2, 2, 2, 2348, 2349, 3, 2, 2, 2, 2349, 2347, 3, 2, 2, 2, 2349, 2350, 3, 2, 2, 2, 2350, 2358, 3, 2, 2, 2, 2351, 2355, 7, 48, 2, 2, 2352, 2354, 5, 549, 275, 2, 2353, 2352, 3, 2, 2, 2, 2354, 2357, 3, 2, 2, 2, 2355, 2353, 3, 2, 2, 2, 2355, 2356, 3, 2, 2, 2, 2356, 2359, 3, 2, 2, 2, 2357, 2355, 3, 2, 2, 2, 2358, 2351, 3, 2, 2, 2, 2358, 2359, 3, 2, 2, 2, 2359, 2360, 3, 2, 2, 2, 2360, 2361, 5, 547, 274, 2, 2361, 2371, 3, 2, 2, 2, 2362, 2364, 7, 48, 2, 2, 2363, 2365, 5, 549, 275, 2, 2364, 2363, 3, 2, 2, 2, 2365, 2366, 3, 2, 2, 2, 2366, 2364, 3, 2, 2, 2, 2366, 2367, 3, 2, 2, 2, 2367, 2368, 3, 2, 2, 2, 2368, 2369, 5, 547, 274, 2, 2369, 2371, 3, 2, 2, 2, 2370, 2347, 3, 2, 2, 2, 2370, 2362, 3, 2, 2, 2, 2371, 536, 3, 2, 2, 2, 2372, 2375, 5, 551, 276, 2, 2373, 2375, 7, 97, 2, 2, 2374, 2372, 3, 2, 2, 2, 2374, 2373, 3, 2, 2, 2, 2375, 2381, 3, 2, 2, 2, 2376, 2380, 5, 551, 276, 2, 2377, 2380, 5, 549, 275, 2, 2378, 2380, 7, 97, 2, 2, 2379, 2376, 3, 2, 2, 2, 2379, 2377, 3, 2, 2, 2, 2379, 2378, 3, 2, 2, 2, 2380, 2383, 3, 2, 2, 2, 2381, 2379, 3, 2, 2, 2, 2381, 2382, 3, 2, 2, 2, 2382, 538, 3, 2, 2, 2, 2383, 2381, 3, 2, 2, 2, 2384, 2388, 5, 549, 275, 2, 2385, 2389, 5, 551, 276, 2, 2386, 2389, 5, 549, 275, 2, 2387, 2389, 7, 97, 2, 2, 2388, 2385, 3, 2, 2, 2, 2388, 2386, 3, 2, 2, 2, 2388, 2387, 3, 2, 2, 2, 2389, 2390, 3, 2, 2, 2, 2390, 2388, 3, 2, 2, 2, 2390, 2391, 3, 2, 2, 2, 2391, 540, 3, 2, 2, 2, 2392, 2398, 7, 36, 2, 2, 2393, 2397, 10, 3, 2, 2, 2394, 2395, 7, 36, 2, 2, 2395, 2397, 7, 36, 2, 2, 2396, 2393, 3, 2, 2, 2, 2396, 2394, 3, 2, 2, 2, 2397, 2400, 3, 2, 2, 2, 2398, 2396, 3, 2, 2, 2, 2398, 2399, 3, 2, 2, 2, 2399, 2401, 3, 2, 2, 2, 2400, 2398, 3, 2, 2, 2, 2401, 2402, 7, 36, 2, 2, 2402, 542, 3, 2, 2, 2, 2403, 2409, 7, 98, 2, 2, 2404, 2408, 10, 4, 2, 2, 2405, 2406, 7, 98, 2, 2, 2406, 2408, 7, 98, 2, 2, 2407, 2404, 3, 2, 2, 2, 2407, 2405, 3, 2, 2, 2, 2408, 2411, 3, 2, 2, 2, 2409, 2407, 3, 2, 2, 2, 2409, 2410, 3, 2, 2, 2, 2410, 2412, 3, 2, 2, 2, 2411, 2409, 3, 2, 2, 2, 2412, 2413, 7, 98, 2, 2, 2413, 544, 3, 2, 2, 2, 2414, 2415, 7, 61, 2, 2, 2415, 546, 3, 2, 2, 2, 2416, 2418, 7, 71, 2, 2, 2417, 2419, 9, 5, 2, 2, 2418, 2417, 3, 2, 2, 2, 2418, 2419, 3, 2, 2, 2, 2419, 2421, 3, 2, 2, 2, 2420, 2422, 5, 549, 275, 2, 2421, 2420, 3, 2, 2, 2, 2422, 2423, 3, 2, 2, 2, 2423, 2421, 3, 2, 2, 2, 2423, 2424, 3, 2, 2, 2, 2424, 548, 3, 2, 2, 2, 2425, 2426, 9, 6, 2, 2, 2426, 550, 3, 2, 2, 2, 2427, 2428, 9, 7, 2, 2, 2428, 552, 3, 2, 2, 2, 2429, 2430, 7, 47, 2, 2, 2430, 2431, 7, 47, 2, 2, 2431, 2435, 3, 2, 2, 2, 2432, 2434, 10, 8, 2, 2, 2433, 2432, 3, 2, 2, 2, 2434, 2437, 3, 2, 2, 2, 2435, 2433, 3, 2, 2, 2, 2435, 2436, 3, 2, 2, 2, 2436, 2439, 3, 2, 2, 2, 2437, 2435, 3, 2, 2, 2, 2438, 2440, 7, 15, 2, 2, 2439, 2438, 3, 2, 2, 2, 2439, 2440, 3, 2, 2, 2, 2440, 2442, 3, 2, 2, 2, 2441, 2443, 7, 12, 2, 2, 2442, 2441, 3, 2, 2, 2, 2442, 2443, 3, 2, 2, 2, 2443, 2444, 3, 2, 2, 2, 2444, 2445, 8, 277, 2, 2, 2445, 554, 3, 2, 2, 2, 2446, 2447, 7, 49, 2, 2, 2447, 2448, 7, 44, 2, 2, 2448, 2452, 3, 2, 2, 2, 2449, 2451, 11, 2, 2, 2, 2450, 2449, 3, 2, 2, 2, 2451, 2454, 3, 2, 2, 2, 2452, 2453, 3, 2, 2, 2, 2452, 2450, 3, 2, 2, 2, 2453, 2455, 3, 2, 2, 2, 2454, 2452, 3, 2, 2, 2, 2455, 2456, 7, 44, 2, 2, 2456, 2457, 7, 49, 2, 2, 2457, 2458, 3, 2, 2, 2, 2458, 2459, 8, 278, 2, 2, 2459, 556, 3, 2, 2, 2, 2460, 2462, 9, 9, 2, 2, 2461, 2460, 3, 2, 2, 2, 2462, 2463, 3, 2, 2, 2, 2463, 2461, 3, 2, 2, 2, 2463, 2464, 3, 2, 2, 2, 2464, 2465, 3, 2, 2, 2, 2465, 2466, 8, 279, 2, 2, 2466, 558, 3, 2, 2, 2, 2467, 2468, 11, 2, 2, 2, 2468, 560, 3, 2, 2, 2, 35, 2, 2258, 2289, 2291, 2303, 2305, 2316, 2324, 2329, 2335, 2342, 2344, 2349, 2355, 2358, 2366, 2370, 2374, 2379, 2381, 2388, 2390, 2396, 2398, 2407, 2409, 2418, 2423, 2435, 2439, 2442, 2452, 2463, 3, 2, 3, 2] \ No newline at end of file diff --git a/src/lib/trinosql/TrinoSqlLexer.tokens b/src/lib/trinosql/TrinoSqlLexer.tokens index 709bdcd..5cdf889 100644 --- a/src/lib/trinosql/TrinoSqlLexer.tokens +++ b/src/lib/trinosql/TrinoSqlLexer.tokens @@ -14,238 +14,238 @@ T__12=13 T__13=14 T__14=15 T__15=16 -ADD=17 -ADMIN=18 -AFTER=19 -ALL=20 -ALTER=21 -ANALYZE=22 -AND=23 -ANY=24 -ARRAY=25 -AS=26 -ASC=27 -AT=28 -AUTHORIZATION=29 -BERNOULLI=30 -BETWEEN=31 -BY=32 -CALL=33 -CASCADE=34 -CASE=35 -CAST=36 -CATALOGS=37 -COLUMN=38 -COLUMNS=39 -COMMENT=40 -COMMIT=41 -COMMITTED=42 -CONSTRAINT=43 -CREATE=44 -CROSS=45 -CUBE=46 -CURRENT=47 -CURRENT_CATALOG=48 -CURRENT_DATE=49 -CURRENT_PATH=50 -CURRENT_ROLE=51 -CURRENT_SCHEMA=52 -CURRENT_TIME=53 -CURRENT_TIMESTAMP=54 -CURRENT_USER=55 -DATA=56 -DATE=57 -DAY=58 -DEFAULT=59 -DEALLOCATE=60 -DEFINER=61 -DELETE=62 -DESC=63 -DESCRIBE=64 -DEFINE=65 -DISTINCT=66 -DISTRIBUTED=67 -DOUBLE=68 -DROP=69 -ELSE=70 -EMPTY=71 -END=72 -ESCAPE=73 -EXCEPT=74 -EXCLUDING=75 -EXECUTE=76 -EXISTS=77 -EXPLAIN=78 -EXTRACT=79 -FALSE=80 -FETCH=81 -FILTER=82 -FINAL=83 -FIRST=84 -FOLLOWING=85 -FOR=86 -FORMAT=87 -FROM=88 -FULL=89 -FUNCTIONS=90 -GRANT=91 -GRANTED=92 -GRANTS=93 -DENY=94 -GRAPHVIZ=95 -GROUP=96 -GROUPING=97 -GROUPS=98 -HAVING=99 -HOUR=100 -IF=101 -IGNORE=102 -IN=103 -INCLUDING=104 -INITIAL=105 -INNER=106 -INPUT=107 -INSERT=108 -INTERSECT=109 -INTERVAL=110 -INTO=111 -INVOKER=112 -IO=113 -IS=114 -ISOLATION=115 -JOIN=116 -JSON=117 -LAST=118 -LATERAL=119 -LEFT=120 -LEVEL=121 -LIKE=122 -LIMIT=123 -LOCAL=124 -LOCALTIME=125 -LOCALTIMESTAMP=126 -LOGICAL=127 -MAP=128 -MATCH=129 -MATCHED=130 -MATCHES=131 -MATCH_RECOGNIZE=132 -MATERIALIZED=133 -MEASURES=134 -MERGE=135 -MINUTE=136 -MONTH=137 -NATURAL=138 -NEXT=139 -NFC=140 -NFD=141 -NFKC=142 -NFKD=143 -NO=144 -NONE=145 -NORMALIZE=146 -NOT=147 -NULL=148 -NULLIF=149 -NULLS=150 -OFFSET=151 -OMIT=152 -ON=153 -ONE=154 -ONLY=155 -OPTION=156 -OR=157 -ORDER=158 -ORDINALITY=159 -OUTER=160 -OUTPUT=161 -OVER=162 -PARTITION=163 -PARTITIONS=164 -PAST=165 -PATH=166 -PATTERN=167 -PER=168 -PERMUTE=169 -POSITION=170 -PRECEDING=171 -PRECISION=172 -PREPARE=173 -PRIVILEGES=174 -PROPERTIES=175 -RANGE=176 -READ=177 -RECURSIVE=178 -REFRESH=179 -RENAME=180 -REPEATABLE=181 -REPLACE=182 -RESET=183 -RESPECT=184 -RESTRICT=185 -REVOKE=186 -RIGHT=187 -ROLE=188 -ROLES=189 -ROLLBACK=190 -ROLLUP=191 -ROW=192 -ROWS=193 -RUNNING=194 -SCHEMA=195 -SCHEMAS=196 -SECOND=197 -SECURITY=198 -SEEK=199 -SELECT=200 -SERIALIZABLE=201 -SESSION=202 -SET=203 -SETS=204 -SHOW=205 -SOME=206 -START=207 -STATS=208 -SUBSET=209 -SUBSTRING=210 -SYSTEM=211 -TABLE=212 -TABLES=213 -TABLESAMPLE=214 -TEXT=215 -THEN=216 -TIES=217 -TIME=218 -TIMESTAMP=219 -TO=220 -TRANSACTION=221 -TRUNCATE=222 -TRUE=223 -TRY_CAST=224 -TYPE=225 -UESCAPE=226 -UNBOUNDED=227 -UNCOMMITTED=228 -UNION=229 -UNMATCHED=230 -UNNEST=231 -UPDATE=232 -USE=233 -USER=234 -USING=235 -VALIDATE=236 -VALUES=237 -VERBOSE=238 -VIEW=239 -WHEN=240 -WHERE=241 -WINDOW=242 -WITH=243 -WITHOUT=244 -WORK=245 -WRITE=246 -YEAR=247 -ZONE=248 +KW_ADD=17 +KW_ADMIN=18 +KW_AFTER=19 +KW_ALL=20 +KW_ALTER=21 +KW_ANALYZE=22 +KW_AND=23 +KW_ANY=24 +KW_ARRAY=25 +KW_AS=26 +KW_ASC=27 +KW_AT=28 +KW_AUTHORIZATION=29 +KW_BERNOULLI=30 +KW_BETWEEN=31 +KW_BY=32 +KW_CALL=33 +KW_CASCADE=34 +KW_CASE=35 +KW_CAST=36 +KW_CATALOGS=37 +KW_COLUMN=38 +KW_COLUMNS=39 +KW_COMMENT=40 +KW_COMMIT=41 +KW_COMMITTED=42 +KW_CONSTRAINT=43 +KW_CREATE=44 +KW_CROSS=45 +KW_CUBE=46 +KW_CURRENT=47 +KW_CURRENT_CATALOG=48 +KW_CURRENT_DATE=49 +KW_CURRENT_PATH=50 +KW_CURRENT_ROLE=51 +KW_CURRENT_SCHEMA=52 +KW_CURRENT_TIME=53 +KW_CURRENT_TIMESTAMP=54 +KW_CURRENT_USER=55 +KW_DATA=56 +KW_DATE=57 +KW_DAY=58 +KW_DEFAULT=59 +KW_DEALLOCATE=60 +KW_DEFINER=61 +KW_DELETE=62 +KW_DESC=63 +KW_DESCRIBE=64 +KW_DEFINE=65 +KW_DISTINCT=66 +KW_DISTRIBUTED=67 +KW_DOUBLE=68 +KW_DROP=69 +KW_ELSE=70 +KW_EMPTY=71 +KW_END=72 +KW_ESCAPE=73 +KW_EXCEPT=74 +KW_EXCLUDING=75 +KW_EXECUTE=76 +KW_EXISTS=77 +KW_EXPLAIN=78 +KW_EXTRACT=79 +KW_FALSE=80 +KW_FETCH=81 +KW_FILTER=82 +KW_FINAL=83 +KW_FIRST=84 +KW_FOLLOWING=85 +KW_FOR=86 +KW_FORMAT=87 +KW_FROM=88 +KW_FULL=89 +KW_FUNCTIONS=90 +KW_GRANT=91 +KW_GRANTED=92 +KW_GRANTS=93 +KW_DENY=94 +KW_GRAPHVIZ=95 +KW_GROUP=96 +KW_GROUPING=97 +KW_GROUPS=98 +KW_HAVING=99 +KW_HOUR=100 +KW_IF=101 +KW_IGNORE=102 +KW_IN=103 +KW_INCLUDING=104 +KW_INITIAL=105 +KW_INNER=106 +KW_INPUT=107 +KW_INSERT=108 +KW_INTERSECT=109 +KW_INTERVAL=110 +KW_INTO=111 +KW_INVOKER=112 +KW_IO=113 +KW_IS=114 +KW_ISOLATION=115 +KW_JOIN=116 +KW_JSON=117 +KW_LAST=118 +KW_LATERAL=119 +KW_LEFT=120 +KW_LEVEL=121 +KW_LIKE=122 +KW_LIMIT=123 +KW_LOCAL=124 +KW_LOCALTIME=125 +KW_LOCALTIMESTAMP=126 +KW_LOGICAL=127 +KW_MAP=128 +KW_MATCH=129 +KW_MATCHED=130 +KW_MATCHES=131 +KW_MATCH_RECOGNIZE=132 +KW_MATERIALIZED=133 +KW_MEASURES=134 +KW_MERGE=135 +KW_MINUTE=136 +KW_MONTH=137 +KW_NATURAL=138 +KW_NEXT=139 +KW_NFC=140 +KW_NFD=141 +KW_NFKC=142 +KW_NFKD=143 +KW_NO=144 +KW_NONE=145 +KW_NORMALIZE=146 +KW_NOT=147 +KW_NULL=148 +KW_NULLIF=149 +KW_NULLS=150 +KW_OFFSET=151 +KW_OMIT=152 +KW_ON=153 +KW_ONE=154 +KW_ONLY=155 +KW_OPTION=156 +KW_OR=157 +KW_ORDER=158 +KW_ORDINALITY=159 +KW_OUTER=160 +KW_OUTPUT=161 +KW_OVER=162 +KW_PARTITION=163 +KW_PARTITIONS=164 +KW_PAST=165 +KW_PATH=166 +KW_PATTERN=167 +KW_PER=168 +KW_PERMUTE=169 +KW_POSITION=170 +KW_PRECEDING=171 +KW_PRECISION=172 +KW_PREPARE=173 +KW_PRIVILEGES=174 +KW_PROPERTIES=175 +KW_RANGE=176 +KW_READ=177 +KW_RECURSIVE=178 +KW_REFRESH=179 +KW_RENAME=180 +KW_REPEATABLE=181 +KW_REPLACE=182 +KW_RESET=183 +KW_RESPECT=184 +KW_RESTRICT=185 +KW_REVOKE=186 +KW_RIGHT=187 +KW_ROLE=188 +KW_ROLES=189 +KW_ROLLBACK=190 +KW_ROLLUP=191 +KW_ROW=192 +KW_ROWS=193 +KW_RUNNING=194 +KW_SCHEMA=195 +KW_SCHEMAS=196 +KW_SECOND=197 +KW_SECURITY=198 +KW_SEEK=199 +KW_SELECT=200 +KW_SERIALIZABLE=201 +KW_SESSION=202 +KW_SET=203 +KW_SETS=204 +KW_SHOW=205 +KW_SOME=206 +KW_START=207 +KW_STATS=208 +KW_SUBSET=209 +KW_SUBSTRING=210 +KW_SYSTEM=211 +KW_TABLE=212 +KW_TABLES=213 +KW_TABLESAMPLE=214 +KW_TEXT=215 +KW_THEN=216 +KW_TIES=217 +KW_TIME=218 +KW_TIMESTAMP=219 +KW_TO=220 +KW_TRANSACTION=221 +KW_TRUNCATE=222 +KW_TRUE=223 +KW_TRY_CAST=224 +KW_TYPE=225 +KW_UESCAPE=226 +KW_UNBOUNDED=227 +KW_UNCOMMITTED=228 +KW_UNION=229 +KW_UNMATCHED=230 +KW_UNNEST=231 +KW_UPDATE=232 +KW_USE=233 +KW_USER=234 +KW_USING=235 +KW_VALIDATE=236 +KW_VALUES=237 +KW_VERBOSE=238 +KW_VIEW=239 +KW_WHEN=240 +KW_WHERE=241 +KW_WINDOW=242 +KW_WITH=243 +KW_WITHOUT=244 +KW_WORK=245 +KW_WRITE=246 +KW_YEAR=247 +KW_ZONE=248 EQ=249 NEQ=250 LT=251 @@ -274,10 +274,10 @@ SIMPLE_COMMENT=273 BRACKETED_COMMENT=274 WS=275 UNRECOGNIZED=276 -'.'=1 -'('=2 -')'=3 -','=4 +'('=1 +')'=2 +','=3 +'.'=4 'SKIP'=5 '->'=6 '['=7 diff --git a/src/lib/trinosql/TrinoSqlLexer.ts b/src/lib/trinosql/TrinoSqlLexer.ts index 5a141be..539a7ad 100644 --- a/src/lib/trinosql/TrinoSqlLexer.ts +++ b/src/lib/trinosql/TrinoSqlLexer.ts @@ -1,4 +1,4 @@ -// Generated from /Users/ziv/github.com/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT +// Generated from /Users/hayden/Desktop/dt-works/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT import { ATN } from "antlr4ts/atn/ATN"; @@ -32,238 +32,238 @@ export class TrinoSqlLexer extends Lexer { public static readonly T__13 = 14; public static readonly T__14 = 15; public static readonly T__15 = 16; - public static readonly ADD = 17; - public static readonly ADMIN = 18; - public static readonly AFTER = 19; - public static readonly ALL = 20; - public static readonly ALTER = 21; - public static readonly ANALYZE = 22; - public static readonly AND = 23; - public static readonly ANY = 24; - public static readonly ARRAY = 25; - public static readonly AS = 26; - public static readonly ASC = 27; - public static readonly AT = 28; - public static readonly AUTHORIZATION = 29; - public static readonly BERNOULLI = 30; - public static readonly BETWEEN = 31; - public static readonly BY = 32; - public static readonly CALL = 33; - public static readonly CASCADE = 34; - public static readonly CASE = 35; - public static readonly CAST = 36; - public static readonly CATALOGS = 37; - public static readonly COLUMN = 38; - public static readonly COLUMNS = 39; - public static readonly COMMENT = 40; - public static readonly COMMIT = 41; - public static readonly COMMITTED = 42; - public static readonly CONSTRAINT = 43; - public static readonly CREATE = 44; - public static readonly CROSS = 45; - public static readonly CUBE = 46; - public static readonly CURRENT = 47; - public static readonly CURRENT_CATALOG = 48; - public static readonly CURRENT_DATE = 49; - public static readonly CURRENT_PATH = 50; - public static readonly CURRENT_ROLE = 51; - public static readonly CURRENT_SCHEMA = 52; - public static readonly CURRENT_TIME = 53; - public static readonly CURRENT_TIMESTAMP = 54; - public static readonly CURRENT_USER = 55; - public static readonly DATA = 56; - public static readonly DATE = 57; - public static readonly DAY = 58; - public static readonly DEFAULT = 59; - public static readonly DEALLOCATE = 60; - public static readonly DEFINER = 61; - public static readonly DELETE = 62; - public static readonly DESC = 63; - public static readonly DESCRIBE = 64; - public static readonly DEFINE = 65; - public static readonly DISTINCT = 66; - public static readonly DISTRIBUTED = 67; - public static readonly DOUBLE = 68; - public static readonly DROP = 69; - public static readonly ELSE = 70; - public static readonly EMPTY = 71; - public static readonly END = 72; - public static readonly ESCAPE = 73; - public static readonly EXCEPT = 74; - public static readonly EXCLUDING = 75; - public static readonly EXECUTE = 76; - public static readonly EXISTS = 77; - public static readonly EXPLAIN = 78; - public static readonly EXTRACT = 79; - public static readonly FALSE = 80; - public static readonly FETCH = 81; - public static readonly FILTER = 82; - public static readonly FINAL = 83; - public static readonly FIRST = 84; - public static readonly FOLLOWING = 85; - public static readonly FOR = 86; - public static readonly FORMAT = 87; - public static readonly FROM = 88; - public static readonly FULL = 89; - public static readonly FUNCTIONS = 90; - public static readonly GRANT = 91; - public static readonly GRANTED = 92; - public static readonly GRANTS = 93; - public static readonly DENY = 94; - public static readonly GRAPHVIZ = 95; - public static readonly GROUP = 96; - public static readonly GROUPING = 97; - public static readonly GROUPS = 98; - public static readonly HAVING = 99; - public static readonly HOUR = 100; - public static readonly IF = 101; - public static readonly IGNORE = 102; - public static readonly IN = 103; - public static readonly INCLUDING = 104; - public static readonly INITIAL = 105; - public static readonly INNER = 106; - public static readonly INPUT = 107; - public static readonly INSERT = 108; - public static readonly INTERSECT = 109; - public static readonly INTERVAL = 110; - public static readonly INTO = 111; - public static readonly INVOKER = 112; - public static readonly IO = 113; - public static readonly IS = 114; - public static readonly ISOLATION = 115; - public static readonly JOIN = 116; - public static readonly JSON = 117; - public static readonly LAST = 118; - public static readonly LATERAL = 119; - public static readonly LEFT = 120; - public static readonly LEVEL = 121; - public static readonly LIKE = 122; - public static readonly LIMIT = 123; - public static readonly LOCAL = 124; - public static readonly LOCALTIME = 125; - public static readonly LOCALTIMESTAMP = 126; - public static readonly LOGICAL = 127; - public static readonly MAP = 128; - public static readonly MATCH = 129; - public static readonly MATCHED = 130; - public static readonly MATCHES = 131; - public static readonly MATCH_RECOGNIZE = 132; - public static readonly MATERIALIZED = 133; - public static readonly MEASURES = 134; - public static readonly MERGE = 135; - public static readonly MINUTE = 136; - public static readonly MONTH = 137; - public static readonly NATURAL = 138; - public static readonly NEXT = 139; - public static readonly NFC = 140; - public static readonly NFD = 141; - public static readonly NFKC = 142; - public static readonly NFKD = 143; - public static readonly NO = 144; - public static readonly NONE = 145; - public static readonly NORMALIZE = 146; - public static readonly NOT = 147; - public static readonly NULL = 148; - public static readonly NULLIF = 149; - public static readonly NULLS = 150; - public static readonly OFFSET = 151; - public static readonly OMIT = 152; - public static readonly ON = 153; - public static readonly ONE = 154; - public static readonly ONLY = 155; - public static readonly OPTION = 156; - public static readonly OR = 157; - public static readonly ORDER = 158; - public static readonly ORDINALITY = 159; - public static readonly OUTER = 160; - public static readonly OUTPUT = 161; - public static readonly OVER = 162; - public static readonly PARTITION = 163; - public static readonly PARTITIONS = 164; - public static readonly PAST = 165; - public static readonly PATH = 166; - public static readonly PATTERN = 167; - public static readonly PER = 168; - public static readonly PERMUTE = 169; - public static readonly POSITION = 170; - public static readonly PRECEDING = 171; - public static readonly PRECISION = 172; - public static readonly PREPARE = 173; - public static readonly PRIVILEGES = 174; - public static readonly PROPERTIES = 175; - public static readonly RANGE = 176; - public static readonly READ = 177; - public static readonly RECURSIVE = 178; - public static readonly REFRESH = 179; - public static readonly RENAME = 180; - public static readonly REPEATABLE = 181; - public static readonly REPLACE = 182; - public static readonly RESET = 183; - public static readonly RESPECT = 184; - public static readonly RESTRICT = 185; - public static readonly REVOKE = 186; - public static readonly RIGHT = 187; - public static readonly ROLE = 188; - public static readonly ROLES = 189; - public static readonly ROLLBACK = 190; - public static readonly ROLLUP = 191; - public static readonly ROW = 192; - public static readonly ROWS = 193; - public static readonly RUNNING = 194; - public static readonly SCHEMA = 195; - public static readonly SCHEMAS = 196; - public static readonly SECOND = 197; - public static readonly SECURITY = 198; - public static readonly SEEK = 199; - public static readonly SELECT = 200; - public static readonly SERIALIZABLE = 201; - public static readonly SESSION = 202; - public static readonly SET = 203; - public static readonly SETS = 204; - public static readonly SHOW = 205; - public static readonly SOME = 206; - public static readonly START = 207; - public static readonly STATS = 208; - public static readonly SUBSET = 209; - public static readonly SUBSTRING = 210; - public static readonly SYSTEM = 211; - public static readonly TABLE = 212; - public static readonly TABLES = 213; - public static readonly TABLESAMPLE = 214; - public static readonly TEXT = 215; - public static readonly THEN = 216; - public static readonly TIES = 217; - public static readonly TIME = 218; - public static readonly TIMESTAMP = 219; - public static readonly TO = 220; - public static readonly TRANSACTION = 221; - public static readonly TRUNCATE = 222; - public static readonly TRUE = 223; - public static readonly TRY_CAST = 224; - public static readonly TYPE = 225; - public static readonly UESCAPE = 226; - public static readonly UNBOUNDED = 227; - public static readonly UNCOMMITTED = 228; - public static readonly UNION = 229; - public static readonly UNMATCHED = 230; - public static readonly UNNEST = 231; - public static readonly UPDATE = 232; - public static readonly USE = 233; - public static readonly USER = 234; - public static readonly USING = 235; - public static readonly VALIDATE = 236; - public static readonly VALUES = 237; - public static readonly VERBOSE = 238; - public static readonly VIEW = 239; - public static readonly WHEN = 240; - public static readonly WHERE = 241; - public static readonly WINDOW = 242; - public static readonly WITH = 243; - public static readonly WITHOUT = 244; - public static readonly WORK = 245; - public static readonly WRITE = 246; - public static readonly YEAR = 247; - public static readonly ZONE = 248; + public static readonly KW_ADD = 17; + public static readonly KW_ADMIN = 18; + public static readonly KW_AFTER = 19; + public static readonly KW_ALL = 20; + public static readonly KW_ALTER = 21; + public static readonly KW_ANALYZE = 22; + public static readonly KW_AND = 23; + public static readonly KW_ANY = 24; + public static readonly KW_ARRAY = 25; + public static readonly KW_AS = 26; + public static readonly KW_ASC = 27; + public static readonly KW_AT = 28; + public static readonly KW_AUTHORIZATION = 29; + public static readonly KW_BERNOULLI = 30; + public static readonly KW_BETWEEN = 31; + public static readonly KW_BY = 32; + public static readonly KW_CALL = 33; + public static readonly KW_CASCADE = 34; + public static readonly KW_CASE = 35; + public static readonly KW_CAST = 36; + public static readonly KW_CATALOGS = 37; + public static readonly KW_COLUMN = 38; + public static readonly KW_COLUMNS = 39; + public static readonly KW_COMMENT = 40; + public static readonly KW_COMMIT = 41; + public static readonly KW_COMMITTED = 42; + public static readonly KW_CONSTRAINT = 43; + public static readonly KW_CREATE = 44; + public static readonly KW_CROSS = 45; + public static readonly KW_CUBE = 46; + public static readonly KW_CURRENT = 47; + public static readonly KW_CURRENT_CATALOG = 48; + public static readonly KW_CURRENT_DATE = 49; + public static readonly KW_CURRENT_PATH = 50; + public static readonly KW_CURRENT_ROLE = 51; + public static readonly KW_CURRENT_SCHEMA = 52; + public static readonly KW_CURRENT_TIME = 53; + public static readonly KW_CURRENT_TIMESTAMP = 54; + public static readonly KW_CURRENT_USER = 55; + public static readonly KW_DATA = 56; + public static readonly KW_DATE = 57; + public static readonly KW_DAY = 58; + public static readonly KW_DEFAULT = 59; + public static readonly KW_DEALLOCATE = 60; + public static readonly KW_DEFINER = 61; + public static readonly KW_DELETE = 62; + public static readonly KW_DESC = 63; + public static readonly KW_DESCRIBE = 64; + public static readonly KW_DEFINE = 65; + public static readonly KW_DISTINCT = 66; + public static readonly KW_DISTRIBUTED = 67; + public static readonly KW_DOUBLE = 68; + public static readonly KW_DROP = 69; + public static readonly KW_ELSE = 70; + public static readonly KW_EMPTY = 71; + public static readonly KW_END = 72; + public static readonly KW_ESCAPE = 73; + public static readonly KW_EXCEPT = 74; + public static readonly KW_EXCLUDING = 75; + public static readonly KW_EXECUTE = 76; + public static readonly KW_EXISTS = 77; + public static readonly KW_EXPLAIN = 78; + public static readonly KW_EXTRACT = 79; + public static readonly KW_FALSE = 80; + public static readonly KW_FETCH = 81; + public static readonly KW_FILTER = 82; + public static readonly KW_FINAL = 83; + public static readonly KW_FIRST = 84; + public static readonly KW_FOLLOWING = 85; + public static readonly KW_FOR = 86; + public static readonly KW_FORMAT = 87; + public static readonly KW_FROM = 88; + public static readonly KW_FULL = 89; + public static readonly KW_FUNCTIONS = 90; + public static readonly KW_GRANT = 91; + public static readonly KW_GRANTED = 92; + public static readonly KW_GRANTS = 93; + public static readonly KW_DENY = 94; + public static readonly KW_GRAPHVIZ = 95; + public static readonly KW_GROUP = 96; + public static readonly KW_GROUPING = 97; + public static readonly KW_GROUPS = 98; + public static readonly KW_HAVING = 99; + public static readonly KW_HOUR = 100; + public static readonly KW_IF = 101; + public static readonly KW_IGNORE = 102; + public static readonly KW_IN = 103; + public static readonly KW_INCLUDING = 104; + public static readonly KW_INITIAL = 105; + public static readonly KW_INNER = 106; + public static readonly KW_INPUT = 107; + public static readonly KW_INSERT = 108; + public static readonly KW_INTERSECT = 109; + public static readonly KW_INTERVAL = 110; + public static readonly KW_INTO = 111; + public static readonly KW_INVOKER = 112; + public static readonly KW_IO = 113; + public static readonly KW_IS = 114; + public static readonly KW_ISOLATION = 115; + public static readonly KW_JOIN = 116; + public static readonly KW_JSON = 117; + public static readonly KW_LAST = 118; + public static readonly KW_LATERAL = 119; + public static readonly KW_LEFT = 120; + public static readonly KW_LEVEL = 121; + public static readonly KW_LIKE = 122; + public static readonly KW_LIMIT = 123; + public static readonly KW_LOCAL = 124; + public static readonly KW_LOCALTIME = 125; + public static readonly KW_LOCALTIMESTAMP = 126; + public static readonly KW_LOGICAL = 127; + public static readonly KW_MAP = 128; + public static readonly KW_MATCH = 129; + public static readonly KW_MATCHED = 130; + public static readonly KW_MATCHES = 131; + public static readonly KW_MATCH_RECOGNIZE = 132; + public static readonly KW_MATERIALIZED = 133; + public static readonly KW_MEASURES = 134; + public static readonly KW_MERGE = 135; + public static readonly KW_MINUTE = 136; + public static readonly KW_MONTH = 137; + public static readonly KW_NATURAL = 138; + public static readonly KW_NEXT = 139; + public static readonly KW_NFC = 140; + public static readonly KW_NFD = 141; + public static readonly KW_NFKC = 142; + public static readonly KW_NFKD = 143; + public static readonly KW_NO = 144; + public static readonly KW_NONE = 145; + public static readonly KW_NORMALIZE = 146; + public static readonly KW_NOT = 147; + public static readonly KW_NULL = 148; + public static readonly KW_NULLIF = 149; + public static readonly KW_NULLS = 150; + public static readonly KW_OFFSET = 151; + public static readonly KW_OMIT = 152; + public static readonly KW_ON = 153; + public static readonly KW_ONE = 154; + public static readonly KW_ONLY = 155; + public static readonly KW_OPTION = 156; + public static readonly KW_OR = 157; + public static readonly KW_ORDER = 158; + public static readonly KW_ORDINALITY = 159; + public static readonly KW_OUTER = 160; + public static readonly KW_OUTPUT = 161; + public static readonly KW_OVER = 162; + public static readonly KW_PARTITION = 163; + public static readonly KW_PARTITIONS = 164; + public static readonly KW_PAST = 165; + public static readonly KW_PATH = 166; + public static readonly KW_PATTERN = 167; + public static readonly KW_PER = 168; + public static readonly KW_PERMUTE = 169; + public static readonly KW_POSITION = 170; + public static readonly KW_PRECEDING = 171; + public static readonly KW_PRECISION = 172; + public static readonly KW_PREPARE = 173; + public static readonly KW_PRIVILEGES = 174; + public static readonly KW_PROPERTIES = 175; + public static readonly KW_RANGE = 176; + public static readonly KW_READ = 177; + public static readonly KW_RECURSIVE = 178; + public static readonly KW_REFRESH = 179; + public static readonly KW_RENAME = 180; + public static readonly KW_REPEATABLE = 181; + public static readonly KW_REPLACE = 182; + public static readonly KW_RESET = 183; + public static readonly KW_RESPECT = 184; + public static readonly KW_RESTRICT = 185; + public static readonly KW_REVOKE = 186; + public static readonly KW_RIGHT = 187; + public static readonly KW_ROLE = 188; + public static readonly KW_ROLES = 189; + public static readonly KW_ROLLBACK = 190; + public static readonly KW_ROLLUP = 191; + public static readonly KW_ROW = 192; + public static readonly KW_ROWS = 193; + public static readonly KW_RUNNING = 194; + public static readonly KW_SCHEMA = 195; + public static readonly KW_SCHEMAS = 196; + public static readonly KW_SECOND = 197; + public static readonly KW_SECURITY = 198; + public static readonly KW_SEEK = 199; + public static readonly KW_SELECT = 200; + public static readonly KW_SERIALIZABLE = 201; + public static readonly KW_SESSION = 202; + public static readonly KW_SET = 203; + public static readonly KW_SETS = 204; + public static readonly KW_SHOW = 205; + public static readonly KW_SOME = 206; + public static readonly KW_START = 207; + public static readonly KW_STATS = 208; + public static readonly KW_SUBSET = 209; + public static readonly KW_SUBSTRING = 210; + public static readonly KW_SYSTEM = 211; + public static readonly KW_TABLE = 212; + public static readonly KW_TABLES = 213; + public static readonly KW_TABLESAMPLE = 214; + public static readonly KW_TEXT = 215; + public static readonly KW_THEN = 216; + public static readonly KW_TIES = 217; + public static readonly KW_TIME = 218; + public static readonly KW_TIMESTAMP = 219; + public static readonly KW_TO = 220; + public static readonly KW_TRANSACTION = 221; + public static readonly KW_TRUNCATE = 222; + public static readonly KW_TRUE = 223; + public static readonly KW_TRY_CAST = 224; + public static readonly KW_TYPE = 225; + public static readonly KW_UESCAPE = 226; + public static readonly KW_UNBOUNDED = 227; + public static readonly KW_UNCOMMITTED = 228; + public static readonly KW_UNION = 229; + public static readonly KW_UNMATCHED = 230; + public static readonly KW_UNNEST = 231; + public static readonly KW_UPDATE = 232; + public static readonly KW_USE = 233; + public static readonly KW_USER = 234; + public static readonly KW_USING = 235; + public static readonly KW_VALIDATE = 236; + public static readonly KW_VALUES = 237; + public static readonly KW_VERBOSE = 238; + public static readonly KW_VIEW = 239; + public static readonly KW_WHEN = 240; + public static readonly KW_WHERE = 241; + public static readonly KW_WINDOW = 242; + public static readonly KW_WITH = 243; + public static readonly KW_WITHOUT = 244; + public static readonly KW_WORK = 245; + public static readonly KW_WRITE = 246; + public static readonly KW_YEAR = 247; + public static readonly KW_ZONE = 248; public static readonly EQ = 249; public static readonly NEQ = 250; public static readonly LT = 251; @@ -305,48 +305,56 @@ export class TrinoSqlLexer extends Lexer { public static readonly ruleNames: string[] = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", - "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "ADD", "ADMIN", - "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", - "AT", "AUTHORIZATION", "BERNOULLI", "BETWEEN", "BY", "CALL", "CASCADE", - "CASE", "CAST", "CATALOGS", "COLUMN", "COLUMNS", "COMMENT", "COMMIT", - "COMMITTED", "CONSTRAINT", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_CATALOG", - "CURRENT_DATE", "CURRENT_PATH", "CURRENT_ROLE", "CURRENT_SCHEMA", "CURRENT_TIME", - "CURRENT_TIMESTAMP", "CURRENT_USER", "DATA", "DATE", "DAY", "DEFAULT", - "DEALLOCATE", "DEFINER", "DELETE", "DESC", "DESCRIBE", "DEFINE", "DISTINCT", - "DISTRIBUTED", "DOUBLE", "DROP", "ELSE", "EMPTY", "END", "ESCAPE", "EXCEPT", - "EXCLUDING", "EXECUTE", "EXISTS", "EXPLAIN", "EXTRACT", "FALSE", "FETCH", - "FILTER", "FINAL", "FIRST", "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", - "FUNCTIONS", "GRANT", "GRANTED", "GRANTS", "DENY", "GRAPHVIZ", "GROUP", - "GROUPING", "GROUPS", "HAVING", "HOUR", "IF", "IGNORE", "IN", "INCLUDING", - "INITIAL", "INNER", "INPUT", "INSERT", "INTERSECT", "INTERVAL", "INTO", - "INVOKER", "IO", "IS", "ISOLATION", "JOIN", "JSON", "LAST", "LATERAL", - "LEFT", "LEVEL", "LIKE", "LIMIT", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", - "LOGICAL", "MAP", "MATCH", "MATCHED", "MATCHES", "MATCH_RECOGNIZE", "MATERIALIZED", - "MEASURES", "MERGE", "MINUTE", "MONTH", "NATURAL", "NEXT", "NFC", "NFD", - "NFKC", "NFKD", "NO", "NONE", "NORMALIZE", "NOT", "NULL", "NULLIF", "NULLS", - "OFFSET", "OMIT", "ON", "ONE", "ONLY", "OPTION", "OR", "ORDER", "ORDINALITY", - "OUTER", "OUTPUT", "OVER", "PARTITION", "PARTITIONS", "PAST", "PATH", - "PATTERN", "PER", "PERMUTE", "POSITION", "PRECEDING", "PRECISION", "PREPARE", - "PRIVILEGES", "PROPERTIES", "RANGE", "READ", "RECURSIVE", "REFRESH", "RENAME", - "REPEATABLE", "REPLACE", "RESET", "RESPECT", "RESTRICT", "REVOKE", "RIGHT", - "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROW", "ROWS", "RUNNING", "SCHEMA", - "SCHEMAS", "SECOND", "SECURITY", "SEEK", "SELECT", "SERIALIZABLE", "SESSION", - "SET", "SETS", "SHOW", "SOME", "START", "STATS", "SUBSET", "SUBSTRING", - "SYSTEM", "TABLE", "TABLES", "TABLESAMPLE", "TEXT", "THEN", "TIES", "TIME", - "TIMESTAMP", "TO", "TRANSACTION", "TRUNCATE", "TRUE", "TRY_CAST", "TYPE", - "UESCAPE", "UNBOUNDED", "UNCOMMITTED", "UNION", "UNMATCHED", "UNNEST", - "UPDATE", "USE", "USER", "USING", "VALIDATE", "VALUES", "VERBOSE", "VIEW", - "WHEN", "WHERE", "WINDOW", "WITH", "WITHOUT", "WORK", "WRITE", "YEAR", - "ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", - "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", - "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SEMICOLON", - "EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "WS", "UNRECOGNIZED", + "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "KW_ADD", + "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", + "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", + "KW_BERNOULLI", "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", "KW_CASE", + "KW_CAST", "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", + "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", + "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", + "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", + "KW_DATA", "KW_DATE", "KW_DAY", "KW_DEFAULT", "KW_DEALLOCATE", "KW_DEFINER", + "KW_DELETE", "KW_DESC", "KW_DESCRIBE", "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", + "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", + "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", + "KW_FOLLOWING", "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", + "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", + "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", "KW_IF", "KW_IGNORE", + "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", "KW_INPUT", "KW_INSERT", + "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", + "KW_ISOLATION", "KW_JOIN", "KW_JSON", "KW_LAST", "KW_LATERAL", "KW_LEFT", + "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", + "KW_LOGICAL", "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", + "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", + "KW_OFFSET", "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", + "KW_ORDER", "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", + "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", + "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", + "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", + "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", + "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", + "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", + "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", "KW_STATS", + "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", + "KW_TEXT", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", + "KW_TRUNCATE", "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", + "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", + "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", + "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", "LTE", + "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT", + "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", + "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "SEMICOLON", "EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT", + "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", ]; private static readonly _LITERAL_NAMES: Array = [ - undefined, "'.'", "'('", "')'", "','", "'SKIP'", "'->'", "'['", "']'", + undefined, "'('", "')'", "','", "'.'", "'SKIP'", "'->'", "'['", "']'", "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", "'=>'", "'ADD'", "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", "'BERNOULLI'", "'BETWEEN'", @@ -392,43 +400,51 @@ export class TrinoSqlLexer extends Lexer { private static readonly _SYMBOLIC_NAMES: Array = [ undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, "ADD", "ADMIN", "AFTER", "ALL", "ALTER", - "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", - "BERNOULLI", "BETWEEN", "BY", "CALL", "CASCADE", "CASE", "CAST", "CATALOGS", - "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "CONSTRAINT", "CREATE", - "CROSS", "CUBE", "CURRENT", "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_PATH", - "CURRENT_ROLE", "CURRENT_SCHEMA", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DATA", "DATE", "DAY", "DEFAULT", "DEALLOCATE", "DEFINER", - "DELETE", "DESC", "DESCRIBE", "DEFINE", "DISTINCT", "DISTRIBUTED", "DOUBLE", - "DROP", "ELSE", "EMPTY", "END", "ESCAPE", "EXCEPT", "EXCLUDING", "EXECUTE", - "EXISTS", "EXPLAIN", "EXTRACT", "FALSE", "FETCH", "FILTER", "FINAL", "FIRST", - "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRANT", "GRANTED", - "GRANTS", "DENY", "GRAPHVIZ", "GROUP", "GROUPING", "GROUPS", "HAVING", - "HOUR", "IF", "IGNORE", "IN", "INCLUDING", "INITIAL", "INNER", "INPUT", - "INSERT", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IO", "IS", "ISOLATION", - "JOIN", "JSON", "LAST", "LATERAL", "LEFT", "LEVEL", "LIKE", "LIMIT", "LOCAL", - "LOCALTIME", "LOCALTIMESTAMP", "LOGICAL", "MAP", "MATCH", "MATCHED", "MATCHES", - "MATCH_RECOGNIZE", "MATERIALIZED", "MEASURES", "MERGE", "MINUTE", "MONTH", - "NATURAL", "NEXT", "NFC", "NFD", "NFKC", "NFKD", "NO", "NONE", "NORMALIZE", - "NOT", "NULL", "NULLIF", "NULLS", "OFFSET", "OMIT", "ON", "ONE", "ONLY", - "OPTION", "OR", "ORDER", "ORDINALITY", "OUTER", "OUTPUT", "OVER", "PARTITION", - "PARTITIONS", "PAST", "PATH", "PATTERN", "PER", "PERMUTE", "POSITION", - "PRECEDING", "PRECISION", "PREPARE", "PRIVILEGES", "PROPERTIES", "RANGE", - "READ", "RECURSIVE", "REFRESH", "RENAME", "REPEATABLE", "REPLACE", "RESET", - "RESPECT", "RESTRICT", "REVOKE", "RIGHT", "ROLE", "ROLES", "ROLLBACK", - "ROLLUP", "ROW", "ROWS", "RUNNING", "SCHEMA", "SCHEMAS", "SECOND", "SECURITY", - "SEEK", "SELECT", "SERIALIZABLE", "SESSION", "SET", "SETS", "SHOW", "SOME", - "START", "STATS", "SUBSET", "SUBSTRING", "SYSTEM", "TABLE", "TABLES", - "TABLESAMPLE", "TEXT", "THEN", "TIES", "TIME", "TIMESTAMP", "TO", "TRANSACTION", - "TRUNCATE", "TRUE", "TRY_CAST", "TYPE", "UESCAPE", "UNBOUNDED", "UNCOMMITTED", - "UNION", "UNMATCHED", "UNNEST", "UPDATE", "USE", "USER", "USING", "VALIDATE", - "VALUES", "VERBOSE", "VIEW", "WHEN", "WHERE", "WINDOW", "WITH", "WITHOUT", - "WORK", "WRITE", "YEAR", "ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", - "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", - "STRING", "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", - "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", - "BACKQUOTED_IDENTIFIER", "SEMICOLON", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "WS", "UNRECOGNIZED", + undefined, undefined, undefined, "KW_ADD", "KW_ADMIN", "KW_AFTER", "KW_ALL", + "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", + "KW_AT", "KW_AUTHORIZATION", "KW_BERNOULLI", "KW_BETWEEN", "KW_BY", "KW_CALL", + "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", + "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", + "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", + "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", + "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", "KW_DATE", "KW_DAY", + "KW_DEFAULT", "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", "KW_DESC", "KW_DESCRIBE", + "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DOUBLE", "KW_DROP", + "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", "KW_FETCH", + "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", "KW_FOR", "KW_FORMAT", + "KW_FROM", "KW_FULL", "KW_FUNCTIONS", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", + "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", + "KW_HOUR", "KW_IF", "KW_IGNORE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", + "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", + "KW_LAST", "KW_LATERAL", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", + "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", + "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", "KW_NEXT", + "KW_NFC", "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", + "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", "KW_OMIT", + "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", "KW_ORDINALITY", + "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", "KW_PARTITIONS", "KW_PAST", + "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", "KW_POSITION", "KW_PRECEDING", + "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", "KW_RANGE", + "KW_READ", "KW_RECURSIVE", "KW_REFRESH", "KW_RENAME", "KW_REPEATABLE", + "KW_REPLACE", "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", + "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", "KW_ROLLUP", "KW_ROW", "KW_ROWS", + "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", + "KW_SELECT", "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", + "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", + "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", "KW_TRUE", + "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", "KW_UNCOMMITTED", + "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", "KW_USE", "KW_USER", + "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", "KW_VIEW", "KW_WHEN", + "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", "KW_WORK", "KW_WRITE", + "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", + "ASTERISK", "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", + "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", + "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SEMICOLON", + "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", ]; public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(TrinoSqlLexer._LITERAL_NAMES, TrinoSqlLexer._SYMBOLIC_NAMES, []); @@ -953,9 +969,9 @@ export class TrinoSqlLexer extends Lexer { "\x02\x02\u0223\u0970\x03\x02\x02\x02\u0225\u0979\x03\x02\x02\x02\u0227" + "\u097B\x03\x02\x02\x02\u0229\u097D\x03\x02\x02\x02\u022B\u098E\x03\x02" + "\x02\x02\u022D\u099D\x03\x02\x02\x02\u022F\u09A3\x03\x02\x02\x02\u0231" + - "\u0232\x070\x02\x02\u0232\x04\x03\x02\x02\x02\u0233\u0234\x07*\x02\x02" + - "\u0234\x06\x03\x02\x02\x02\u0235\u0236\x07+\x02\x02\u0236\b\x03\x02\x02" + - "\x02\u0237\u0238\x07.\x02\x02\u0238\n\x03\x02\x02\x02\u0239\u023A\x07" + + "\u0232\x07*\x02\x02\u0232\x04\x03\x02\x02\x02\u0233\u0234\x07+\x02\x02" + + "\u0234\x06\x03\x02\x02\x02\u0235\u0236\x07.\x02\x02\u0236\b\x03\x02\x02" + + "\x02\u0237\u0238\x070\x02\x02\u0238\n\x03\x02\x02\x02\u0239\u023A\x07" + "U\x02\x02\u023A\u023B\x07M\x02\x02\u023B\u023C\x07K\x02\x02\u023C\u023D" + "\x07R\x02\x02\u023D\f\x03\x02\x02\x02\u023E\u023F\x07/\x02\x02\u023F\u0240" + "\x07@\x02\x02\u0240\x0E\x03\x02\x02\x02\u0241\u0242\x07]\x02\x02\u0242" + diff --git a/src/lib/trinosql/TrinoSqlListener.ts b/src/lib/trinosql/TrinoSqlListener.ts index 096bd00..88ec285 100644 --- a/src/lib/trinosql/TrinoSqlListener.ts +++ b/src/lib/trinosql/TrinoSqlListener.ts @@ -1,9 +1,9 @@ -// Generated from /Users/ziv/github.com/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT +// Generated from /Users/hayden/Desktop/dt-works/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; -import { TableNameContext } from "./TrinoSqlParser"; +import { TableOrViewRelationContext } from "./TrinoSqlParser"; import { SubqueryRelationContext } from "./TrinoSqlParser"; import { UnnestContext } from "./TrinoSqlParser"; import { LateralContext } from "./TrinoSqlParser"; @@ -42,10 +42,6 @@ import { GroupedPatternContext } from "./TrinoSqlParser"; import { PartitionStartAnchorContext } from "./TrinoSqlParser"; import { PartitionEndAnchorContext } from "./TrinoSqlParser"; import { ExcludedPatternContext } from "./TrinoSqlParser"; -import { ZeroOrMoreQuantifierContext } from "./TrinoSqlParser"; -import { OneOrMoreQuantifierContext } from "./TrinoSqlParser"; -import { ZeroOrOneQuantifierContext } from "./TrinoSqlParser"; -import { RangeQuantifierContext } from "./TrinoSqlParser"; import { DefaultPropertyValueContext } from "./TrinoSqlParser"; import { NonDefaultPropertyValueContext } from "./TrinoSqlParser"; import { ExplainFormatContext } from "./TrinoSqlParser"; @@ -54,29 +50,78 @@ import { SingleGroupingSetContext } from "./TrinoSqlParser"; import { RollupContext } from "./TrinoSqlParser"; import { CubeContext } from "./TrinoSqlParser"; import { MultipleGroupingSetsContext } from "./TrinoSqlParser"; -import { ReadUncommittedContext } from "./TrinoSqlParser"; -import { ReadCommittedContext } from "./TrinoSqlParser"; -import { RepeatableReadContext } from "./TrinoSqlParser"; -import { SerializableContext } from "./TrinoSqlParser"; import { ValueExpressionDefaultContext } from "./TrinoSqlParser"; import { AtTimeZoneContext } from "./TrinoSqlParser"; import { ArithmeticUnaryContext } from "./TrinoSqlParser"; import { ArithmeticBinaryContext } from "./TrinoSqlParser"; import { ConcatenationContext } from "./TrinoSqlParser"; -import { BasicStringLiteralContext } from "./TrinoSqlParser"; -import { UnicodeStringLiteralContext } from "./TrinoSqlParser"; import { QuantifiedPrimaryContext } from "./TrinoSqlParser"; import { PatternConcatenationContext } from "./TrinoSqlParser"; import { PatternAlternationContext } from "./TrinoSqlParser"; import { SpecifiedPrincipalContext } from "./TrinoSqlParser"; import { CurrentUserGrantorContext } from "./TrinoSqlParser"; import { CurrentRoleGrantorContext } from "./TrinoSqlParser"; -import { UnspecifiedPrincipalContext } from "./TrinoSqlParser"; -import { UserPrincipalContext } from "./TrinoSqlParser"; -import { RolePrincipalContext } from "./TrinoSqlParser"; import { UnboundedFrameContext } from "./TrinoSqlParser"; import { CurrentRowBoundContext } from "./TrinoSqlParser"; import { BoundedFrameContext } from "./TrinoSqlParser"; +import { QueryPrimaryDefaultContext } from "./TrinoSqlParser"; +import { TableContext } from "./TrinoSqlParser"; +import { InlineTableContext } from "./TrinoSqlParser"; +import { SubqueryContext } from "./TrinoSqlParser"; +import { NullLiteralContext } from "./TrinoSqlParser"; +import { IntervalLiteralContext } from "./TrinoSqlParser"; +import { TypeConstructorContext } from "./TrinoSqlParser"; +import { NumericLiteralContext } from "./TrinoSqlParser"; +import { BooleanLiteralContext } from "./TrinoSqlParser"; +import { StringLiteralContext } from "./TrinoSqlParser"; +import { BinaryLiteralContext } from "./TrinoSqlParser"; +import { ParameterContext } from "./TrinoSqlParser"; +import { PositionContext } from "./TrinoSqlParser"; +import { RowConstructorContext } from "./TrinoSqlParser"; +import { FunctionCallContext } from "./TrinoSqlParser"; +import { MeasureContext } from "./TrinoSqlParser"; +import { LambdaContext } from "./TrinoSqlParser"; +import { SubqueryExpressionContext } from "./TrinoSqlParser"; +import { ExistsContext } from "./TrinoSqlParser"; +import { SimpleCaseContext } from "./TrinoSqlParser"; +import { SearchedCaseContext } from "./TrinoSqlParser"; +import { CastContext } from "./TrinoSqlParser"; +import { ArrayConstructorContext } from "./TrinoSqlParser"; +import { SubscriptContext } from "./TrinoSqlParser"; +import { ColumnReferenceContext } from "./TrinoSqlParser"; +import { DereferenceContext } from "./TrinoSqlParser"; +import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser"; +import { CurrentUserContext } from "./TrinoSqlParser"; +import { CurrentCatalogContext } from "./TrinoSqlParser"; +import { CurrentSchemaContext } from "./TrinoSqlParser"; +import { CurrentPathContext } from "./TrinoSqlParser"; +import { SubstringContext } from "./TrinoSqlParser"; +import { NormalizeContext } from "./TrinoSqlParser"; +import { ExtractContext } from "./TrinoSqlParser"; +import { ParenthesizedExpressionContext } from "./TrinoSqlParser"; +import { GroupingOperationContext } from "./TrinoSqlParser"; +import { SelectSingleContext } from "./TrinoSqlParser"; +import { SelectAllContext } from "./TrinoSqlParser"; +import { QualifiedArgumentContext } from "./TrinoSqlParser"; +import { UnqualifiedArgumentContext } from "./TrinoSqlParser"; +import { PositionalArgumentContext } from "./TrinoSqlParser"; +import { NamedArgumentContext } from "./TrinoSqlParser"; +import { MergeUpdateContext } from "./TrinoSqlParser"; +import { MergeDeleteContext } from "./TrinoSqlParser"; +import { MergeInsertContext } from "./TrinoSqlParser"; +import { ZeroOrMoreQuantifierContext } from "./TrinoSqlParser"; +import { OneOrMoreQuantifierContext } from "./TrinoSqlParser"; +import { ZeroOrOneQuantifierContext } from "./TrinoSqlParser"; +import { RangeQuantifierContext } from "./TrinoSqlParser"; +import { ReadUncommittedContext } from "./TrinoSqlParser"; +import { ReadCommittedContext } from "./TrinoSqlParser"; +import { RepeatableReadContext } from "./TrinoSqlParser"; +import { SerializableContext } from "./TrinoSqlParser"; +import { BasicStringLiteralContext } from "./TrinoSqlParser"; +import { UnicodeStringLiteralContext } from "./TrinoSqlParser"; +import { UnspecifiedPrincipalContext } from "./TrinoSqlParser"; +import { UserPrincipalContext } from "./TrinoSqlParser"; +import { RolePrincipalContext } from "./TrinoSqlParser"; import { StatementDefaultContext } from "./TrinoSqlParser"; import { UseContext } from "./TrinoSqlParser"; import { CreateSchemaContext } from "./TrinoSqlParser"; @@ -151,56 +196,11 @@ import { ShowTableCommentContext } from "./TrinoSqlParser"; import { ShowColumnCommentContext } from "./TrinoSqlParser"; import { TimeZoneIntervalContext } from "./TrinoSqlParser"; import { TimeZoneStringContext } from "./TrinoSqlParser"; -import { QueryPrimaryDefaultContext } from "./TrinoSqlParser"; -import { TableContext } from "./TrinoSqlParser"; -import { InlineTableContext } from "./TrinoSqlParser"; -import { SubqueryContext } from "./TrinoSqlParser"; -import { NullLiteralContext } from "./TrinoSqlParser"; -import { IntervalLiteralContext } from "./TrinoSqlParser"; -import { TypeConstructorContext } from "./TrinoSqlParser"; -import { NumericLiteralContext } from "./TrinoSqlParser"; -import { BooleanLiteralContext } from "./TrinoSqlParser"; -import { StringLiteralContext } from "./TrinoSqlParser"; -import { BinaryLiteralContext } from "./TrinoSqlParser"; -import { ParameterContext } from "./TrinoSqlParser"; -import { PositionContext } from "./TrinoSqlParser"; -import { RowConstructorContext } from "./TrinoSqlParser"; -import { FunctionCallContext } from "./TrinoSqlParser"; -import { MeasureContext } from "./TrinoSqlParser"; -import { LambdaContext } from "./TrinoSqlParser"; -import { SubqueryExpressionContext } from "./TrinoSqlParser"; -import { ExistsContext } from "./TrinoSqlParser"; -import { SimpleCaseContext } from "./TrinoSqlParser"; -import { SearchedCaseContext } from "./TrinoSqlParser"; -import { CastContext } from "./TrinoSqlParser"; -import { ArrayConstructorContext } from "./TrinoSqlParser"; -import { SubscriptContext } from "./TrinoSqlParser"; -import { ColumnReferenceContext } from "./TrinoSqlParser"; -import { DereferenceContext } from "./TrinoSqlParser"; -import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser"; -import { CurrentUserContext } from "./TrinoSqlParser"; -import { CurrentCatalogContext } from "./TrinoSqlParser"; -import { CurrentSchemaContext } from "./TrinoSqlParser"; -import { CurrentPathContext } from "./TrinoSqlParser"; -import { SubstringContext } from "./TrinoSqlParser"; -import { NormalizeContext } from "./TrinoSqlParser"; -import { ExtractContext } from "./TrinoSqlParser"; -import { ParenthesizedExpressionContext } from "./TrinoSqlParser"; -import { GroupingOperationContext } from "./TrinoSqlParser"; import { IsolationLevelContext } from "./TrinoSqlParser"; import { TransactionAccessModeContext } from "./TrinoSqlParser"; -import { SelectSingleContext } from "./TrinoSqlParser"; -import { SelectAllContext } from "./TrinoSqlParser"; import { PredicatedContext } from "./TrinoSqlParser"; import { LogicalNotContext } from "./TrinoSqlParser"; import { LogicalBinaryContext } from "./TrinoSqlParser"; -import { QualifiedArgumentContext } from "./TrinoSqlParser"; -import { UnqualifiedArgumentContext } from "./TrinoSqlParser"; -import { PositionalArgumentContext } from "./TrinoSqlParser"; -import { NamedArgumentContext } from "./TrinoSqlParser"; -import { MergeUpdateContext } from "./TrinoSqlParser"; -import { MergeDeleteContext } from "./TrinoSqlParser"; -import { MergeInsertContext } from "./TrinoSqlParser"; import { ProgramContext } from "./TrinoSqlParser"; import { StatementsContext } from "./TrinoSqlParser"; import { SingleStatementContext } from "./TrinoSqlParser"; @@ -284,6 +284,19 @@ import { CallArgumentContext } from "./TrinoSqlParser"; import { PathElementContext } from "./TrinoSqlParser"; import { PathSpecificationContext } from "./TrinoSqlParser"; import { PrivilegeContext } from "./TrinoSqlParser"; +import { TableOrViewNameContext } from "./TrinoSqlParser"; +import { TableNameContext } from "./TrinoSqlParser"; +import { TableNameCreateContext } from "./TrinoSqlParser"; +import { ViewNameContext } from "./TrinoSqlParser"; +import { ViewNameCreateContext } from "./TrinoSqlParser"; +import { TablePathContext } from "./TrinoSqlParser"; +import { ViewPathContext } from "./TrinoSqlParser"; +import { SchemaNameContext } from "./TrinoSqlParser"; +import { SchemaNameCreateContext } from "./TrinoSqlParser"; +import { SchemaPathContext } from "./TrinoSqlParser"; +import { CatalogNameContext } from "./TrinoSqlParser"; +import { CatalogNameCreateContext } from "./TrinoSqlParser"; +import { FunctionNameContext } from "./TrinoSqlParser"; import { QualifiedNameContext } from "./TrinoSqlParser"; import { GrantorContext } from "./TrinoSqlParser"; import { PrincipalContext } from "./TrinoSqlParser"; @@ -299,17 +312,17 @@ import { NonReservedContext } from "./TrinoSqlParser"; */ export interface TrinoSqlListener extends ParseTreeListener { /** - * Enter a parse tree produced by the `tableName` + * Enter a parse tree produced by the `tableOrViewRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - enterTableName?: (ctx: TableNameContext) => void; + enterTableOrViewRelation?: (ctx: TableOrViewRelationContext) => void; /** - * Exit a parse tree produced by the `tableName` + * Exit a parse tree produced by the `tableOrViewRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - exitTableName?: (ctx: TableNameContext) => void; + exitTableOrViewRelation?: (ctx: TableOrViewRelationContext) => void; /** * Enter a parse tree produced by the `subqueryRelation` @@ -805,58 +818,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitExcludedPattern?: (ctx: ExcludedPatternContext) => void; - /** - * Enter a parse tree produced by the `zeroOrMoreQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - enterZeroOrMoreQuantifier?: (ctx: ZeroOrMoreQuantifierContext) => void; - /** - * Exit a parse tree produced by the `zeroOrMoreQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - exitZeroOrMoreQuantifier?: (ctx: ZeroOrMoreQuantifierContext) => void; - - /** - * Enter a parse tree produced by the `oneOrMoreQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - enterOneOrMoreQuantifier?: (ctx: OneOrMoreQuantifierContext) => void; - /** - * Exit a parse tree produced by the `oneOrMoreQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - exitOneOrMoreQuantifier?: (ctx: OneOrMoreQuantifierContext) => void; - - /** - * Enter a parse tree produced by the `zeroOrOneQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - enterZeroOrOneQuantifier?: (ctx: ZeroOrOneQuantifierContext) => void; - /** - * Exit a parse tree produced by the `zeroOrOneQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - exitZeroOrOneQuantifier?: (ctx: ZeroOrOneQuantifierContext) => void; - - /** - * Enter a parse tree produced by the `rangeQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - enterRangeQuantifier?: (ctx: RangeQuantifierContext) => void; - /** - * Exit a parse tree produced by the `rangeQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - */ - exitRangeQuantifier?: (ctx: RangeQuantifierContext) => void; - /** * Enter a parse tree produced by the `defaultPropertyValue` * labeled alternative in `TrinoSqlParser.propertyValue`. @@ -961,58 +922,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitMultipleGroupingSets?: (ctx: MultipleGroupingSetsContext) => void; - /** - * Enter a parse tree produced by the `readUncommitted` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - enterReadUncommitted?: (ctx: ReadUncommittedContext) => void; - /** - * Exit a parse tree produced by the `readUncommitted` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - exitReadUncommitted?: (ctx: ReadUncommittedContext) => void; - - /** - * Enter a parse tree produced by the `readCommitted` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - enterReadCommitted?: (ctx: ReadCommittedContext) => void; - /** - * Exit a parse tree produced by the `readCommitted` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - exitReadCommitted?: (ctx: ReadCommittedContext) => void; - - /** - * Enter a parse tree produced by the `repeatableRead` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - enterRepeatableRead?: (ctx: RepeatableReadContext) => void; - /** - * Exit a parse tree produced by the `repeatableRead` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - exitRepeatableRead?: (ctx: RepeatableReadContext) => void; - - /** - * Enter a parse tree produced by the `serializable` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - enterSerializable?: (ctx: SerializableContext) => void; - /** - * Exit a parse tree produced by the `serializable` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - exitSerializable?: (ctx: SerializableContext) => void; - /** * Enter a parse tree produced by the `valueExpressionDefault` * labeled alternative in `TrinoSqlParser.valueExpression`. @@ -1078,32 +987,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitConcatenation?: (ctx: ConcatenationContext) => void; - /** - * Enter a parse tree produced by the `basicStringLiteral` - * labeled alternative in `TrinoSqlParser.string`. - * @param ctx the parse tree - */ - enterBasicStringLiteral?: (ctx: BasicStringLiteralContext) => void; - /** - * Exit a parse tree produced by the `basicStringLiteral` - * labeled alternative in `TrinoSqlParser.string`. - * @param ctx the parse tree - */ - exitBasicStringLiteral?: (ctx: BasicStringLiteralContext) => void; - - /** - * Enter a parse tree produced by the `unicodeStringLiteral` - * labeled alternative in `TrinoSqlParser.string`. - * @param ctx the parse tree - */ - enterUnicodeStringLiteral?: (ctx: UnicodeStringLiteralContext) => void; - /** - * Exit a parse tree produced by the `unicodeStringLiteral` - * labeled alternative in `TrinoSqlParser.string`. - * @param ctx the parse tree - */ - exitUnicodeStringLiteral?: (ctx: UnicodeStringLiteralContext) => void; - /** * Enter a parse tree produced by the `quantifiedPrimary` * labeled alternative in `TrinoSqlParser.rowPattern`. @@ -1182,45 +1065,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitCurrentRoleGrantor?: (ctx: CurrentRoleGrantorContext) => void; - /** - * Enter a parse tree produced by the `unspecifiedPrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - */ - enterUnspecifiedPrincipal?: (ctx: UnspecifiedPrincipalContext) => void; - /** - * Exit a parse tree produced by the `unspecifiedPrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - */ - exitUnspecifiedPrincipal?: (ctx: UnspecifiedPrincipalContext) => void; - - /** - * Enter a parse tree produced by the `userPrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - */ - enterUserPrincipal?: (ctx: UserPrincipalContext) => void; - /** - * Exit a parse tree produced by the `userPrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - */ - exitUserPrincipal?: (ctx: UserPrincipalContext) => void; - - /** - * Enter a parse tree produced by the `rolePrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - */ - enterRolePrincipal?: (ctx: RolePrincipalContext) => void; - /** - * Exit a parse tree produced by the `rolePrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - */ - exitRolePrincipal?: (ctx: RolePrincipalContext) => void; - /** * Enter a parse tree produced by the `unboundedFrame` * labeled alternative in `TrinoSqlParser.frameBound`. @@ -1260,6 +1104,760 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitBoundedFrame?: (ctx: BoundedFrameContext) => void; + /** + * Enter a parse tree produced by the `queryPrimaryDefault` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + enterQueryPrimaryDefault?: (ctx: QueryPrimaryDefaultContext) => void; + /** + * Exit a parse tree produced by the `queryPrimaryDefault` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + exitQueryPrimaryDefault?: (ctx: QueryPrimaryDefaultContext) => void; + + /** + * Enter a parse tree produced by the `table` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + enterTable?: (ctx: TableContext) => void; + /** + * Exit a parse tree produced by the `table` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + exitTable?: (ctx: TableContext) => void; + + /** + * Enter a parse tree produced by the `inlineTable` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + enterInlineTable?: (ctx: InlineTableContext) => void; + /** + * Exit a parse tree produced by the `inlineTable` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + exitInlineTable?: (ctx: InlineTableContext) => void; + + /** + * Enter a parse tree produced by the `subquery` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + enterSubquery?: (ctx: SubqueryContext) => void; + /** + * Exit a parse tree produced by the `subquery` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + */ + exitSubquery?: (ctx: SubqueryContext) => void; + + /** + * Enter a parse tree produced by the `nullLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterNullLiteral?: (ctx: NullLiteralContext) => void; + /** + * Exit a parse tree produced by the `nullLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitNullLiteral?: (ctx: NullLiteralContext) => void; + + /** + * Enter a parse tree produced by the `intervalLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterIntervalLiteral?: (ctx: IntervalLiteralContext) => void; + /** + * Exit a parse tree produced by the `intervalLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitIntervalLiteral?: (ctx: IntervalLiteralContext) => void; + + /** + * Enter a parse tree produced by the `typeConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterTypeConstructor?: (ctx: TypeConstructorContext) => void; + /** + * Exit a parse tree produced by the `typeConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitTypeConstructor?: (ctx: TypeConstructorContext) => void; + + /** + * Enter a parse tree produced by the `numericLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterNumericLiteral?: (ctx: NumericLiteralContext) => void; + /** + * Exit a parse tree produced by the `numericLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitNumericLiteral?: (ctx: NumericLiteralContext) => void; + + /** + * Enter a parse tree produced by the `booleanLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Exit a parse tree produced by the `booleanLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + + /** + * Enter a parse tree produced by the `stringLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterStringLiteral?: (ctx: StringLiteralContext) => void; + /** + * Exit a parse tree produced by the `stringLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitStringLiteral?: (ctx: StringLiteralContext) => void; + + /** + * Enter a parse tree produced by the `binaryLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterBinaryLiteral?: (ctx: BinaryLiteralContext) => void; + /** + * Exit a parse tree produced by the `binaryLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitBinaryLiteral?: (ctx: BinaryLiteralContext) => void; + + /** + * Enter a parse tree produced by the `parameter` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterParameter?: (ctx: ParameterContext) => void; + /** + * Exit a parse tree produced by the `parameter` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitParameter?: (ctx: ParameterContext) => void; + + /** + * Enter a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterPosition?: (ctx: PositionContext) => void; + /** + * Exit a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitPosition?: (ctx: PositionContext) => void; + + /** + * Enter a parse tree produced by the `rowConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterRowConstructor?: (ctx: RowConstructorContext) => void; + /** + * Exit a parse tree produced by the `rowConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitRowConstructor?: (ctx: RowConstructorContext) => void; + + /** + * Enter a parse tree produced by the `functionCall` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterFunctionCall?: (ctx: FunctionCallContext) => void; + /** + * Exit a parse tree produced by the `functionCall` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitFunctionCall?: (ctx: FunctionCallContext) => void; + + /** + * Enter a parse tree produced by the `measure` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterMeasure?: (ctx: MeasureContext) => void; + /** + * Exit a parse tree produced by the `measure` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitMeasure?: (ctx: MeasureContext) => void; + + /** + * Enter a parse tree produced by the `lambda` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterLambda?: (ctx: LambdaContext) => void; + /** + * Exit a parse tree produced by the `lambda` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitLambda?: (ctx: LambdaContext) => void; + + /** + * Enter a parse tree produced by the `subqueryExpression` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; + /** + * Exit a parse tree produced by the `subqueryExpression` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; + + /** + * Enter a parse tree produced by the `exists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterExists?: (ctx: ExistsContext) => void; + /** + * Exit a parse tree produced by the `exists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitExists?: (ctx: ExistsContext) => void; + + /** + * Enter a parse tree produced by the `simpleCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSimpleCase?: (ctx: SimpleCaseContext) => void; + /** + * Exit a parse tree produced by the `simpleCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSimpleCase?: (ctx: SimpleCaseContext) => void; + + /** + * Enter a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSearchedCase?: (ctx: SearchedCaseContext) => void; + /** + * Exit a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSearchedCase?: (ctx: SearchedCaseContext) => void; + + /** + * Enter a parse tree produced by the `cast` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCast?: (ctx: CastContext) => void; + /** + * Exit a parse tree produced by the `cast` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCast?: (ctx: CastContext) => void; + + /** + * Enter a parse tree produced by the `arrayConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterArrayConstructor?: (ctx: ArrayConstructorContext) => void; + /** + * Exit a parse tree produced by the `arrayConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitArrayConstructor?: (ctx: ArrayConstructorContext) => void; + + /** + * Enter a parse tree produced by the `subscript` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSubscript?: (ctx: SubscriptContext) => void; + /** + * Exit a parse tree produced by the `subscript` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSubscript?: (ctx: SubscriptContext) => void; + + /** + * Enter a parse tree produced by the `columnReference` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterColumnReference?: (ctx: ColumnReferenceContext) => void; + /** + * Exit a parse tree produced by the `columnReference` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitColumnReference?: (ctx: ColumnReferenceContext) => void; + + /** + * Enter a parse tree produced by the `dereference` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterDereference?: (ctx: DereferenceContext) => void; + /** + * Exit a parse tree produced by the `dereference` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitDereference?: (ctx: DereferenceContext) => void; + + /** + * Enter a parse tree produced by the `specialDateTimeFunction` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; + /** + * Exit a parse tree produced by the `specialDateTimeFunction` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; + + /** + * Enter a parse tree produced by the `currentUser` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentUser?: (ctx: CurrentUserContext) => void; + /** + * Exit a parse tree produced by the `currentUser` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentUser?: (ctx: CurrentUserContext) => void; + + /** + * Enter a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + /** + * Exit a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + + /** + * Enter a parse tree produced by the `currentSchema` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentSchema?: (ctx: CurrentSchemaContext) => void; + /** + * Exit a parse tree produced by the `currentSchema` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentSchema?: (ctx: CurrentSchemaContext) => void; + + /** + * Enter a parse tree produced by the `currentPath` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentPath?: (ctx: CurrentPathContext) => void; + /** + * Exit a parse tree produced by the `currentPath` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentPath?: (ctx: CurrentPathContext) => void; + + /** + * Enter a parse tree produced by the `substring` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSubstring?: (ctx: SubstringContext) => void; + /** + * Exit a parse tree produced by the `substring` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSubstring?: (ctx: SubstringContext) => void; + + /** + * Enter a parse tree produced by the `normalize` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterNormalize?: (ctx: NormalizeContext) => void; + /** + * Exit a parse tree produced by the `normalize` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitNormalize?: (ctx: NormalizeContext) => void; + + /** + * Enter a parse tree produced by the `extract` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterExtract?: (ctx: ExtractContext) => void; + /** + * Exit a parse tree produced by the `extract` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitExtract?: (ctx: ExtractContext) => void; + + /** + * Enter a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Exit a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + + /** + * Enter a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterGroupingOperation?: (ctx: GroupingOperationContext) => void; + /** + * Exit a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitGroupingOperation?: (ctx: GroupingOperationContext) => void; + + /** + * Enter a parse tree produced by the `selectSingle` + * labeled alternative in `TrinoSqlParser.selectItem`. + * @param ctx the parse tree + */ + enterSelectSingle?: (ctx: SelectSingleContext) => void; + /** + * Exit a parse tree produced by the `selectSingle` + * labeled alternative in `TrinoSqlParser.selectItem`. + * @param ctx the parse tree + */ + exitSelectSingle?: (ctx: SelectSingleContext) => void; + + /** + * Enter a parse tree produced by the `selectAll` + * labeled alternative in `TrinoSqlParser.selectItem`. + * @param ctx the parse tree + */ + enterSelectAll?: (ctx: SelectAllContext) => void; + /** + * Exit a parse tree produced by the `selectAll` + * labeled alternative in `TrinoSqlParser.selectItem`. + * @param ctx the parse tree + */ + exitSelectAll?: (ctx: SelectAllContext) => void; + + /** + * Enter a parse tree produced by the `qualifiedArgument` + * labeled alternative in `TrinoSqlParser.pathElement`. + * @param ctx the parse tree + */ + enterQualifiedArgument?: (ctx: QualifiedArgumentContext) => void; + /** + * Exit a parse tree produced by the `qualifiedArgument` + * labeled alternative in `TrinoSqlParser.pathElement`. + * @param ctx the parse tree + */ + exitQualifiedArgument?: (ctx: QualifiedArgumentContext) => void; + + /** + * Enter a parse tree produced by the `unqualifiedArgument` + * labeled alternative in `TrinoSqlParser.pathElement`. + * @param ctx the parse tree + */ + enterUnqualifiedArgument?: (ctx: UnqualifiedArgumentContext) => void; + /** + * Exit a parse tree produced by the `unqualifiedArgument` + * labeled alternative in `TrinoSqlParser.pathElement`. + * @param ctx the parse tree + */ + exitUnqualifiedArgument?: (ctx: UnqualifiedArgumentContext) => void; + + /** + * Enter a parse tree produced by the `positionalArgument` + * labeled alternative in `TrinoSqlParser.callArgument`. + * @param ctx the parse tree + */ + enterPositionalArgument?: (ctx: PositionalArgumentContext) => void; + /** + * Exit a parse tree produced by the `positionalArgument` + * labeled alternative in `TrinoSqlParser.callArgument`. + * @param ctx the parse tree + */ + exitPositionalArgument?: (ctx: PositionalArgumentContext) => void; + + /** + * Enter a parse tree produced by the `namedArgument` + * labeled alternative in `TrinoSqlParser.callArgument`. + * @param ctx the parse tree + */ + enterNamedArgument?: (ctx: NamedArgumentContext) => void; + /** + * Exit a parse tree produced by the `namedArgument` + * labeled alternative in `TrinoSqlParser.callArgument`. + * @param ctx the parse tree + */ + exitNamedArgument?: (ctx: NamedArgumentContext) => void; + + /** + * Enter a parse tree produced by the `mergeUpdate` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + */ + enterMergeUpdate?: (ctx: MergeUpdateContext) => void; + /** + * Exit a parse tree produced by the `mergeUpdate` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + */ + exitMergeUpdate?: (ctx: MergeUpdateContext) => void; + + /** + * Enter a parse tree produced by the `mergeDelete` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + */ + enterMergeDelete?: (ctx: MergeDeleteContext) => void; + /** + * Exit a parse tree produced by the `mergeDelete` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + */ + exitMergeDelete?: (ctx: MergeDeleteContext) => void; + + /** + * Enter a parse tree produced by the `mergeInsert` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + */ + enterMergeInsert?: (ctx: MergeInsertContext) => void; + /** + * Exit a parse tree produced by the `mergeInsert` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + */ + exitMergeInsert?: (ctx: MergeInsertContext) => void; + + /** + * Enter a parse tree produced by the `zeroOrMoreQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + enterZeroOrMoreQuantifier?: (ctx: ZeroOrMoreQuantifierContext) => void; + /** + * Exit a parse tree produced by the `zeroOrMoreQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + exitZeroOrMoreQuantifier?: (ctx: ZeroOrMoreQuantifierContext) => void; + + /** + * Enter a parse tree produced by the `oneOrMoreQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + enterOneOrMoreQuantifier?: (ctx: OneOrMoreQuantifierContext) => void; + /** + * Exit a parse tree produced by the `oneOrMoreQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + exitOneOrMoreQuantifier?: (ctx: OneOrMoreQuantifierContext) => void; + + /** + * Enter a parse tree produced by the `zeroOrOneQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + enterZeroOrOneQuantifier?: (ctx: ZeroOrOneQuantifierContext) => void; + /** + * Exit a parse tree produced by the `zeroOrOneQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + exitZeroOrOneQuantifier?: (ctx: ZeroOrOneQuantifierContext) => void; + + /** + * Enter a parse tree produced by the `rangeQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + enterRangeQuantifier?: (ctx: RangeQuantifierContext) => void; + /** + * Exit a parse tree produced by the `rangeQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + */ + exitRangeQuantifier?: (ctx: RangeQuantifierContext) => void; + + /** + * Enter a parse tree produced by the `readUncommitted` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + enterReadUncommitted?: (ctx: ReadUncommittedContext) => void; + /** + * Exit a parse tree produced by the `readUncommitted` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + exitReadUncommitted?: (ctx: ReadUncommittedContext) => void; + + /** + * Enter a parse tree produced by the `readCommitted` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + enterReadCommitted?: (ctx: ReadCommittedContext) => void; + /** + * Exit a parse tree produced by the `readCommitted` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + exitReadCommitted?: (ctx: ReadCommittedContext) => void; + + /** + * Enter a parse tree produced by the `repeatableRead` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + enterRepeatableRead?: (ctx: RepeatableReadContext) => void; + /** + * Exit a parse tree produced by the `repeatableRead` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + exitRepeatableRead?: (ctx: RepeatableReadContext) => void; + + /** + * Enter a parse tree produced by the `serializable` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + enterSerializable?: (ctx: SerializableContext) => void; + /** + * Exit a parse tree produced by the `serializable` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + */ + exitSerializable?: (ctx: SerializableContext) => void; + + /** + * Enter a parse tree produced by the `basicStringLiteral` + * labeled alternative in `TrinoSqlParser.string`. + * @param ctx the parse tree + */ + enterBasicStringLiteral?: (ctx: BasicStringLiteralContext) => void; + /** + * Exit a parse tree produced by the `basicStringLiteral` + * labeled alternative in `TrinoSqlParser.string`. + * @param ctx the parse tree + */ + exitBasicStringLiteral?: (ctx: BasicStringLiteralContext) => void; + + /** + * Enter a parse tree produced by the `unicodeStringLiteral` + * labeled alternative in `TrinoSqlParser.string`. + * @param ctx the parse tree + */ + enterUnicodeStringLiteral?: (ctx: UnicodeStringLiteralContext) => void; + /** + * Exit a parse tree produced by the `unicodeStringLiteral` + * labeled alternative in `TrinoSqlParser.string`. + * @param ctx the parse tree + */ + exitUnicodeStringLiteral?: (ctx: UnicodeStringLiteralContext) => void; + + /** + * Enter a parse tree produced by the `unspecifiedPrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + */ + enterUnspecifiedPrincipal?: (ctx: UnspecifiedPrincipalContext) => void; + /** + * Exit a parse tree produced by the `unspecifiedPrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + */ + exitUnspecifiedPrincipal?: (ctx: UnspecifiedPrincipalContext) => void; + + /** + * Enter a parse tree produced by the `userPrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + */ + enterUserPrincipal?: (ctx: UserPrincipalContext) => void; + /** + * Exit a parse tree produced by the `userPrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + */ + exitUserPrincipal?: (ctx: UserPrincipalContext) => void; + + /** + * Enter a parse tree produced by the `rolePrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + */ + enterRolePrincipal?: (ctx: RolePrincipalContext) => void; + /** + * Exit a parse tree produced by the `rolePrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + */ + exitRolePrincipal?: (ctx: RolePrincipalContext) => void; + /** * Enter a parse tree produced by the `statementDefault` * labeled alternative in `TrinoSqlParser.statement`. @@ -2222,474 +2820,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitTimeZoneString?: (ctx: TimeZoneStringContext) => void; - /** - * Enter a parse tree produced by the `queryPrimaryDefault` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - enterQueryPrimaryDefault?: (ctx: QueryPrimaryDefaultContext) => void; - /** - * Exit a parse tree produced by the `queryPrimaryDefault` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - exitQueryPrimaryDefault?: (ctx: QueryPrimaryDefaultContext) => void; - - /** - * Enter a parse tree produced by the `table` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - enterTable?: (ctx: TableContext) => void; - /** - * Exit a parse tree produced by the `table` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - exitTable?: (ctx: TableContext) => void; - - /** - * Enter a parse tree produced by the `inlineTable` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - enterInlineTable?: (ctx: InlineTableContext) => void; - /** - * Exit a parse tree produced by the `inlineTable` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - exitInlineTable?: (ctx: InlineTableContext) => void; - - /** - * Enter a parse tree produced by the `subquery` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - enterSubquery?: (ctx: SubqueryContext) => void; - /** - * Exit a parse tree produced by the `subquery` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - */ - exitSubquery?: (ctx: SubqueryContext) => void; - - /** - * Enter a parse tree produced by the `nullLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterNullLiteral?: (ctx: NullLiteralContext) => void; - /** - * Exit a parse tree produced by the `nullLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitNullLiteral?: (ctx: NullLiteralContext) => void; - - /** - * Enter a parse tree produced by the `intervalLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterIntervalLiteral?: (ctx: IntervalLiteralContext) => void; - /** - * Exit a parse tree produced by the `intervalLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitIntervalLiteral?: (ctx: IntervalLiteralContext) => void; - - /** - * Enter a parse tree produced by the `typeConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterTypeConstructor?: (ctx: TypeConstructorContext) => void; - /** - * Exit a parse tree produced by the `typeConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitTypeConstructor?: (ctx: TypeConstructorContext) => void; - - /** - * Enter a parse tree produced by the `numericLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterNumericLiteral?: (ctx: NumericLiteralContext) => void; - /** - * Exit a parse tree produced by the `numericLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitNumericLiteral?: (ctx: NumericLiteralContext) => void; - - /** - * Enter a parse tree produced by the `booleanLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterBooleanLiteral?: (ctx: BooleanLiteralContext) => void; - /** - * Exit a parse tree produced by the `booleanLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; - - /** - * Enter a parse tree produced by the `stringLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterStringLiteral?: (ctx: StringLiteralContext) => void; - /** - * Exit a parse tree produced by the `stringLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitStringLiteral?: (ctx: StringLiteralContext) => void; - - /** - * Enter a parse tree produced by the `binaryLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterBinaryLiteral?: (ctx: BinaryLiteralContext) => void; - /** - * Exit a parse tree produced by the `binaryLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitBinaryLiteral?: (ctx: BinaryLiteralContext) => void; - - /** - * Enter a parse tree produced by the `parameter` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterParameter?: (ctx: ParameterContext) => void; - /** - * Exit a parse tree produced by the `parameter` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitParameter?: (ctx: ParameterContext) => void; - - /** - * Enter a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterPosition?: (ctx: PositionContext) => void; - /** - * Exit a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitPosition?: (ctx: PositionContext) => void; - - /** - * Enter a parse tree produced by the `rowConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterRowConstructor?: (ctx: RowConstructorContext) => void; - /** - * Exit a parse tree produced by the `rowConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitRowConstructor?: (ctx: RowConstructorContext) => void; - - /** - * Enter a parse tree produced by the `functionCall` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterFunctionCall?: (ctx: FunctionCallContext) => void; - /** - * Exit a parse tree produced by the `functionCall` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitFunctionCall?: (ctx: FunctionCallContext) => void; - - /** - * Enter a parse tree produced by the `measure` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterMeasure?: (ctx: MeasureContext) => void; - /** - * Exit a parse tree produced by the `measure` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitMeasure?: (ctx: MeasureContext) => void; - - /** - * Enter a parse tree produced by the `lambda` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterLambda?: (ctx: LambdaContext) => void; - /** - * Exit a parse tree produced by the `lambda` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitLambda?: (ctx: LambdaContext) => void; - - /** - * Enter a parse tree produced by the `subqueryExpression` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; - /** - * Exit a parse tree produced by the `subqueryExpression` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitSubqueryExpression?: (ctx: SubqueryExpressionContext) => void; - - /** - * Enter a parse tree produced by the `exists` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterExists?: (ctx: ExistsContext) => void; - /** - * Exit a parse tree produced by the `exists` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitExists?: (ctx: ExistsContext) => void; - - /** - * Enter a parse tree produced by the `simpleCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterSimpleCase?: (ctx: SimpleCaseContext) => void; - /** - * Exit a parse tree produced by the `simpleCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitSimpleCase?: (ctx: SimpleCaseContext) => void; - - /** - * Enter a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterSearchedCase?: (ctx: SearchedCaseContext) => void; - /** - * Exit a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitSearchedCase?: (ctx: SearchedCaseContext) => void; - - /** - * Enter a parse tree produced by the `cast` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterCast?: (ctx: CastContext) => void; - /** - * Exit a parse tree produced by the `cast` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitCast?: (ctx: CastContext) => void; - - /** - * Enter a parse tree produced by the `arrayConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterArrayConstructor?: (ctx: ArrayConstructorContext) => void; - /** - * Exit a parse tree produced by the `arrayConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitArrayConstructor?: (ctx: ArrayConstructorContext) => void; - - /** - * Enter a parse tree produced by the `subscript` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterSubscript?: (ctx: SubscriptContext) => void; - /** - * Exit a parse tree produced by the `subscript` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitSubscript?: (ctx: SubscriptContext) => void; - - /** - * Enter a parse tree produced by the `columnReference` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterColumnReference?: (ctx: ColumnReferenceContext) => void; - /** - * Exit a parse tree produced by the `columnReference` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitColumnReference?: (ctx: ColumnReferenceContext) => void; - - /** - * Enter a parse tree produced by the `dereference` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterDereference?: (ctx: DereferenceContext) => void; - /** - * Exit a parse tree produced by the `dereference` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitDereference?: (ctx: DereferenceContext) => void; - - /** - * Enter a parse tree produced by the `specialDateTimeFunction` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; - /** - * Exit a parse tree produced by the `specialDateTimeFunction` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; - - /** - * Enter a parse tree produced by the `currentUser` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterCurrentUser?: (ctx: CurrentUserContext) => void; - /** - * Exit a parse tree produced by the `currentUser` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitCurrentUser?: (ctx: CurrentUserContext) => void; - - /** - * Enter a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterCurrentCatalog?: (ctx: CurrentCatalogContext) => void; - /** - * Exit a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitCurrentCatalog?: (ctx: CurrentCatalogContext) => void; - - /** - * Enter a parse tree produced by the `currentSchema` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterCurrentSchema?: (ctx: CurrentSchemaContext) => void; - /** - * Exit a parse tree produced by the `currentSchema` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitCurrentSchema?: (ctx: CurrentSchemaContext) => void; - - /** - * Enter a parse tree produced by the `currentPath` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterCurrentPath?: (ctx: CurrentPathContext) => void; - /** - * Exit a parse tree produced by the `currentPath` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitCurrentPath?: (ctx: CurrentPathContext) => void; - - /** - * Enter a parse tree produced by the `substring` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterSubstring?: (ctx: SubstringContext) => void; - /** - * Exit a parse tree produced by the `substring` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitSubstring?: (ctx: SubstringContext) => void; - - /** - * Enter a parse tree produced by the `normalize` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterNormalize?: (ctx: NormalizeContext) => void; - /** - * Exit a parse tree produced by the `normalize` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitNormalize?: (ctx: NormalizeContext) => void; - - /** - * Enter a parse tree produced by the `extract` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterExtract?: (ctx: ExtractContext) => void; - /** - * Exit a parse tree produced by the `extract` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitExtract?: (ctx: ExtractContext) => void; - - /** - * Enter a parse tree produced by the `parenthesizedExpression` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; - /** - * Exit a parse tree produced by the `parenthesizedExpression` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; - - /** - * Enter a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - enterGroupingOperation?: (ctx: GroupingOperationContext) => void; - /** - * Exit a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - */ - exitGroupingOperation?: (ctx: GroupingOperationContext) => void; - /** * Enter a parse tree produced by the `isolationLevel` * labeled alternative in `TrinoSqlParser.transactionMode`. @@ -2716,32 +2846,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitTransactionAccessMode?: (ctx: TransactionAccessModeContext) => void; - /** - * Enter a parse tree produced by the `selectSingle` - * labeled alternative in `TrinoSqlParser.selectItem`. - * @param ctx the parse tree - */ - enterSelectSingle?: (ctx: SelectSingleContext) => void; - /** - * Exit a parse tree produced by the `selectSingle` - * labeled alternative in `TrinoSqlParser.selectItem`. - * @param ctx the parse tree - */ - exitSelectSingle?: (ctx: SelectSingleContext) => void; - - /** - * Enter a parse tree produced by the `selectAll` - * labeled alternative in `TrinoSqlParser.selectItem`. - * @param ctx the parse tree - */ - enterSelectAll?: (ctx: SelectAllContext) => void; - /** - * Exit a parse tree produced by the `selectAll` - * labeled alternative in `TrinoSqlParser.selectItem`. - * @param ctx the parse tree - */ - exitSelectAll?: (ctx: SelectAllContext) => void; - /** * Enter a parse tree produced by the `predicated` * labeled alternative in `TrinoSqlParser.booleanExpression`. @@ -2781,97 +2885,6 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; - /** - * Enter a parse tree produced by the `qualifiedArgument` - * labeled alternative in `TrinoSqlParser.pathElement`. - * @param ctx the parse tree - */ - enterQualifiedArgument?: (ctx: QualifiedArgumentContext) => void; - /** - * Exit a parse tree produced by the `qualifiedArgument` - * labeled alternative in `TrinoSqlParser.pathElement`. - * @param ctx the parse tree - */ - exitQualifiedArgument?: (ctx: QualifiedArgumentContext) => void; - - /** - * Enter a parse tree produced by the `unqualifiedArgument` - * labeled alternative in `TrinoSqlParser.pathElement`. - * @param ctx the parse tree - */ - enterUnqualifiedArgument?: (ctx: UnqualifiedArgumentContext) => void; - /** - * Exit a parse tree produced by the `unqualifiedArgument` - * labeled alternative in `TrinoSqlParser.pathElement`. - * @param ctx the parse tree - */ - exitUnqualifiedArgument?: (ctx: UnqualifiedArgumentContext) => void; - - /** - * Enter a parse tree produced by the `positionalArgument` - * labeled alternative in `TrinoSqlParser.callArgument`. - * @param ctx the parse tree - */ - enterPositionalArgument?: (ctx: PositionalArgumentContext) => void; - /** - * Exit a parse tree produced by the `positionalArgument` - * labeled alternative in `TrinoSqlParser.callArgument`. - * @param ctx the parse tree - */ - exitPositionalArgument?: (ctx: PositionalArgumentContext) => void; - - /** - * Enter a parse tree produced by the `namedArgument` - * labeled alternative in `TrinoSqlParser.callArgument`. - * @param ctx the parse tree - */ - enterNamedArgument?: (ctx: NamedArgumentContext) => void; - /** - * Exit a parse tree produced by the `namedArgument` - * labeled alternative in `TrinoSqlParser.callArgument`. - * @param ctx the parse tree - */ - exitNamedArgument?: (ctx: NamedArgumentContext) => void; - - /** - * Enter a parse tree produced by the `mergeUpdate` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - */ - enterMergeUpdate?: (ctx: MergeUpdateContext) => void; - /** - * Exit a parse tree produced by the `mergeUpdate` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - */ - exitMergeUpdate?: (ctx: MergeUpdateContext) => void; - - /** - * Enter a parse tree produced by the `mergeDelete` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - */ - enterMergeDelete?: (ctx: MergeDeleteContext) => void; - /** - * Exit a parse tree produced by the `mergeDelete` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - */ - exitMergeDelete?: (ctx: MergeDeleteContext) => void; - - /** - * Enter a parse tree produced by the `mergeInsert` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - */ - enterMergeInsert?: (ctx: MergeInsertContext) => void; - /** - * Exit a parse tree produced by the `mergeInsert` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - */ - exitMergeInsert?: (ctx: MergeInsertContext) => void; - /** * Enter a parse tree produced by `TrinoSqlParser.program`. * @param ctx the parse tree @@ -3785,6 +3798,149 @@ export interface TrinoSqlListener extends ParseTreeListener { */ exitPrivilege?: (ctx: PrivilegeContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * @param ctx the parse tree + */ + enterTableOrViewName?: (ctx: TableOrViewNameContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * @param ctx the parse tree + */ + exitTableOrViewName?: (ctx: TableOrViewNameContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.tableName`. + * @param ctx the parse tree + */ + enterTableName?: (ctx: TableNameContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableName`. + * @param ctx the parse tree + */ + exitTableName?: (ctx: TableNameContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * @param ctx the parse tree + */ + enterTableNameCreate?: (ctx: TableNameCreateContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * @param ctx the parse tree + */ + exitTableNameCreate?: (ctx: TableNameCreateContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.viewName`. + * @param ctx the parse tree + */ + enterViewName?: (ctx: ViewNameContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.viewName`. + * @param ctx the parse tree + */ + exitViewName?: (ctx: ViewNameContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * @param ctx the parse tree + */ + enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * @param ctx the parse tree + */ + exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.tablePath`. + * @param ctx the parse tree + */ + enterTablePath?: (ctx: TablePathContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tablePath`. + * @param ctx the parse tree + */ + exitTablePath?: (ctx: TablePathContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.viewPath`. + * @param ctx the parse tree + */ + enterViewPath?: (ctx: ViewPathContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.viewPath`. + * @param ctx the parse tree + */ + exitViewPath?: (ctx: ViewPathContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.schemaName`. + * @param ctx the parse tree + */ + enterSchemaName?: (ctx: SchemaNameContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.schemaName`. + * @param ctx the parse tree + */ + exitSchemaName?: (ctx: SchemaNameContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.schemaNameCreate`. + * @param ctx the parse tree + */ + enterSchemaNameCreate?: (ctx: SchemaNameCreateContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.schemaNameCreate`. + * @param ctx the parse tree + */ + exitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.schemaPath`. + * @param ctx the parse tree + */ + enterSchemaPath?: (ctx: SchemaPathContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.schemaPath`. + * @param ctx the parse tree + */ + exitSchemaPath?: (ctx: SchemaPathContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.catalogName`. + * @param ctx the parse tree + */ + enterCatalogName?: (ctx: CatalogNameContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.catalogName`. + * @param ctx the parse tree + */ + exitCatalogName?: (ctx: CatalogNameContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.catalogNameCreate`. + * @param ctx the parse tree + */ + enterCatalogNameCreate?: (ctx: CatalogNameCreateContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.catalogNameCreate`. + * @param ctx the parse tree + */ + exitCatalogNameCreate?: (ctx: CatalogNameCreateContext) => void; + + /** + * Enter a parse tree produced by `TrinoSqlParser.functionName`. + * @param ctx the parse tree + */ + enterFunctionName?: (ctx: FunctionNameContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionName`. + * @param ctx the parse tree + */ + exitFunctionName?: (ctx: FunctionNameContext) => void; + /** * Enter a parse tree produced by `TrinoSqlParser.qualifiedName`. * @param ctx the parse tree diff --git a/src/lib/trinosql/TrinoSqlParser.ts b/src/lib/trinosql/TrinoSqlParser.ts index 9a08a7a..51333fc 100644 --- a/src/lib/trinosql/TrinoSqlParser.ts +++ b/src/lib/trinosql/TrinoSqlParser.ts @@ -1,4 +1,4 @@ -// Generated from /Users/ziv/github.com/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT +// Generated from /Users/hayden/Desktop/dt-works/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT import { ATN } from "antlr4ts/atn/ATN"; @@ -44,238 +44,238 @@ export class TrinoSqlParser extends Parser { public static readonly T__13 = 14; public static readonly T__14 = 15; public static readonly T__15 = 16; - public static readonly ADD = 17; - public static readonly ADMIN = 18; - public static readonly AFTER = 19; - public static readonly ALL = 20; - public static readonly ALTER = 21; - public static readonly ANALYZE = 22; - public static readonly AND = 23; - public static readonly ANY = 24; - public static readonly ARRAY = 25; - public static readonly AS = 26; - public static readonly ASC = 27; - public static readonly AT = 28; - public static readonly AUTHORIZATION = 29; - public static readonly BERNOULLI = 30; - public static readonly BETWEEN = 31; - public static readonly BY = 32; - public static readonly CALL = 33; - public static readonly CASCADE = 34; - public static readonly CASE = 35; - public static readonly CAST = 36; - public static readonly CATALOGS = 37; - public static readonly COLUMN = 38; - public static readonly COLUMNS = 39; - public static readonly COMMENT = 40; - public static readonly COMMIT = 41; - public static readonly COMMITTED = 42; - public static readonly CONSTRAINT = 43; - public static readonly CREATE = 44; - public static readonly CROSS = 45; - public static readonly CUBE = 46; - public static readonly CURRENT = 47; - public static readonly CURRENT_CATALOG = 48; - public static readonly CURRENT_DATE = 49; - public static readonly CURRENT_PATH = 50; - public static readonly CURRENT_ROLE = 51; - public static readonly CURRENT_SCHEMA = 52; - public static readonly CURRENT_TIME = 53; - public static readonly CURRENT_TIMESTAMP = 54; - public static readonly CURRENT_USER = 55; - public static readonly DATA = 56; - public static readonly DATE = 57; - public static readonly DAY = 58; - public static readonly DEFAULT = 59; - public static readonly DEALLOCATE = 60; - public static readonly DEFINER = 61; - public static readonly DELETE = 62; - public static readonly DESC = 63; - public static readonly DESCRIBE = 64; - public static readonly DEFINE = 65; - public static readonly DISTINCT = 66; - public static readonly DISTRIBUTED = 67; - public static readonly DOUBLE = 68; - public static readonly DROP = 69; - public static readonly ELSE = 70; - public static readonly EMPTY = 71; - public static readonly END = 72; - public static readonly ESCAPE = 73; - public static readonly EXCEPT = 74; - public static readonly EXCLUDING = 75; - public static readonly EXECUTE = 76; - public static readonly EXISTS = 77; - public static readonly EXPLAIN = 78; - public static readonly EXTRACT = 79; - public static readonly FALSE = 80; - public static readonly FETCH = 81; - public static readonly FILTER = 82; - public static readonly FINAL = 83; - public static readonly FIRST = 84; - public static readonly FOLLOWING = 85; - public static readonly FOR = 86; - public static readonly FORMAT = 87; - public static readonly FROM = 88; - public static readonly FULL = 89; - public static readonly FUNCTIONS = 90; - public static readonly GRANT = 91; - public static readonly GRANTED = 92; - public static readonly GRANTS = 93; - public static readonly DENY = 94; - public static readonly GRAPHVIZ = 95; - public static readonly GROUP = 96; - public static readonly GROUPING = 97; - public static readonly GROUPS = 98; - public static readonly HAVING = 99; - public static readonly HOUR = 100; - public static readonly IF = 101; - public static readonly IGNORE = 102; - public static readonly IN = 103; - public static readonly INCLUDING = 104; - public static readonly INITIAL = 105; - public static readonly INNER = 106; - public static readonly INPUT = 107; - public static readonly INSERT = 108; - public static readonly INTERSECT = 109; - public static readonly INTERVAL = 110; - public static readonly INTO = 111; - public static readonly INVOKER = 112; - public static readonly IO = 113; - public static readonly IS = 114; - public static readonly ISOLATION = 115; - public static readonly JOIN = 116; - public static readonly JSON = 117; - public static readonly LAST = 118; - public static readonly LATERAL = 119; - public static readonly LEFT = 120; - public static readonly LEVEL = 121; - public static readonly LIKE = 122; - public static readonly LIMIT = 123; - public static readonly LOCAL = 124; - public static readonly LOCALTIME = 125; - public static readonly LOCALTIMESTAMP = 126; - public static readonly LOGICAL = 127; - public static readonly MAP = 128; - public static readonly MATCH = 129; - public static readonly MATCHED = 130; - public static readonly MATCHES = 131; - public static readonly MATCH_RECOGNIZE = 132; - public static readonly MATERIALIZED = 133; - public static readonly MEASURES = 134; - public static readonly MERGE = 135; - public static readonly MINUTE = 136; - public static readonly MONTH = 137; - public static readonly NATURAL = 138; - public static readonly NEXT = 139; - public static readonly NFC = 140; - public static readonly NFD = 141; - public static readonly NFKC = 142; - public static readonly NFKD = 143; - public static readonly NO = 144; - public static readonly NONE = 145; - public static readonly NORMALIZE = 146; - public static readonly NOT = 147; - public static readonly NULL = 148; - public static readonly NULLIF = 149; - public static readonly NULLS = 150; - public static readonly OFFSET = 151; - public static readonly OMIT = 152; - public static readonly ON = 153; - public static readonly ONE = 154; - public static readonly ONLY = 155; - public static readonly OPTION = 156; - public static readonly OR = 157; - public static readonly ORDER = 158; - public static readonly ORDINALITY = 159; - public static readonly OUTER = 160; - public static readonly OUTPUT = 161; - public static readonly OVER = 162; - public static readonly PARTITION = 163; - public static readonly PARTITIONS = 164; - public static readonly PAST = 165; - public static readonly PATH = 166; - public static readonly PATTERN = 167; - public static readonly PER = 168; - public static readonly PERMUTE = 169; - public static readonly POSITION = 170; - public static readonly PRECEDING = 171; - public static readonly PRECISION = 172; - public static readonly PREPARE = 173; - public static readonly PRIVILEGES = 174; - public static readonly PROPERTIES = 175; - public static readonly RANGE = 176; - public static readonly READ = 177; - public static readonly RECURSIVE = 178; - public static readonly REFRESH = 179; - public static readonly RENAME = 180; - public static readonly REPEATABLE = 181; - public static readonly REPLACE = 182; - public static readonly RESET = 183; - public static readonly RESPECT = 184; - public static readonly RESTRICT = 185; - public static readonly REVOKE = 186; - public static readonly RIGHT = 187; - public static readonly ROLE = 188; - public static readonly ROLES = 189; - public static readonly ROLLBACK = 190; - public static readonly ROLLUP = 191; - public static readonly ROW = 192; - public static readonly ROWS = 193; - public static readonly RUNNING = 194; - public static readonly SCHEMA = 195; - public static readonly SCHEMAS = 196; - public static readonly SECOND = 197; - public static readonly SECURITY = 198; - public static readonly SEEK = 199; - public static readonly SELECT = 200; - public static readonly SERIALIZABLE = 201; - public static readonly SESSION = 202; - public static readonly SET = 203; - public static readonly SETS = 204; - public static readonly SHOW = 205; - public static readonly SOME = 206; - public static readonly START = 207; - public static readonly STATS = 208; - public static readonly SUBSET = 209; - public static readonly SUBSTRING = 210; - public static readonly SYSTEM = 211; - public static readonly TABLE = 212; - public static readonly TABLES = 213; - public static readonly TABLESAMPLE = 214; - public static readonly TEXT = 215; - public static readonly THEN = 216; - public static readonly TIES = 217; - public static readonly TIME = 218; - public static readonly TIMESTAMP = 219; - public static readonly TO = 220; - public static readonly TRANSACTION = 221; - public static readonly TRUNCATE = 222; - public static readonly TRUE = 223; - public static readonly TRY_CAST = 224; - public static readonly TYPE = 225; - public static readonly UESCAPE = 226; - public static readonly UNBOUNDED = 227; - public static readonly UNCOMMITTED = 228; - public static readonly UNION = 229; - public static readonly UNMATCHED = 230; - public static readonly UNNEST = 231; - public static readonly UPDATE = 232; - public static readonly USE = 233; - public static readonly USER = 234; - public static readonly USING = 235; - public static readonly VALIDATE = 236; - public static readonly VALUES = 237; - public static readonly VERBOSE = 238; - public static readonly VIEW = 239; - public static readonly WHEN = 240; - public static readonly WHERE = 241; - public static readonly WINDOW = 242; - public static readonly WITH = 243; - public static readonly WITHOUT = 244; - public static readonly WORK = 245; - public static readonly WRITE = 246; - public static readonly YEAR = 247; - public static readonly ZONE = 248; + public static readonly KW_ADD = 17; + public static readonly KW_ADMIN = 18; + public static readonly KW_AFTER = 19; + public static readonly KW_ALL = 20; + public static readonly KW_ALTER = 21; + public static readonly KW_ANALYZE = 22; + public static readonly KW_AND = 23; + public static readonly KW_ANY = 24; + public static readonly KW_ARRAY = 25; + public static readonly KW_AS = 26; + public static readonly KW_ASC = 27; + public static readonly KW_AT = 28; + public static readonly KW_AUTHORIZATION = 29; + public static readonly KW_BERNOULLI = 30; + public static readonly KW_BETWEEN = 31; + public static readonly KW_BY = 32; + public static readonly KW_CALL = 33; + public static readonly KW_CASCADE = 34; + public static readonly KW_CASE = 35; + public static readonly KW_CAST = 36; + public static readonly KW_CATALOGS = 37; + public static readonly KW_COLUMN = 38; + public static readonly KW_COLUMNS = 39; + public static readonly KW_COMMENT = 40; + public static readonly KW_COMMIT = 41; + public static readonly KW_COMMITTED = 42; + public static readonly KW_CONSTRAINT = 43; + public static readonly KW_CREATE = 44; + public static readonly KW_CROSS = 45; + public static readonly KW_CUBE = 46; + public static readonly KW_CURRENT = 47; + public static readonly KW_CURRENT_CATALOG = 48; + public static readonly KW_CURRENT_DATE = 49; + public static readonly KW_CURRENT_PATH = 50; + public static readonly KW_CURRENT_ROLE = 51; + public static readonly KW_CURRENT_SCHEMA = 52; + public static readonly KW_CURRENT_TIME = 53; + public static readonly KW_CURRENT_TIMESTAMP = 54; + public static readonly KW_CURRENT_USER = 55; + public static readonly KW_DATA = 56; + public static readonly KW_DATE = 57; + public static readonly KW_DAY = 58; + public static readonly KW_DEFAULT = 59; + public static readonly KW_DEALLOCATE = 60; + public static readonly KW_DEFINER = 61; + public static readonly KW_DELETE = 62; + public static readonly KW_DESC = 63; + public static readonly KW_DESCRIBE = 64; + public static readonly KW_DEFINE = 65; + public static readonly KW_DISTINCT = 66; + public static readonly KW_DISTRIBUTED = 67; + public static readonly KW_DOUBLE = 68; + public static readonly KW_DROP = 69; + public static readonly KW_ELSE = 70; + public static readonly KW_EMPTY = 71; + public static readonly KW_END = 72; + public static readonly KW_ESCAPE = 73; + public static readonly KW_EXCEPT = 74; + public static readonly KW_EXCLUDING = 75; + public static readonly KW_EXECUTE = 76; + public static readonly KW_EXISTS = 77; + public static readonly KW_EXPLAIN = 78; + public static readonly KW_EXTRACT = 79; + public static readonly KW_FALSE = 80; + public static readonly KW_FETCH = 81; + public static readonly KW_FILTER = 82; + public static readonly KW_FINAL = 83; + public static readonly KW_FIRST = 84; + public static readonly KW_FOLLOWING = 85; + public static readonly KW_FOR = 86; + public static readonly KW_FORMAT = 87; + public static readonly KW_FROM = 88; + public static readonly KW_FULL = 89; + public static readonly KW_FUNCTIONS = 90; + public static readonly KW_GRANT = 91; + public static readonly KW_GRANTED = 92; + public static readonly KW_GRANTS = 93; + public static readonly KW_DENY = 94; + public static readonly KW_GRAPHVIZ = 95; + public static readonly KW_GROUP = 96; + public static readonly KW_GROUPING = 97; + public static readonly KW_GROUPS = 98; + public static readonly KW_HAVING = 99; + public static readonly KW_HOUR = 100; + public static readonly KW_IF = 101; + public static readonly KW_IGNORE = 102; + public static readonly KW_IN = 103; + public static readonly KW_INCLUDING = 104; + public static readonly KW_INITIAL = 105; + public static readonly KW_INNER = 106; + public static readonly KW_INPUT = 107; + public static readonly KW_INSERT = 108; + public static readonly KW_INTERSECT = 109; + public static readonly KW_INTERVAL = 110; + public static readonly KW_INTO = 111; + public static readonly KW_INVOKER = 112; + public static readonly KW_IO = 113; + public static readonly KW_IS = 114; + public static readonly KW_ISOLATION = 115; + public static readonly KW_JOIN = 116; + public static readonly KW_JSON = 117; + public static readonly KW_LAST = 118; + public static readonly KW_LATERAL = 119; + public static readonly KW_LEFT = 120; + public static readonly KW_LEVEL = 121; + public static readonly KW_LIKE = 122; + public static readonly KW_LIMIT = 123; + public static readonly KW_LOCAL = 124; + public static readonly KW_LOCALTIME = 125; + public static readonly KW_LOCALTIMESTAMP = 126; + public static readonly KW_LOGICAL = 127; + public static readonly KW_MAP = 128; + public static readonly KW_MATCH = 129; + public static readonly KW_MATCHED = 130; + public static readonly KW_MATCHES = 131; + public static readonly KW_MATCH_RECOGNIZE = 132; + public static readonly KW_MATERIALIZED = 133; + public static readonly KW_MEASURES = 134; + public static readonly KW_MERGE = 135; + public static readonly KW_MINUTE = 136; + public static readonly KW_MONTH = 137; + public static readonly KW_NATURAL = 138; + public static readonly KW_NEXT = 139; + public static readonly KW_NFC = 140; + public static readonly KW_NFD = 141; + public static readonly KW_NFKC = 142; + public static readonly KW_NFKD = 143; + public static readonly KW_NO = 144; + public static readonly KW_NONE = 145; + public static readonly KW_NORMALIZE = 146; + public static readonly KW_NOT = 147; + public static readonly KW_NULL = 148; + public static readonly KW_NULLIF = 149; + public static readonly KW_NULLS = 150; + public static readonly KW_OFFSET = 151; + public static readonly KW_OMIT = 152; + public static readonly KW_ON = 153; + public static readonly KW_ONE = 154; + public static readonly KW_ONLY = 155; + public static readonly KW_OPTION = 156; + public static readonly KW_OR = 157; + public static readonly KW_ORDER = 158; + public static readonly KW_ORDINALITY = 159; + public static readonly KW_OUTER = 160; + public static readonly KW_OUTPUT = 161; + public static readonly KW_OVER = 162; + public static readonly KW_PARTITION = 163; + public static readonly KW_PARTITIONS = 164; + public static readonly KW_PAST = 165; + public static readonly KW_PATH = 166; + public static readonly KW_PATTERN = 167; + public static readonly KW_PER = 168; + public static readonly KW_PERMUTE = 169; + public static readonly KW_POSITION = 170; + public static readonly KW_PRECEDING = 171; + public static readonly KW_PRECISION = 172; + public static readonly KW_PREPARE = 173; + public static readonly KW_PRIVILEGES = 174; + public static readonly KW_PROPERTIES = 175; + public static readonly KW_RANGE = 176; + public static readonly KW_READ = 177; + public static readonly KW_RECURSIVE = 178; + public static readonly KW_REFRESH = 179; + public static readonly KW_RENAME = 180; + public static readonly KW_REPEATABLE = 181; + public static readonly KW_REPLACE = 182; + public static readonly KW_RESET = 183; + public static readonly KW_RESPECT = 184; + public static readonly KW_RESTRICT = 185; + public static readonly KW_REVOKE = 186; + public static readonly KW_RIGHT = 187; + public static readonly KW_ROLE = 188; + public static readonly KW_ROLES = 189; + public static readonly KW_ROLLBACK = 190; + public static readonly KW_ROLLUP = 191; + public static readonly KW_ROW = 192; + public static readonly KW_ROWS = 193; + public static readonly KW_RUNNING = 194; + public static readonly KW_SCHEMA = 195; + public static readonly KW_SCHEMAS = 196; + public static readonly KW_SECOND = 197; + public static readonly KW_SECURITY = 198; + public static readonly KW_SEEK = 199; + public static readonly KW_SELECT = 200; + public static readonly KW_SERIALIZABLE = 201; + public static readonly KW_SESSION = 202; + public static readonly KW_SET = 203; + public static readonly KW_SETS = 204; + public static readonly KW_SHOW = 205; + public static readonly KW_SOME = 206; + public static readonly KW_START = 207; + public static readonly KW_STATS = 208; + public static readonly KW_SUBSET = 209; + public static readonly KW_SUBSTRING = 210; + public static readonly KW_SYSTEM = 211; + public static readonly KW_TABLE = 212; + public static readonly KW_TABLES = 213; + public static readonly KW_TABLESAMPLE = 214; + public static readonly KW_TEXT = 215; + public static readonly KW_THEN = 216; + public static readonly KW_TIES = 217; + public static readonly KW_TIME = 218; + public static readonly KW_TIMESTAMP = 219; + public static readonly KW_TO = 220; + public static readonly KW_TRANSACTION = 221; + public static readonly KW_TRUNCATE = 222; + public static readonly KW_TRUE = 223; + public static readonly KW_TRY_CAST = 224; + public static readonly KW_TYPE = 225; + public static readonly KW_UESCAPE = 226; + public static readonly KW_UNBOUNDED = 227; + public static readonly KW_UNCOMMITTED = 228; + public static readonly KW_UNION = 229; + public static readonly KW_UNMATCHED = 230; + public static readonly KW_UNNEST = 231; + public static readonly KW_UPDATE = 232; + public static readonly KW_USE = 233; + public static readonly KW_USER = 234; + public static readonly KW_USING = 235; + public static readonly KW_VALIDATE = 236; + public static readonly KW_VALUES = 237; + public static readonly KW_VERBOSE = 238; + public static readonly KW_VIEW = 239; + public static readonly KW_WHEN = 240; + public static readonly KW_WHERE = 241; + public static readonly KW_WINDOW = 242; + public static readonly KW_WITH = 243; + public static readonly KW_WITHOUT = 244; + public static readonly KW_WORK = 245; + public static readonly KW_WRITE = 246; + public static readonly KW_YEAR = 247; + public static readonly KW_ZONE = 248; public static readonly EQ = 249; public static readonly NEQ = 250; public static readonly LT = 251; @@ -388,13 +388,26 @@ export class TrinoSqlParser extends Parser { public static readonly RULE_pathElement = 80; public static readonly RULE_pathSpecification = 81; public static readonly RULE_privilege = 82; - public static readonly RULE_qualifiedName = 83; - public static readonly RULE_grantor = 84; - public static readonly RULE_principal = 85; - public static readonly RULE_roles = 86; - public static readonly RULE_identifier = 87; - public static readonly RULE_number = 88; - public static readonly RULE_nonReserved = 89; + public static readonly RULE_tableOrViewName = 83; + public static readonly RULE_tableName = 84; + public static readonly RULE_tableNameCreate = 85; + public static readonly RULE_viewName = 86; + public static readonly RULE_viewNameCreate = 87; + public static readonly RULE_tablePath = 88; + public static readonly RULE_viewPath = 89; + public static readonly RULE_schemaName = 90; + public static readonly RULE_schemaNameCreate = 91; + public static readonly RULE_schemaPath = 92; + public static readonly RULE_catalogName = 93; + public static readonly RULE_catalogNameCreate = 94; + public static readonly RULE_functionName = 95; + public static readonly RULE_qualifiedName = 96; + public static readonly RULE_grantor = 97; + public static readonly RULE_principal = 98; + public static readonly RULE_roles = 99; + public static readonly RULE_identifier = 100; + public static readonly RULE_number = 101; + public static readonly RULE_nonReserved = 102; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "program", "statements", "singleStatement", "standaloneExpression", "standalonePathSpecification", @@ -414,12 +427,14 @@ export class TrinoSqlParser extends Parser { "over", "windowFrame", "frameExtent", "frameBound", "rowPattern", "patternPrimary", "patternQuantifier", "updateAssignment", "explainOption", "transactionMode", "levelOfIsolation", "callArgument", "pathElement", "pathSpecification", - "privilege", "qualifiedName", "grantor", "principal", "roles", "identifier", - "number", "nonReserved", + "privilege", "tableOrViewName", "tableName", "tableNameCreate", "viewName", + "viewNameCreate", "tablePath", "viewPath", "schemaName", "schemaNameCreate", + "schemaPath", "catalogName", "catalogNameCreate", "functionName", "qualifiedName", + "grantor", "principal", "roles", "identifier", "number", "nonReserved", ]; private static readonly _LITERAL_NAMES: Array = [ - undefined, "'.'", "'('", "')'", "','", "'SKIP'", "'->'", "'['", "']'", + undefined, "'('", "')'", "','", "'.'", "'SKIP'", "'->'", "'['", "']'", "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", "'=>'", "'ADD'", "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", "'BERNOULLI'", "'BETWEEN'", @@ -465,43 +480,51 @@ export class TrinoSqlParser extends Parser { private static readonly _SYMBOLIC_NAMES: Array = [ undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, "ADD", "ADMIN", "AFTER", "ALL", "ALTER", - "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "AT", "AUTHORIZATION", - "BERNOULLI", "BETWEEN", "BY", "CALL", "CASCADE", "CASE", "CAST", "CATALOGS", - "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "CONSTRAINT", "CREATE", - "CROSS", "CUBE", "CURRENT", "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_PATH", - "CURRENT_ROLE", "CURRENT_SCHEMA", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DATA", "DATE", "DAY", "DEFAULT", "DEALLOCATE", "DEFINER", - "DELETE", "DESC", "DESCRIBE", "DEFINE", "DISTINCT", "DISTRIBUTED", "DOUBLE", - "DROP", "ELSE", "EMPTY", "END", "ESCAPE", "EXCEPT", "EXCLUDING", "EXECUTE", - "EXISTS", "EXPLAIN", "EXTRACT", "FALSE", "FETCH", "FILTER", "FINAL", "FIRST", - "FOLLOWING", "FOR", "FORMAT", "FROM", "FULL", "FUNCTIONS", "GRANT", "GRANTED", - "GRANTS", "DENY", "GRAPHVIZ", "GROUP", "GROUPING", "GROUPS", "HAVING", - "HOUR", "IF", "IGNORE", "IN", "INCLUDING", "INITIAL", "INNER", "INPUT", - "INSERT", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IO", "IS", "ISOLATION", - "JOIN", "JSON", "LAST", "LATERAL", "LEFT", "LEVEL", "LIKE", "LIMIT", "LOCAL", - "LOCALTIME", "LOCALTIMESTAMP", "LOGICAL", "MAP", "MATCH", "MATCHED", "MATCHES", - "MATCH_RECOGNIZE", "MATERIALIZED", "MEASURES", "MERGE", "MINUTE", "MONTH", - "NATURAL", "NEXT", "NFC", "NFD", "NFKC", "NFKD", "NO", "NONE", "NORMALIZE", - "NOT", "NULL", "NULLIF", "NULLS", "OFFSET", "OMIT", "ON", "ONE", "ONLY", - "OPTION", "OR", "ORDER", "ORDINALITY", "OUTER", "OUTPUT", "OVER", "PARTITION", - "PARTITIONS", "PAST", "PATH", "PATTERN", "PER", "PERMUTE", "POSITION", - "PRECEDING", "PRECISION", "PREPARE", "PRIVILEGES", "PROPERTIES", "RANGE", - "READ", "RECURSIVE", "REFRESH", "RENAME", "REPEATABLE", "REPLACE", "RESET", - "RESPECT", "RESTRICT", "REVOKE", "RIGHT", "ROLE", "ROLES", "ROLLBACK", - "ROLLUP", "ROW", "ROWS", "RUNNING", "SCHEMA", "SCHEMAS", "SECOND", "SECURITY", - "SEEK", "SELECT", "SERIALIZABLE", "SESSION", "SET", "SETS", "SHOW", "SOME", - "START", "STATS", "SUBSET", "SUBSTRING", "SYSTEM", "TABLE", "TABLES", - "TABLESAMPLE", "TEXT", "THEN", "TIES", "TIME", "TIMESTAMP", "TO", "TRANSACTION", - "TRUNCATE", "TRUE", "TRY_CAST", "TYPE", "UESCAPE", "UNBOUNDED", "UNCOMMITTED", - "UNION", "UNMATCHED", "UNNEST", "UPDATE", "USE", "USER", "USING", "VALIDATE", - "VALUES", "VERBOSE", "VIEW", "WHEN", "WHERE", "WINDOW", "WITH", "WITHOUT", - "WORK", "WRITE", "YEAR", "ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", - "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", - "STRING", "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", - "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", - "BACKQUOTED_IDENTIFIER", "SEMICOLON", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "WS", "UNRECOGNIZED", "DELIMITER", + undefined, undefined, undefined, "KW_ADD", "KW_ADMIN", "KW_AFTER", "KW_ALL", + "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", + "KW_AT", "KW_AUTHORIZATION", "KW_BERNOULLI", "KW_BETWEEN", "KW_BY", "KW_CALL", + "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", + "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", + "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", + "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", + "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", "KW_DATE", "KW_DAY", + "KW_DEFAULT", "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", "KW_DESC", "KW_DESCRIBE", + "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DOUBLE", "KW_DROP", + "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", "KW_FETCH", + "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", "KW_FOR", "KW_FORMAT", + "KW_FROM", "KW_FULL", "KW_FUNCTIONS", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", + "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", + "KW_HOUR", "KW_IF", "KW_IGNORE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", + "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", + "KW_LAST", "KW_LATERAL", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", + "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", + "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", "KW_NEXT", + "KW_NFC", "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", + "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", "KW_OMIT", + "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", "KW_ORDINALITY", + "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", "KW_PARTITIONS", "KW_PAST", + "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", "KW_POSITION", "KW_PRECEDING", + "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", "KW_RANGE", + "KW_READ", "KW_RECURSIVE", "KW_REFRESH", "KW_RENAME", "KW_REPEATABLE", + "KW_REPLACE", "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", + "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", "KW_ROLLUP", "KW_ROW", "KW_ROWS", + "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", + "KW_SELECT", "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", + "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", + "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", "KW_TRUE", + "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", "KW_UNCOMMITTED", + "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", "KW_USE", "KW_USER", + "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", "KW_VIEW", "KW_WHEN", + "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", "KW_WORK", "KW_WRITE", + "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", + "ASTERISK", "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", + "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", + "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SEMICOLON", + "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", "DELIMITER", ]; public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(TrinoSqlParser._LITERAL_NAMES, TrinoSqlParser._SYMBOLIC_NAMES, []); @@ -537,21 +560,21 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 183; + this.state = 209; this._errHandler.sync(this); _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.T__9) | (1 << TrinoSqlParser.T__10) | (1 << TrinoSqlParser.T__11) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ALTER) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CREATE - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEALLOCATE - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DELETE - 33)) | (1 << (TrinoSqlParser.DESC - 33)) | (1 << (TrinoSqlParser.DESCRIBE - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.DROP - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXECUTE - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INSERT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PREPARE - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SELECT - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLE - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VALUES - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITH - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.T__9) | (1 << TrinoSqlParser.T__10) | (1 << TrinoSqlParser.T__11) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ALTER) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CREATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEALLOCATE - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DELETE - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)) | (1 << (TrinoSqlParser.KW_DESCRIBE - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_DROP - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXECUTE - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INSERT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PREPARE - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SELECT - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLE - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VALUES - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITH - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { { - this.state = 180; + this.state = 206; this.statements(); } } - this.state = 185; + this.state = 211; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 186; + this.state = 212; this.match(TrinoSqlParser.EOF); } } @@ -574,13 +597,13 @@ export class TrinoSqlParser extends Parser { let _localctx: StatementsContext = new StatementsContext(this._ctx, this.state); this.enterRule(_localctx, 2, TrinoSqlParser.RULE_statements); try { - this.state = 193; + this.state = 219; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 1, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 188; + this.state = 214; this.singleStatement(); } break; @@ -588,7 +611,7 @@ export class TrinoSqlParser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 189; + this.state = 215; this.standaloneExpression(); } break; @@ -596,7 +619,7 @@ export class TrinoSqlParser extends Parser { case 3: this.enterOuterAlt(_localctx, 3); { - this.state = 190; + this.state = 216; this.standalonePathSpecification(); } break; @@ -604,7 +627,7 @@ export class TrinoSqlParser extends Parser { case 4: this.enterOuterAlt(_localctx, 4); { - this.state = 191; + this.state = 217; this.standaloneType(); } break; @@ -612,7 +635,7 @@ export class TrinoSqlParser extends Parser { case 5: this.enterOuterAlt(_localctx, 5); { - this.state = 192; + this.state = 218; this.standaloneRowPattern(); } break; @@ -640,14 +663,14 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 195; + this.state = 221; this.statement(); - this.state = 197; + this.state = 223; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.SEMICOLON) { { - this.state = 196; + this.state = 222; this.match(TrinoSqlParser.SEMICOLON); } } @@ -676,14 +699,14 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 199; + this.state = 225; this.expression(); - this.state = 201; + this.state = 227; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.SEMICOLON) { { - this.state = 200; + this.state = 226; this.match(TrinoSqlParser.SEMICOLON); } } @@ -712,14 +735,14 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 203; + this.state = 229; this.pathSpecification(); - this.state = 205; + this.state = 231; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.SEMICOLON) { { - this.state = 204; + this.state = 230; this.match(TrinoSqlParser.SEMICOLON); } } @@ -748,14 +771,14 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 207; + this.state = 233; this.type(0); - this.state = 209; + this.state = 235; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.SEMICOLON) { { - this.state = 208; + this.state = 234; this.match(TrinoSqlParser.SEMICOLON); } } @@ -784,14 +807,14 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 211; + this.state = 237; this.rowPattern(0); - this.state = 213; + this.state = 239; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.SEMICOLON) { { - this.state = 212; + this.state = 238; this.match(TrinoSqlParser.SEMICOLON); } } @@ -818,14 +841,14 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 14, TrinoSqlParser.RULE_statement); let _la: number; try { - this.state = 985; + this.state = 1023; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 111, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 117, this._ctx) ) { case 1: _localctx = new StatementDefaultContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 215; + this.state = 241; this.query(); } break; @@ -834,72 +857,57 @@ export class TrinoSqlParser extends Parser { _localctx = new UseContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 216; - this.match(TrinoSqlParser.USE); - this.state = 217; - (_localctx as UseContext)._schema = this.identifier(); + this.state = 242; + this.match(TrinoSqlParser.KW_USE); + this.state = 243; + this.schemaName(); } break; case 3: - _localctx = new UseContext(_localctx); + _localctx = new CreateSchemaContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 218; - this.match(TrinoSqlParser.USE); - this.state = 219; - (_localctx as UseContext)._catalog = this.identifier(); - this.state = 220; - this.match(TrinoSqlParser.T__0); - this.state = 221; - (_localctx as UseContext)._schema = this.identifier(); - } - break; - - case 4: - _localctx = new CreateSchemaContext(_localctx); - this.enterOuterAlt(_localctx, 4); - { - this.state = 223; - this.match(TrinoSqlParser.CREATE); - this.state = 224; - this.match(TrinoSqlParser.SCHEMA); - this.state = 228; + this.state = 244; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 245; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 249; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) { case 1: { - this.state = 225; - this.match(TrinoSqlParser.IF); - this.state = 226; - this.match(TrinoSqlParser.NOT); - this.state = 227; - this.match(TrinoSqlParser.EXISTS); + this.state = 246; + this.match(TrinoSqlParser.KW_IF); + this.state = 247; + this.match(TrinoSqlParser.KW_NOT); + this.state = 248; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 230; - this.qualifiedName(); - this.state = 233; + this.state = 251; + this.schemaNameCreate(); + this.state = 254; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 8, this._ctx) ) { case 1: { - this.state = 231; - this.match(TrinoSqlParser.AUTHORIZATION); - this.state = 232; + this.state = 252; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 253; this.principal(); } break; } - this.state = 237; + this.state = 258; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 9, this._ctx) ) { case 1: { - this.state = 235; - this.match(TrinoSqlParser.WITH); - this.state = 236; + this.state = 256; + this.match(TrinoSqlParser.KW_WITH); + this.state = 257; this.properties(); } break; @@ -907,36 +915,36 @@ export class TrinoSqlParser extends Parser { } break; - case 5: + case 4: _localctx = new DropSchemaContext(_localctx); - this.enterOuterAlt(_localctx, 5); + this.enterOuterAlt(_localctx, 4); { - this.state = 239; - this.match(TrinoSqlParser.DROP); - this.state = 240; - this.match(TrinoSqlParser.SCHEMA); - this.state = 243; + this.state = 260; + this.match(TrinoSqlParser.KW_DROP); + this.state = 261; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 264; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 10, this._ctx) ) { case 1: { - this.state = 241; - this.match(TrinoSqlParser.IF); - this.state = 242; - this.match(TrinoSqlParser.EXISTS); + this.state = 262; + this.match(TrinoSqlParser.KW_IF); + this.state = 263; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 245; - this.qualifiedName(); - this.state = 247; + this.state = 266; + this.schemaName(); + this.state = 268; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 11, this._ctx) ) { case 1: { - this.state = 246; + this.state = 267; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.CASCADE || _la === TrinoSqlParser.RESTRICT)) { + if (!(_la === TrinoSqlParser.KW_CASCADE || _la === TrinoSqlParser.KW_RESTRICT)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -952,144 +960,217 @@ export class TrinoSqlParser extends Parser { } break; - case 6: + case 5: _localctx = new RenameSchemaContext(_localctx); - this.enterOuterAlt(_localctx, 6); + this.enterOuterAlt(_localctx, 5); { - this.state = 249; - this.match(TrinoSqlParser.ALTER); - this.state = 250; - this.match(TrinoSqlParser.SCHEMA); - this.state = 251; - this.qualifiedName(); - this.state = 252; - this.match(TrinoSqlParser.RENAME); - this.state = 253; - this.match(TrinoSqlParser.TO); - this.state = 254; - this.identifier(); + this.state = 270; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 271; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 272; + this.schemaName(); + this.state = 273; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 274; + this.match(TrinoSqlParser.KW_TO); + this.state = 275; + this.schemaNameCreate(); } break; - case 7: + case 6: _localctx = new SetSchemaAuthorizationContext(_localctx); - this.enterOuterAlt(_localctx, 7); + this.enterOuterAlt(_localctx, 6); { - this.state = 256; - this.match(TrinoSqlParser.ALTER); - this.state = 257; - this.match(TrinoSqlParser.SCHEMA); - this.state = 258; - this.qualifiedName(); - this.state = 259; - this.match(TrinoSqlParser.SET); - this.state = 260; - this.match(TrinoSqlParser.AUTHORIZATION); - this.state = 261; + this.state = 277; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 278; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 279; + this.schemaName(); + this.state = 280; + this.match(TrinoSqlParser.KW_SET); + this.state = 281; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 282; this.principal(); } break; - case 8: + case 7: _localctx = new CreateTableAsSelectContext(_localctx); - this.enterOuterAlt(_localctx, 8); + this.enterOuterAlt(_localctx, 7); { - this.state = 263; - this.match(TrinoSqlParser.CREATE); - this.state = 264; - this.match(TrinoSqlParser.TABLE); - this.state = 268; + this.state = 284; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 285; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 289; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { case 1: { - this.state = 265; - this.match(TrinoSqlParser.IF); - this.state = 266; - this.match(TrinoSqlParser.NOT); - this.state = 267; - this.match(TrinoSqlParser.EXISTS); + this.state = 286; + this.match(TrinoSqlParser.KW_IF); + this.state = 287; + this.match(TrinoSqlParser.KW_NOT); + this.state = 288; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 270; - this.qualifiedName(); - this.state = 272; + this.state = 291; + this.tableNameCreate(); + this.state = 293; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.T__1) { + if (_la === TrinoSqlParser.T__0) { { - this.state = 271; + this.state = 292; this.columnAliases(); } } - this.state = 276; + this.state = 297; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.COMMENT) { + if (_la === TrinoSqlParser.KW_COMMENT) { { - this.state = 274; - this.match(TrinoSqlParser.COMMENT); - this.state = 275; + this.state = 295; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 296; this.string(); } } - this.state = 280; + this.state = 301; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.WITH) { + if (_la === TrinoSqlParser.KW_WITH) { { - this.state = 278; - this.match(TrinoSqlParser.WITH); - this.state = 279; + this.state = 299; + this.match(TrinoSqlParser.KW_WITH); + this.state = 300; this.properties(); } } - this.state = 282; - this.match(TrinoSqlParser.AS); - this.state = 288; + this.state = 303; + this.match(TrinoSqlParser.KW_AS); + this.state = 309; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 16, this._ctx) ) { case 1: { - this.state = 283; + this.state = 304; this.query(); } break; case 2: { - this.state = 284; - this.match(TrinoSqlParser.T__1); - this.state = 285; + this.state = 305; + this.match(TrinoSqlParser.T__0); + this.state = 306; this.query(); - this.state = 286; - this.match(TrinoSqlParser.T__2); + this.state = 307; + this.match(TrinoSqlParser.T__1); } break; } - this.state = 295; + this.state = 316; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 18, this._ctx) ) { case 1: { - this.state = 290; - this.match(TrinoSqlParser.WITH); - this.state = 292; + this.state = 311; + this.match(TrinoSqlParser.KW_WITH); + this.state = 313; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NO) { + if (_la === TrinoSqlParser.KW_NO) { { - this.state = 291; - this.match(TrinoSqlParser.NO); + this.state = 312; + this.match(TrinoSqlParser.KW_NO); } } - this.state = 294; - this.match(TrinoSqlParser.DATA); + this.state = 315; + this.match(TrinoSqlParser.KW_DATA); + } + break; + } + } + break; + + case 8: + _localctx = new CreateTableContext(_localctx); + this.enterOuterAlt(_localctx, 8); + { + this.state = 318; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 319; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 323; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 19, this._ctx) ) { + case 1: + { + this.state = 320; + this.match(TrinoSqlParser.KW_IF); + this.state = 321; + this.match(TrinoSqlParser.KW_NOT); + this.state = 322; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 325; + this.tableNameCreate(); + this.state = 326; + this.match(TrinoSqlParser.T__0); + this.state = 327; + this.tableElement(); + this.state = 332; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 328; + this.match(TrinoSqlParser.T__2); + this.state = 329; + this.tableElement(); + } + } + this.state = 334; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 335; + this.match(TrinoSqlParser.T__1); + this.state = 338; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 21, this._ctx) ) { + case 1: + { + this.state = 336; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 337; + this.string(); + } + break; + } + this.state = 342; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) { + case 1: + { + this.state = 340; + this.match(TrinoSqlParser.KW_WITH); + this.state = 341; + this.properties(); } break; } @@ -1097,146 +1178,73 @@ export class TrinoSqlParser extends Parser { break; case 9: - _localctx = new CreateTableContext(_localctx); + _localctx = new DropTableContext(_localctx); this.enterOuterAlt(_localctx, 9); { - this.state = 297; - this.match(TrinoSqlParser.CREATE); - this.state = 298; - this.match(TrinoSqlParser.TABLE); - this.state = 302; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 19, this._ctx) ) { - case 1: - { - this.state = 299; - this.match(TrinoSqlParser.IF); - this.state = 300; - this.match(TrinoSqlParser.NOT); - this.state = 301; - this.match(TrinoSqlParser.EXISTS); - } - break; - } - this.state = 304; - this.qualifiedName(); - this.state = 305; - this.match(TrinoSqlParser.T__1); - this.state = 306; - this.tableElement(); - this.state = 311; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { - { - { - this.state = 307; - this.match(TrinoSqlParser.T__3); - this.state = 308; - this.tableElement(); - } - } - this.state = 313; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 314; - this.match(TrinoSqlParser.T__2); - this.state = 317; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 21, this._ctx) ) { - case 1: - { - this.state = 315; - this.match(TrinoSqlParser.COMMENT); - this.state = 316; - this.string(); - } - break; - } - this.state = 321; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) { - case 1: - { - this.state = 319; - this.match(TrinoSqlParser.WITH); - this.state = 320; - this.properties(); - } - break; - } - } - break; - - case 10: - _localctx = new DropTableContext(_localctx); - this.enterOuterAlt(_localctx, 10); - { - this.state = 323; - this.match(TrinoSqlParser.DROP); - this.state = 324; - this.match(TrinoSqlParser.TABLE); - this.state = 327; + this.state = 344; + this.match(TrinoSqlParser.KW_DROP); + this.state = 345; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 348; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 23, this._ctx) ) { case 1: { - this.state = 325; - this.match(TrinoSqlParser.IF); - this.state = 326; - this.match(TrinoSqlParser.EXISTS); + this.state = 346; + this.match(TrinoSqlParser.KW_IF); + this.state = 347; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 329; - this.qualifiedName(); + this.state = 350; + this.tableName(); } break; - case 11: + case 10: _localctx = new InsertIntoContext(_localctx); - this.enterOuterAlt(_localctx, 11); + this.enterOuterAlt(_localctx, 10); { - this.state = 330; - this.match(TrinoSqlParser.INSERT); - this.state = 331; - this.match(TrinoSqlParser.INTO); - this.state = 332; - this.qualifiedName(); - this.state = 334; + this.state = 351; + this.match(TrinoSqlParser.KW_INSERT); + this.state = 352; + this.match(TrinoSqlParser.KW_INTO); + this.state = 353; + this.tableName(); + this.state = 355; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 24, this._ctx) ) { case 1: { - this.state = 333; + this.state = 354; this.columnAliases(); } break; } - this.state = 336; + this.state = 357; this.query(); } break; - case 12: + case 11: _localctx = new DeleteContext(_localctx); - this.enterOuterAlt(_localctx, 12); + this.enterOuterAlt(_localctx, 11); { - this.state = 338; - this.match(TrinoSqlParser.DELETE); - this.state = 339; - this.match(TrinoSqlParser.FROM); - this.state = 340; - this.qualifiedName(); - this.state = 343; + this.state = 359; + this.match(TrinoSqlParser.KW_DELETE); + this.state = 360; + this.match(TrinoSqlParser.KW_FROM); + this.state = 361; + this.tableName(); + this.state = 364; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.WHERE) { + if (_la === TrinoSqlParser.KW_WHERE) { { - this.state = 341; - this.match(TrinoSqlParser.WHERE); - this.state = 342; + this.state = 362; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 363; this.booleanExpression(0); } } @@ -1244,78 +1252,114 @@ export class TrinoSqlParser extends Parser { } break; - case 13: + case 12: _localctx = new TruncateTableContext(_localctx); - this.enterOuterAlt(_localctx, 13); + this.enterOuterAlt(_localctx, 12); { - this.state = 345; - this.match(TrinoSqlParser.TRUNCATE); - this.state = 346; - this.match(TrinoSqlParser.TABLE); - this.state = 347; - this.qualifiedName(); + this.state = 366; + this.match(TrinoSqlParser.KW_TRUNCATE); + this.state = 367; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 368; + this.tableName(); } break; - case 14: + case 13: _localctx = new RenameTableContext(_localctx); - this.enterOuterAlt(_localctx, 14); + this.enterOuterAlt(_localctx, 13); { - this.state = 348; - this.match(TrinoSqlParser.ALTER); - this.state = 349; - this.match(TrinoSqlParser.TABLE); - this.state = 352; + this.state = 369; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 370; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 373; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) { case 1: { - this.state = 350; - this.match(TrinoSqlParser.IF); - this.state = 351; - this.match(TrinoSqlParser.EXISTS); + this.state = 371; + this.match(TrinoSqlParser.KW_IF); + this.state = 372; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 354; - (_localctx as RenameTableContext)._from = this.qualifiedName(); - this.state = 355; - this.match(TrinoSqlParser.RENAME); - this.state = 356; - this.match(TrinoSqlParser.TO); - this.state = 357; - (_localctx as RenameTableContext)._to = this.qualifiedName(); + this.state = 375; + (_localctx as RenameTableContext)._from = this.tableName(); + this.state = 376; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 377; + this.match(TrinoSqlParser.KW_TO); + this.state = 378; + (_localctx as RenameTableContext)._to = this.tableNameCreate(); } break; - case 15: + case 14: _localctx = new CommentTableContext(_localctx); - this.enterOuterAlt(_localctx, 15); + this.enterOuterAlt(_localctx, 14); { - this.state = 359; - this.match(TrinoSqlParser.COMMENT); - this.state = 360; - this.match(TrinoSqlParser.ON); - this.state = 361; - this.match(TrinoSqlParser.TABLE); - this.state = 362; - this.qualifiedName(); - this.state = 363; - this.match(TrinoSqlParser.IS); - this.state = 366; + this.state = 380; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 381; + this.match(TrinoSqlParser.KW_ON); + this.state = 382; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 383; + this.tableName(); + this.state = 384; + this.match(TrinoSqlParser.KW_IS); + this.state = 387; this._errHandler.sync(this); switch (this._input.LA(1)) { case TrinoSqlParser.STRING: case TrinoSqlParser.UNICODE_STRING: { - this.state = 364; + this.state = 385; this.string(); } break; - case TrinoSqlParser.NULL: + case TrinoSqlParser.KW_NULL: { - this.state = 365; - this.match(TrinoSqlParser.NULL); + this.state = 386; + this.match(TrinoSqlParser.KW_NULL); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + + case 15: + _localctx = new CommentColumnContext(_localctx); + this.enterOuterAlt(_localctx, 15); + { + this.state = 389; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 390; + this.match(TrinoSqlParser.KW_ON); + this.state = 391; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 392; + this.qualifiedName(); + this.state = 393; + this.match(TrinoSqlParser.KW_IS); + this.state = 396; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: + { + this.state = 394; + this.string(); + } + break; + case TrinoSqlParser.KW_NULL: + { + this.state = 395; + this.match(TrinoSqlParser.KW_NULL); } break; default: @@ -1325,274 +1369,238 @@ export class TrinoSqlParser extends Parser { break; case 16: - _localctx = new CommentColumnContext(_localctx); + _localctx = new RenameColumnContext(_localctx); this.enterOuterAlt(_localctx, 16); { - this.state = 368; - this.match(TrinoSqlParser.COMMENT); - this.state = 369; - this.match(TrinoSqlParser.ON); - this.state = 370; - this.match(TrinoSqlParser.COLUMN); - this.state = 371; - this.qualifiedName(); - this.state = 372; - this.match(TrinoSqlParser.IS); - this.state = 375; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case TrinoSqlParser.STRING: - case TrinoSqlParser.UNICODE_STRING: - { - this.state = 373; - this.string(); - } - break; - case TrinoSqlParser.NULL: - { - this.state = 374; - this.match(TrinoSqlParser.NULL); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - - case 17: - _localctx = new RenameColumnContext(_localctx); - this.enterOuterAlt(_localctx, 17); - { - this.state = 377; - this.match(TrinoSqlParser.ALTER); - this.state = 378; - this.match(TrinoSqlParser.TABLE); - this.state = 381; + this.state = 398; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 399; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 402; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 29, this._ctx) ) { case 1: { - this.state = 379; - this.match(TrinoSqlParser.IF); - this.state = 380; - this.match(TrinoSqlParser.EXISTS); + this.state = 400; + this.match(TrinoSqlParser.KW_IF); + this.state = 401; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 383; - (_localctx as RenameColumnContext)._tableName = this.qualifiedName(); - this.state = 384; - this.match(TrinoSqlParser.RENAME); - this.state = 385; - this.match(TrinoSqlParser.COLUMN); - this.state = 388; + this.state = 404; + this.tableName(); + this.state = 405; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 406; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 409; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 30, this._ctx) ) { case 1: { - this.state = 386; - this.match(TrinoSqlParser.IF); - this.state = 387; - this.match(TrinoSqlParser.EXISTS); + this.state = 407; + this.match(TrinoSqlParser.KW_IF); + this.state = 408; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 390; + this.state = 411; (_localctx as RenameColumnContext)._from = this.identifier(); - this.state = 391; - this.match(TrinoSqlParser.TO); - this.state = 392; + this.state = 412; + this.match(TrinoSqlParser.KW_TO); + this.state = 413; (_localctx as RenameColumnContext)._to = this.identifier(); } break; - case 18: + case 17: _localctx = new DropColumnContext(_localctx); - this.enterOuterAlt(_localctx, 18); + this.enterOuterAlt(_localctx, 17); { - this.state = 394; - this.match(TrinoSqlParser.ALTER); - this.state = 395; - this.match(TrinoSqlParser.TABLE); - this.state = 398; + this.state = 415; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 416; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 419; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 31, this._ctx) ) { case 1: { - this.state = 396; - this.match(TrinoSqlParser.IF); - this.state = 397; - this.match(TrinoSqlParser.EXISTS); + this.state = 417; + this.match(TrinoSqlParser.KW_IF); + this.state = 418; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 400; - (_localctx as DropColumnContext)._tableName = this.qualifiedName(); - this.state = 401; - this.match(TrinoSqlParser.DROP); - this.state = 402; - this.match(TrinoSqlParser.COLUMN); - this.state = 405; + this.state = 421; + this.tableName(); + this.state = 422; + this.match(TrinoSqlParser.KW_DROP); + this.state = 423; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 426; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 32, this._ctx) ) { case 1: { - this.state = 403; - this.match(TrinoSqlParser.IF); - this.state = 404; - this.match(TrinoSqlParser.EXISTS); + this.state = 424; + this.match(TrinoSqlParser.KW_IF); + this.state = 425; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 407; + this.state = 428; (_localctx as DropColumnContext)._column = this.qualifiedName(); } break; - case 19: + case 18: _localctx = new AddColumnContext(_localctx); - this.enterOuterAlt(_localctx, 19); + this.enterOuterAlt(_localctx, 18); { - this.state = 409; - this.match(TrinoSqlParser.ALTER); - this.state = 410; - this.match(TrinoSqlParser.TABLE); - this.state = 413; + this.state = 430; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 431; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 434; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 33, this._ctx) ) { case 1: { - this.state = 411; - this.match(TrinoSqlParser.IF); - this.state = 412; - this.match(TrinoSqlParser.EXISTS); + this.state = 432; + this.match(TrinoSqlParser.KW_IF); + this.state = 433; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 415; - (_localctx as AddColumnContext)._tableName = this.qualifiedName(); - this.state = 416; - this.match(TrinoSqlParser.ADD); - this.state = 417; - this.match(TrinoSqlParser.COLUMN); - this.state = 421; + this.state = 436; + this.tableName(); + this.state = 437; + this.match(TrinoSqlParser.KW_ADD); + this.state = 438; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 442; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 34, this._ctx) ) { case 1: { - this.state = 418; - this.match(TrinoSqlParser.IF); - this.state = 419; - this.match(TrinoSqlParser.NOT); - this.state = 420; - this.match(TrinoSqlParser.EXISTS); + this.state = 439; + this.match(TrinoSqlParser.KW_IF); + this.state = 440; + this.match(TrinoSqlParser.KW_NOT); + this.state = 441; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 423; + this.state = 444; (_localctx as AddColumnContext)._column = this.columnDefinition(); } break; - case 20: + case 19: _localctx = new SetTableAuthorizationContext(_localctx); - this.enterOuterAlt(_localctx, 20); + this.enterOuterAlt(_localctx, 19); { - this.state = 425; - this.match(TrinoSqlParser.ALTER); - this.state = 426; - this.match(TrinoSqlParser.TABLE); - this.state = 427; - (_localctx as SetTableAuthorizationContext)._tableName = this.qualifiedName(); - this.state = 428; - this.match(TrinoSqlParser.SET); - this.state = 429; - this.match(TrinoSqlParser.AUTHORIZATION); - this.state = 430; + this.state = 446; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 447; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 448; + this.tableName(); + this.state = 449; + this.match(TrinoSqlParser.KW_SET); + this.state = 450; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 451; this.principal(); } break; - case 21: + case 20: _localctx = new SetTablePropertiesContext(_localctx); - this.enterOuterAlt(_localctx, 21); + this.enterOuterAlt(_localctx, 20); { - this.state = 432; - this.match(TrinoSqlParser.ALTER); - this.state = 433; - this.match(TrinoSqlParser.TABLE); - this.state = 434; - (_localctx as SetTablePropertiesContext)._tableName = this.qualifiedName(); - this.state = 435; - this.match(TrinoSqlParser.SET); - this.state = 436; - this.match(TrinoSqlParser.PROPERTIES); - this.state = 437; + this.state = 453; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 454; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 455; + this.tableName(); + this.state = 456; + this.match(TrinoSqlParser.KW_SET); + this.state = 457; + this.match(TrinoSqlParser.KW_PROPERTIES); + this.state = 458; this.propertyAssignments(); } break; - case 22: + case 21: _localctx = new TableExecuteContext(_localctx); - this.enterOuterAlt(_localctx, 22); + this.enterOuterAlt(_localctx, 21); { - this.state = 439; - this.match(TrinoSqlParser.ALTER); - this.state = 440; - this.match(TrinoSqlParser.TABLE); - this.state = 441; - (_localctx as TableExecuteContext)._tableName = this.qualifiedName(); - this.state = 442; - this.match(TrinoSqlParser.EXECUTE); - this.state = 443; + this.state = 460; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 461; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 462; + this.tableName(); + this.state = 463; + this.match(TrinoSqlParser.KW_EXECUTE); + this.state = 464; (_localctx as TableExecuteContext)._procedureName = this.identifier(); - this.state = 456; + this.state = 477; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 37, this._ctx) ) { case 1: { - this.state = 444; - this.match(TrinoSqlParser.T__1); - this.state = 453; + this.state = 465; + this.match(TrinoSqlParser.T__0); + this.state = 474; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { - this.state = 445; + this.state = 466; this.callArgument(); - this.state = 450; + this.state = 471; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 446; - this.match(TrinoSqlParser.T__3); - this.state = 447; + this.state = 467; + this.match(TrinoSqlParser.T__2); + this.state = 468; this.callArgument(); } } - this.state = 452; + this.state = 473; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 455; - this.match(TrinoSqlParser.T__2); + this.state = 476; + this.match(TrinoSqlParser.T__1); } break; } - this.state = 460; + this.state = 481; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.WHERE) { + if (_la === TrinoSqlParser.KW_WHERE) { { - this.state = 458; - this.match(TrinoSqlParser.WHERE); - this.state = 459; + this.state = 479; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 480; (_localctx as TableExecuteContext)._where = this.booleanExpression(0); } } @@ -1600,22 +1608,22 @@ export class TrinoSqlParser extends Parser { } break; - case 23: + case 22: _localctx = new AnalyzeContext(_localctx); - this.enterOuterAlt(_localctx, 23); + this.enterOuterAlt(_localctx, 22); { - this.state = 462; - this.match(TrinoSqlParser.ANALYZE); - this.state = 463; - this.qualifiedName(); - this.state = 466; + this.state = 483; + this.match(TrinoSqlParser.KW_ANALYZE); + this.state = 484; + this.tableName(); + this.state = 487; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 39, this._ctx) ) { case 1: { - this.state = 464; - this.match(TrinoSqlParser.WITH); - this.state = 465; + this.state = 485; + this.match(TrinoSqlParser.KW_WITH); + this.state = 486; this.properties(); } break; @@ -1623,119 +1631,119 @@ export class TrinoSqlParser extends Parser { } break; - case 24: + case 23: _localctx = new CreateMaterializedViewContext(_localctx); - this.enterOuterAlt(_localctx, 24); + this.enterOuterAlt(_localctx, 23); { - this.state = 468; - this.match(TrinoSqlParser.CREATE); - this.state = 471; + this.state = 489; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 492; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.OR) { + if (_la === TrinoSqlParser.KW_OR) { { - this.state = 469; - this.match(TrinoSqlParser.OR); - this.state = 470; - this.match(TrinoSqlParser.REPLACE); + this.state = 490; + this.match(TrinoSqlParser.KW_OR); + this.state = 491; + this.match(TrinoSqlParser.KW_REPLACE); } } - this.state = 473; - this.match(TrinoSqlParser.MATERIALIZED); - this.state = 474; - this.match(TrinoSqlParser.VIEW); - this.state = 478; + this.state = 494; + this.match(TrinoSqlParser.KW_MATERIALIZED); + this.state = 495; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 499; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 41, this._ctx) ) { case 1: { - this.state = 475; - this.match(TrinoSqlParser.IF); - this.state = 476; - this.match(TrinoSqlParser.NOT); - this.state = 477; - this.match(TrinoSqlParser.EXISTS); + this.state = 496; + this.match(TrinoSqlParser.KW_IF); + this.state = 497; + this.match(TrinoSqlParser.KW_NOT); + this.state = 498; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 480; - this.qualifiedName(); - this.state = 483; + this.state = 501; + this.viewNameCreate(); + this.state = 504; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.COMMENT) { + if (_la === TrinoSqlParser.KW_COMMENT) { { - this.state = 481; - this.match(TrinoSqlParser.COMMENT); - this.state = 482; + this.state = 502; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 503; this.string(); } } - this.state = 487; + this.state = 508; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.WITH) { + if (_la === TrinoSqlParser.KW_WITH) { { - this.state = 485; - this.match(TrinoSqlParser.WITH); - this.state = 486; + this.state = 506; + this.match(TrinoSqlParser.KW_WITH); + this.state = 507; this.properties(); } } - this.state = 489; - this.match(TrinoSqlParser.AS); - this.state = 490; + this.state = 510; + this.match(TrinoSqlParser.KW_AS); + this.state = 511; this.query(); } break; - case 25: + case 24: _localctx = new CreateViewContext(_localctx); - this.enterOuterAlt(_localctx, 25); + this.enterOuterAlt(_localctx, 24); { - this.state = 492; - this.match(TrinoSqlParser.CREATE); - this.state = 495; + this.state = 513; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 516; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.OR) { + if (_la === TrinoSqlParser.KW_OR) { { - this.state = 493; - this.match(TrinoSqlParser.OR); - this.state = 494; - this.match(TrinoSqlParser.REPLACE); + this.state = 514; + this.match(TrinoSqlParser.KW_OR); + this.state = 515; + this.match(TrinoSqlParser.KW_REPLACE); } } - this.state = 497; - this.match(TrinoSqlParser.VIEW); - this.state = 498; - this.qualifiedName(); - this.state = 501; + this.state = 518; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 519; + this.viewNameCreate(); + this.state = 522; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.COMMENT) { + if (_la === TrinoSqlParser.KW_COMMENT) { { - this.state = 499; - this.match(TrinoSqlParser.COMMENT); - this.state = 500; + this.state = 520; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 521; this.string(); } } - this.state = 505; + this.state = 526; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.SECURITY) { + if (_la === TrinoSqlParser.KW_SECURITY) { { - this.state = 503; - this.match(TrinoSqlParser.SECURITY); - this.state = 504; + this.state = 524; + this.match(TrinoSqlParser.KW_SECURITY); + this.state = 525; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.DEFINER || _la === TrinoSqlParser.INVOKER)) { + if (!(_la === TrinoSqlParser.KW_DEFINER || _la === TrinoSqlParser.KW_INVOKER)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -1748,330 +1756,401 @@ export class TrinoSqlParser extends Parser { } } - this.state = 507; - this.match(TrinoSqlParser.AS); - this.state = 508; + this.state = 528; + this.match(TrinoSqlParser.KW_AS); + this.state = 529; this.query(); } break; - case 26: + case 25: _localctx = new RefreshMaterializedViewContext(_localctx); - this.enterOuterAlt(_localctx, 26); + this.enterOuterAlt(_localctx, 25); { - this.state = 510; - this.match(TrinoSqlParser.REFRESH); - this.state = 511; - this.match(TrinoSqlParser.MATERIALIZED); - this.state = 512; - this.match(TrinoSqlParser.VIEW); - this.state = 513; - this.qualifiedName(); + this.state = 531; + this.match(TrinoSqlParser.KW_REFRESH); + this.state = 532; + this.match(TrinoSqlParser.KW_MATERIALIZED); + this.state = 533; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 534; + this.viewName(); } break; - case 27: + case 26: _localctx = new DropMaterializedViewContext(_localctx); - this.enterOuterAlt(_localctx, 27); + this.enterOuterAlt(_localctx, 26); { - this.state = 514; - this.match(TrinoSqlParser.DROP); - this.state = 515; - this.match(TrinoSqlParser.MATERIALIZED); - this.state = 516; - this.match(TrinoSqlParser.VIEW); - this.state = 519; + this.state = 535; + this.match(TrinoSqlParser.KW_DROP); + this.state = 536; + this.match(TrinoSqlParser.KW_MATERIALIZED); + this.state = 537; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 540; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 47, this._ctx) ) { case 1: { - this.state = 517; - this.match(TrinoSqlParser.IF); - this.state = 518; - this.match(TrinoSqlParser.EXISTS); + this.state = 538; + this.match(TrinoSqlParser.KW_IF); + this.state = 539; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 521; - this.qualifiedName(); + this.state = 542; + this.viewName(); } break; - case 28: + case 27: _localctx = new RenameMaterializedViewContext(_localctx); - this.enterOuterAlt(_localctx, 28); + this.enterOuterAlt(_localctx, 27); { - this.state = 522; - this.match(TrinoSqlParser.ALTER); - this.state = 523; - this.match(TrinoSqlParser.MATERIALIZED); - this.state = 524; - this.match(TrinoSqlParser.VIEW); - this.state = 527; + this.state = 543; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 544; + this.match(TrinoSqlParser.KW_MATERIALIZED); + this.state = 545; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 548; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 525; - this.match(TrinoSqlParser.IF); - this.state = 526; - this.match(TrinoSqlParser.EXISTS); + this.state = 546; + this.match(TrinoSqlParser.KW_IF); + this.state = 547; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 529; - (_localctx as RenameMaterializedViewContext)._from = this.qualifiedName(); - this.state = 530; - this.match(TrinoSqlParser.RENAME); - this.state = 531; - this.match(TrinoSqlParser.TO); - this.state = 532; - (_localctx as RenameMaterializedViewContext)._to = this.qualifiedName(); + this.state = 550; + (_localctx as RenameMaterializedViewContext)._from = this.viewName(); + this.state = 551; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 552; + this.match(TrinoSqlParser.KW_TO); + this.state = 553; + (_localctx as RenameMaterializedViewContext)._to = this.viewNameCreate(); } break; - case 29: + case 28: _localctx = new SetMaterializedViewPropertiesContext(_localctx); - this.enterOuterAlt(_localctx, 29); + this.enterOuterAlt(_localctx, 28); { - this.state = 534; - this.match(TrinoSqlParser.ALTER); - this.state = 535; - this.match(TrinoSqlParser.MATERIALIZED); - this.state = 536; - this.match(TrinoSqlParser.VIEW); - this.state = 537; - this.qualifiedName(); - this.state = 538; - this.match(TrinoSqlParser.SET); - this.state = 539; - this.match(TrinoSqlParser.PROPERTIES); - this.state = 540; + this.state = 555; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 556; + this.match(TrinoSqlParser.KW_MATERIALIZED); + this.state = 557; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 558; + this.viewName(); + this.state = 559; + this.match(TrinoSqlParser.KW_SET); + this.state = 560; + this.match(TrinoSqlParser.KW_PROPERTIES); + this.state = 561; this.propertyAssignments(); } break; - case 30: + case 29: _localctx = new DropViewContext(_localctx); - this.enterOuterAlt(_localctx, 30); + this.enterOuterAlt(_localctx, 29); { - this.state = 542; - this.match(TrinoSqlParser.DROP); - this.state = 543; - this.match(TrinoSqlParser.VIEW); - this.state = 546; + this.state = 563; + this.match(TrinoSqlParser.KW_DROP); + this.state = 564; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 567; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 49, this._ctx) ) { case 1: { - this.state = 544; - this.match(TrinoSqlParser.IF); - this.state = 545; - this.match(TrinoSqlParser.EXISTS); + this.state = 565; + this.match(TrinoSqlParser.KW_IF); + this.state = 566; + this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 548; - this.qualifiedName(); + this.state = 569; + this.viewName(); + } + break; + + case 30: + _localctx = new RenameViewContext(_localctx); + this.enterOuterAlt(_localctx, 30); + { + this.state = 570; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 571; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 572; + (_localctx as RenameViewContext)._from = this.viewName(); + this.state = 573; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 574; + this.match(TrinoSqlParser.KW_TO); + this.state = 575; + (_localctx as RenameViewContext)._to = this.viewNameCreate(); } break; case 31: - _localctx = new RenameViewContext(_localctx); + _localctx = new SetViewAuthorizationContext(_localctx); this.enterOuterAlt(_localctx, 31); { - this.state = 549; - this.match(TrinoSqlParser.ALTER); - this.state = 550; - this.match(TrinoSqlParser.VIEW); - this.state = 551; - (_localctx as RenameViewContext)._from = this.qualifiedName(); - this.state = 552; - this.match(TrinoSqlParser.RENAME); - this.state = 553; - this.match(TrinoSqlParser.TO); - this.state = 554; - (_localctx as RenameViewContext)._to = this.qualifiedName(); - } - break; - - case 32: - _localctx = new SetViewAuthorizationContext(_localctx); - this.enterOuterAlt(_localctx, 32); - { - this.state = 556; - this.match(TrinoSqlParser.ALTER); - this.state = 557; - this.match(TrinoSqlParser.VIEW); - this.state = 558; - (_localctx as SetViewAuthorizationContext)._from = this.qualifiedName(); - this.state = 559; - this.match(TrinoSqlParser.SET); - this.state = 560; - this.match(TrinoSqlParser.AUTHORIZATION); - this.state = 561; + this.state = 577; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 578; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 579; + (_localctx as SetViewAuthorizationContext)._from = this.viewName(); + this.state = 580; + this.match(TrinoSqlParser.KW_SET); + this.state = 581; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 582; this.principal(); } break; - case 33: + case 32: _localctx = new CallContext(_localctx); - this.enterOuterAlt(_localctx, 33); + this.enterOuterAlt(_localctx, 32); { - this.state = 563; - this.match(TrinoSqlParser.CALL); - this.state = 564; - this.qualifiedName(); - this.state = 565; - this.match(TrinoSqlParser.T__1); - this.state = 574; + this.state = 584; + this.match(TrinoSqlParser.KW_CALL); + this.state = 585; + this.functionName(); + this.state = 586; + this.match(TrinoSqlParser.T__0); + this.state = 595; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { - this.state = 566; + this.state = 587; this.callArgument(); - this.state = 571; + this.state = 592; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 567; - this.match(TrinoSqlParser.T__3); - this.state = 568; + this.state = 588; + this.match(TrinoSqlParser.T__2); + this.state = 589; this.callArgument(); } } - this.state = 573; + this.state = 594; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 576; - this.match(TrinoSqlParser.T__2); + this.state = 597; + this.match(TrinoSqlParser.T__1); } break; - case 34: + case 33: _localctx = new CreateRoleContext(_localctx); - this.enterOuterAlt(_localctx, 34); + this.enterOuterAlt(_localctx, 33); { - this.state = 578; - this.match(TrinoSqlParser.CREATE); - this.state = 579; - this.match(TrinoSqlParser.ROLE); - this.state = 580; + this.state = 599; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 600; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 601; (_localctx as CreateRoleContext)._name = this.identifier(); - this.state = 584; + this.state = 605; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 52, this._ctx) ) { case 1: { - this.state = 581; - this.match(TrinoSqlParser.WITH); - this.state = 582; - this.match(TrinoSqlParser.ADMIN); - this.state = 583; + this.state = 602; + this.match(TrinoSqlParser.KW_WITH); + this.state = 603; + this.match(TrinoSqlParser.KW_ADMIN); + this.state = 604; this.grantor(); } break; } - this.state = 588; + this.state = 609; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.IN) { + if (_la === TrinoSqlParser.KW_IN) { { - this.state = 586; - this.match(TrinoSqlParser.IN); - this.state = 587; - (_localctx as CreateRoleContext)._catalog = this.identifier(); + this.state = 607; + this.match(TrinoSqlParser.KW_IN); + this.state = 608; + this.catalogName(); } } } break; - case 35: + case 34: _localctx = new DropRoleContext(_localctx); - this.enterOuterAlt(_localctx, 35); + this.enterOuterAlt(_localctx, 34); { - this.state = 590; - this.match(TrinoSqlParser.DROP); - this.state = 591; - this.match(TrinoSqlParser.ROLE); - this.state = 592; + this.state = 611; + this.match(TrinoSqlParser.KW_DROP); + this.state = 612; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 613; (_localctx as DropRoleContext)._name = this.identifier(); } break; - case 36: + case 35: _localctx = new GrantRolesContext(_localctx); - this.enterOuterAlt(_localctx, 36); + this.enterOuterAlt(_localctx, 35); { - this.state = 593; - this.match(TrinoSqlParser.GRANT); - this.state = 594; + this.state = 614; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 615; this.roles(); - this.state = 595; - this.match(TrinoSqlParser.TO); - this.state = 596; + this.state = 616; + this.match(TrinoSqlParser.KW_TO); + this.state = 617; this.principal(); - this.state = 601; + this.state = 622; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 597; - this.match(TrinoSqlParser.T__3); - this.state = 598; + this.state = 618; + this.match(TrinoSqlParser.T__2); + this.state = 619; this.principal(); } } - this.state = 603; + this.state = 624; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 607; + this.state = 628; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 55, this._ctx) ) { case 1: { - this.state = 604; - this.match(TrinoSqlParser.WITH); - this.state = 605; - this.match(TrinoSqlParser.ADMIN); - this.state = 606; - this.match(TrinoSqlParser.OPTION); + this.state = 625; + this.match(TrinoSqlParser.KW_WITH); + this.state = 626; + this.match(TrinoSqlParser.KW_ADMIN); + this.state = 627; + this.match(TrinoSqlParser.KW_OPTION); } break; } - this.state = 612; + this.state = 633; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 56, this._ctx) ) { case 1: { - this.state = 609; - this.match(TrinoSqlParser.GRANTED); - this.state = 610; - this.match(TrinoSqlParser.BY); - this.state = 611; + this.state = 630; + this.match(TrinoSqlParser.KW_GRANTED); + this.state = 631; + this.match(TrinoSqlParser.KW_BY); + this.state = 632; this.grantor(); } break; } - this.state = 616; + this.state = 637; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.IN) { + if (_la === TrinoSqlParser.KW_IN) { { - this.state = 614; - this.match(TrinoSqlParser.IN); - this.state = 615; - (_localctx as GrantRolesContext)._catalog = this.identifier(); + this.state = 635; + this.match(TrinoSqlParser.KW_IN); + this.state = 636; + this.catalogName(); + } + } + + } + break; + + case 36: + _localctx = new RevokeRolesContext(_localctx); + this.enterOuterAlt(_localctx, 36); + { + this.state = 639; + this.match(TrinoSqlParser.KW_REVOKE); + this.state = 643; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 58, this._ctx) ) { + case 1: + { + this.state = 640; + this.match(TrinoSqlParser.KW_ADMIN); + this.state = 641; + this.match(TrinoSqlParser.KW_OPTION); + this.state = 642; + this.match(TrinoSqlParser.KW_FOR); + } + break; + } + this.state = 645; + this.roles(); + this.state = 646; + this.match(TrinoSqlParser.KW_FROM); + this.state = 647; + this.principal(); + this.state = 652; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 648; + this.match(TrinoSqlParser.T__2); + this.state = 649; + this.principal(); + } + } + this.state = 654; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 658; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 60, this._ctx) ) { + case 1: + { + this.state = 655; + this.match(TrinoSqlParser.KW_GRANTED); + this.state = 656; + this.match(TrinoSqlParser.KW_BY); + this.state = 657; + this.grantor(); + } + break; + } + this.state = 662; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_IN) { + { + this.state = 660; + this.match(TrinoSqlParser.KW_IN); + this.state = 661; + this.catalogName(); } } @@ -2079,70 +2158,46 @@ export class TrinoSqlParser extends Parser { break; case 37: - _localctx = new RevokeRolesContext(_localctx); + _localctx = new SetRoleContext(_localctx); this.enterOuterAlt(_localctx, 37); { - this.state = 618; - this.match(TrinoSqlParser.REVOKE); - this.state = 622; + this.state = 664; + this.match(TrinoSqlParser.KW_SET); + this.state = 665; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 669; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 58, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 62, this._ctx) ) { case 1: { - this.state = 619; - this.match(TrinoSqlParser.ADMIN); - this.state = 620; - this.match(TrinoSqlParser.OPTION); - this.state = 621; - this.match(TrinoSqlParser.FOR); + this.state = 666; + this.match(TrinoSqlParser.KW_ALL); + } + break; + + case 2: + { + this.state = 667; + this.match(TrinoSqlParser.KW_NONE); + } + break; + + case 3: + { + this.state = 668; + (_localctx as SetRoleContext)._role = this.identifier(); } break; } - this.state = 624; - this.roles(); - this.state = 625; - this.match(TrinoSqlParser.FROM); - this.state = 626; - this.principal(); - this.state = 631; + this.state = 673; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + if (_la === TrinoSqlParser.KW_IN) { { - { - this.state = 627; - this.match(TrinoSqlParser.T__3); - this.state = 628; - this.principal(); - } - } - this.state = 633; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 637; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 60, this._ctx) ) { - case 1: - { - this.state = 634; - this.match(TrinoSqlParser.GRANTED); - this.state = 635; - this.match(TrinoSqlParser.BY); - this.state = 636; - this.grantor(); - } - break; - } - this.state = 641; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === TrinoSqlParser.IN) { - { - this.state = 639; - this.match(TrinoSqlParser.IN); - this.state = 640; - (_localctx as RevokeRolesContext)._catalog = this.identifier(); + this.state = 671; + this.match(TrinoSqlParser.KW_IN); + this.state = 672; + this.catalogName(); } } @@ -2150,480 +2205,478 @@ export class TrinoSqlParser extends Parser { break; case 38: - _localctx = new SetRoleContext(_localctx); + _localctx = new GrantContext(_localctx); this.enterOuterAlt(_localctx, 38); { - this.state = 643; - this.match(TrinoSqlParser.SET); - this.state = 644; - this.match(TrinoSqlParser.ROLE); - this.state = 648; + this.state = 675; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 686; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 62, this._ctx) ) { + switch (this._input.LA(1)) { + case TrinoSqlParser.KW_DELETE: + case TrinoSqlParser.KW_INSERT: + case TrinoSqlParser.KW_SELECT: + case TrinoSqlParser.KW_UPDATE: + { + this.state = 676; + this.privilege(); + this.state = 681; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 677; + this.match(TrinoSqlParser.T__2); + this.state = 678; + this.privilege(); + } + } + this.state = 683; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + break; + case TrinoSqlParser.KW_ALL: + { + this.state = 684; + this.match(TrinoSqlParser.KW_ALL); + this.state = 685; + this.match(TrinoSqlParser.KW_PRIVILEGES); + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 688; + this.match(TrinoSqlParser.KW_ON); + this.state = 697; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 68, this._ctx) ) { case 1: { - this.state = 645; - this.match(TrinoSqlParser.ALL); + this.state = 690; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) { + case 1: + { + this.state = 689; + this.match(TrinoSqlParser.KW_SCHEMA); + } + break; + } + this.state = 692; + this.schemaName(); } break; case 2: { - this.state = 646; - this.match(TrinoSqlParser.NONE); + this.state = 694; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_TABLE) { + { + this.state = 693; + this.match(TrinoSqlParser.KW_TABLE); + } } - break; - case 3: - { - this.state = 647; - (_localctx as SetRoleContext)._role = this.identifier(); + this.state = 696; + this.tableName(); } break; } - this.state = 652; + this.state = 699; + this.match(TrinoSqlParser.KW_TO); + this.state = 700; + (_localctx as GrantContext)._grantee = this.principal(); + this.state = 704; this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === TrinoSqlParser.IN) { + switch ( this.interpreter.adaptivePredict(this._input, 69, this._ctx) ) { + case 1: { - this.state = 650; - this.match(TrinoSqlParser.IN); - this.state = 651; - (_localctx as SetRoleContext)._catalog = this.identifier(); + this.state = 701; + this.match(TrinoSqlParser.KW_WITH); + this.state = 702; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 703; + this.match(TrinoSqlParser.KW_OPTION); } + break; } - } break; case 39: - _localctx = new GrantContext(_localctx); + _localctx = new DenyContext(_localctx); this.enterOuterAlt(_localctx, 39); { - this.state = 654; - this.match(TrinoSqlParser.GRANT); - this.state = 665; + this.state = 706; + this.match(TrinoSqlParser.KW_DENY); + this.state = 717; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.DELETE: - case TrinoSqlParser.INSERT: - case TrinoSqlParser.SELECT: - case TrinoSqlParser.UPDATE: + case TrinoSqlParser.KW_DELETE: + case TrinoSqlParser.KW_INSERT: + case TrinoSqlParser.KW_SELECT: + case TrinoSqlParser.KW_UPDATE: { - this.state = 655; + this.state = 707; this.privilege(); - this.state = 660; + this.state = 712; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 656; - this.match(TrinoSqlParser.T__3); - this.state = 657; - this.privilege(); - } - } - this.state = 662; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - break; - case TrinoSqlParser.ALL: - { - this.state = 663; - this.match(TrinoSqlParser.ALL); - this.state = 664; - this.match(TrinoSqlParser.PRIVILEGES); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 667; - this.match(TrinoSqlParser.ON); - this.state = 669; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) { - case 1: - { - this.state = 668; - _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.SCHEMA || _la === TrinoSqlParser.TABLE)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - } - this.state = 671; - this.qualifiedName(); - this.state = 672; - this.match(TrinoSqlParser.TO); - this.state = 673; - (_localctx as GrantContext)._grantee = this.principal(); - this.state = 677; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) { - case 1: - { - this.state = 674; - this.match(TrinoSqlParser.WITH); - this.state = 675; - this.match(TrinoSqlParser.GRANT); - this.state = 676; - this.match(TrinoSqlParser.OPTION); - } - break; - } - } - break; - - case 40: - _localctx = new DenyContext(_localctx); - this.enterOuterAlt(_localctx, 40); - { - this.state = 679; - this.match(TrinoSqlParser.DENY); - this.state = 690; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case TrinoSqlParser.DELETE: - case TrinoSqlParser.INSERT: - case TrinoSqlParser.SELECT: - case TrinoSqlParser.UPDATE: - { - this.state = 680; - this.privilege(); - this.state = 685; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { - { - { - this.state = 681; - this.match(TrinoSqlParser.T__3); - this.state = 682; - this.privilege(); - } - } - this.state = 687; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - break; - case TrinoSqlParser.ALL: - { - this.state = 688; - this.match(TrinoSqlParser.ALL); - this.state = 689; - this.match(TrinoSqlParser.PRIVILEGES); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 692; - this.match(TrinoSqlParser.ON); - this.state = 694; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 70, this._ctx) ) { - case 1: - { - this.state = 693; - _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.SCHEMA || _la === TrinoSqlParser.TABLE)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - } - this.state = 696; - this.qualifiedName(); - this.state = 697; - this.match(TrinoSqlParser.TO); - this.state = 698; - (_localctx as DenyContext)._grantee = this.principal(); - } - break; - - case 41: - _localctx = new RevokeContext(_localctx); - this.enterOuterAlt(_localctx, 41); - { - this.state = 700; - this.match(TrinoSqlParser.REVOKE); - this.state = 704; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === TrinoSqlParser.GRANT) { - { - this.state = 701; - this.match(TrinoSqlParser.GRANT); - this.state = 702; - this.match(TrinoSqlParser.OPTION); - this.state = 703; - this.match(TrinoSqlParser.FOR); - } - } - - this.state = 716; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case TrinoSqlParser.DELETE: - case TrinoSqlParser.INSERT: - case TrinoSqlParser.SELECT: - case TrinoSqlParser.UPDATE: - { - this.state = 706; - this.privilege(); - this.state = 711; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { - { - { - this.state = 707; - this.match(TrinoSqlParser.T__3); this.state = 708; + this.match(TrinoSqlParser.T__2); + this.state = 709; this.privilege(); } } - this.state = 713; + this.state = 714; this._errHandler.sync(this); _la = this._input.LA(1); } } break; - case TrinoSqlParser.ALL: + case TrinoSqlParser.KW_ALL: { - this.state = 714; - this.match(TrinoSqlParser.ALL); this.state = 715; - this.match(TrinoSqlParser.PRIVILEGES); + this.match(TrinoSqlParser.KW_ALL); + this.state = 716; + this.match(TrinoSqlParser.KW_PRIVILEGES); } break; default: throw new NoViableAltException(this); } - this.state = 718; - this.match(TrinoSqlParser.ON); - this.state = 720; + this.state = 719; + this.match(TrinoSqlParser.KW_ON); + this.state = 728; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 74, this._ctx) ) { case 1: { - this.state = 719; - _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.SCHEMA || _la === TrinoSqlParser.TABLE)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; + this.state = 721; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 72, this._ctx) ) { + case 1: + { + this.state = 720; + this.match(TrinoSqlParser.KW_SCHEMA); } - - this._errHandler.reportMatch(this); - this.consume(); + break; } + this.state = 723; + this.schemaName(); } break; - } - this.state = 722; - this.qualifiedName(); - this.state = 723; - this.match(TrinoSqlParser.FROM); - this.state = 724; - (_localctx as RevokeContext)._grantee = this.principal(); - } - break; - case 42: - _localctx = new ShowGrantsContext(_localctx); - this.enterOuterAlt(_localctx, 42); - { - this.state = 726; - this.match(TrinoSqlParser.SHOW); - this.state = 727; - this.match(TrinoSqlParser.GRANTS); - this.state = 733; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === TrinoSqlParser.ON) { + case 2: { - this.state = 728; - this.match(TrinoSqlParser.ON); - this.state = 730; + this.state = 725; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.TABLE) { + if (_la === TrinoSqlParser.KW_TABLE) { { - this.state = 729; - this.match(TrinoSqlParser.TABLE); + this.state = 724; + this.match(TrinoSqlParser.KW_TABLE); } } - this.state = 732; - this.qualifiedName(); - } - } - - } - break; - - case 43: - _localctx = new ExplainContext(_localctx); - this.enterOuterAlt(_localctx, 43); - { - this.state = 735; - this.match(TrinoSqlParser.EXPLAIN); - this.state = 737; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 77, this._ctx) ) { - case 1: - { - this.state = 736; - this.match(TrinoSqlParser.ANALYZE); + this.state = 727; + this.tableName(); } break; } - this.state = 740; + this.state = 730; + this.match(TrinoSqlParser.KW_TO); + this.state = 731; + (_localctx as DenyContext)._grantee = this.principal(); + } + break; + + case 40: + _localctx = new RevokeContext(_localctx); + this.enterOuterAlt(_localctx, 40); + { + this.state = 733; + this.match(TrinoSqlParser.KW_REVOKE); + this.state = 737; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.VERBOSE) { + if (_la === TrinoSqlParser.KW_GRANT) { { - this.state = 739; - this.match(TrinoSqlParser.VERBOSE); + this.state = 734; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 735; + this.match(TrinoSqlParser.KW_OPTION); + this.state = 736; + this.match(TrinoSqlParser.KW_FOR); } } - this.state = 753; + this.state = 749; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case TrinoSqlParser.KW_DELETE: + case TrinoSqlParser.KW_INSERT: + case TrinoSqlParser.KW_SELECT: + case TrinoSqlParser.KW_UPDATE: + { + this.state = 739; + this.privilege(); + this.state = 744; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 740; + this.match(TrinoSqlParser.T__2); + this.state = 741; + this.privilege(); + } + } + this.state = 746; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + break; + case TrinoSqlParser.KW_ALL: + { + this.state = 747; + this.match(TrinoSqlParser.KW_ALL); + this.state = 748; + this.match(TrinoSqlParser.KW_PRIVILEGES); + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 751; + this.match(TrinoSqlParser.KW_ON); + this.state = 760; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 80, this._ctx) ) { case 1: { - this.state = 742; - this.match(TrinoSqlParser.T__1); - this.state = 743; - this.explainOption(); - this.state = 748; + this.state = 753; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 78, this._ctx) ) { + case 1: + { + this.state = 752; + this.match(TrinoSqlParser.KW_SCHEMA); + } + break; + } + this.state = 755; + this.schemaName(); + } + break; + + case 2: + { + this.state = 757; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + if (_la === TrinoSqlParser.KW_TABLE) { { - { - this.state = 744; - this.match(TrinoSqlParser.T__3); - this.state = 745; - this.explainOption(); + this.state = 756; + this.match(TrinoSqlParser.KW_TABLE); } - } - this.state = 750; - this._errHandler.sync(this); - _la = this._input.LA(1); } - this.state = 751; - this.match(TrinoSqlParser.T__2); + + this.state = 759; + this.tableName(); } break; } - this.state = 755; + this.state = 762; + this.match(TrinoSqlParser.KW_FROM); + this.state = 763; + (_localctx as RevokeContext)._grantee = this.principal(); + } + break; + + case 41: + _localctx = new ShowGrantsContext(_localctx); + this.enterOuterAlt(_localctx, 41); + { + this.state = 764; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 765; + this.match(TrinoSqlParser.KW_GRANTS); + this.state = 771; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_ON) { + { + this.state = 766; + this.match(TrinoSqlParser.KW_ON); + this.state = 768; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_TABLE) { + { + this.state = 767; + this.match(TrinoSqlParser.KW_TABLE); + } + } + + this.state = 770; + this.tableName(); + } + } + + } + break; + + case 42: + _localctx = new ExplainContext(_localctx); + this.enterOuterAlt(_localctx, 42); + { + this.state = 773; + this.match(TrinoSqlParser.KW_EXPLAIN); + this.state = 775; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 83, this._ctx) ) { + case 1: + { + this.state = 774; + this.match(TrinoSqlParser.KW_ANALYZE); + } + break; + } + this.state = 778; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_VERBOSE) { + { + this.state = 777; + this.match(TrinoSqlParser.KW_VERBOSE); + } + } + + this.state = 791; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 86, this._ctx) ) { + case 1: + { + this.state = 780; + this.match(TrinoSqlParser.T__0); + this.state = 781; + this.explainOption(); + this.state = 786; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 782; + this.match(TrinoSqlParser.T__2); + this.state = 783; + this.explainOption(); + } + } + this.state = 788; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 789; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 793; this.statement(); } break; - case 44: + case 43: _localctx = new ShowCreateTableContext(_localctx); + this.enterOuterAlt(_localctx, 43); + { + this.state = 794; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 795; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 796; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 797; + this.tableName(); + } + break; + + case 44: + _localctx = new ShowCreateSchemaContext(_localctx); this.enterOuterAlt(_localctx, 44); { - this.state = 756; - this.match(TrinoSqlParser.SHOW); - this.state = 757; - this.match(TrinoSqlParser.CREATE); - this.state = 758; - this.match(TrinoSqlParser.TABLE); - this.state = 759; - this.qualifiedName(); + this.state = 798; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 799; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 800; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 801; + this.schemaName(); } break; case 45: - _localctx = new ShowCreateSchemaContext(_localctx); + _localctx = new ShowCreateViewContext(_localctx); this.enterOuterAlt(_localctx, 45); { - this.state = 760; - this.match(TrinoSqlParser.SHOW); - this.state = 761; - this.match(TrinoSqlParser.CREATE); - this.state = 762; - this.match(TrinoSqlParser.SCHEMA); - this.state = 763; - this.qualifiedName(); + this.state = 802; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 803; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 804; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 805; + this.viewName(); } break; case 46: - _localctx = new ShowCreateViewContext(_localctx); + _localctx = new ShowCreateMaterializedViewContext(_localctx); this.enterOuterAlt(_localctx, 46); { - this.state = 764; - this.match(TrinoSqlParser.SHOW); - this.state = 765; - this.match(TrinoSqlParser.CREATE); - this.state = 766; - this.match(TrinoSqlParser.VIEW); - this.state = 767; - this.qualifiedName(); + this.state = 806; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 807; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 808; + this.match(TrinoSqlParser.KW_MATERIALIZED); + this.state = 809; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 810; + this.viewName(); } break; case 47: - _localctx = new ShowCreateMaterializedViewContext(_localctx); + _localctx = new ShowTablesContext(_localctx); this.enterOuterAlt(_localctx, 47); { - this.state = 768; - this.match(TrinoSqlParser.SHOW); - this.state = 769; - this.match(TrinoSqlParser.CREATE); - this.state = 770; - this.match(TrinoSqlParser.MATERIALIZED); - this.state = 771; - this.match(TrinoSqlParser.VIEW); - this.state = 772; - this.qualifiedName(); - } - break; - - case 48: - _localctx = new ShowTablesContext(_localctx); - this.enterOuterAlt(_localctx, 48); - { - this.state = 773; - this.match(TrinoSqlParser.SHOW); - this.state = 774; - this.match(TrinoSqlParser.TABLES); - this.state = 777; + this.state = 811; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 812; + this.match(TrinoSqlParser.KW_TABLES); + this.state = 815; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN) { + if (_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN) { { - this.state = 775; + this.state = 813; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN)) { + if (!(_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -2633,28 +2686,28 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 776; - this.qualifiedName(); + this.state = 814; + this.schemaName(); } } - this.state = 785; + this.state = 823; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.LIKE) { + if (_la === TrinoSqlParser.KW_LIKE) { { - this.state = 779; - this.match(TrinoSqlParser.LIKE); - this.state = 780; + this.state = 817; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 818; (_localctx as ShowTablesContext)._pattern = this.string(); - this.state = 783; + this.state = 821; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ESCAPE) { + if (_la === TrinoSqlParser.KW_ESCAPE) { { - this.state = 781; - this.match(TrinoSqlParser.ESCAPE); - this.state = 782; + this.state = 819; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 820; (_localctx as ShowTablesContext)._escape = this.string(); } } @@ -2665,22 +2718,22 @@ export class TrinoSqlParser extends Parser { } break; - case 49: + case 48: _localctx = new ShowSchemasContext(_localctx); - this.enterOuterAlt(_localctx, 49); + this.enterOuterAlt(_localctx, 48); { - this.state = 787; - this.match(TrinoSqlParser.SHOW); - this.state = 788; - this.match(TrinoSqlParser.SCHEMAS); - this.state = 791; + this.state = 825; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 826; + this.match(TrinoSqlParser.KW_SCHEMAS); + this.state = 829; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN) { + if (_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN) { { - this.state = 789; + this.state = 827; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN)) { + if (!(_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -2690,28 +2743,28 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 790; - this.identifier(); + this.state = 828; + this.catalogName(); } } - this.state = 799; + this.state = 837; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.LIKE) { + if (_la === TrinoSqlParser.KW_LIKE) { { - this.state = 793; - this.match(TrinoSqlParser.LIKE); - this.state = 794; + this.state = 831; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 832; (_localctx as ShowSchemasContext)._pattern = this.string(); - this.state = 797; + this.state = 835; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ESCAPE) { + if (_la === TrinoSqlParser.KW_ESCAPE) { { - this.state = 795; - this.match(TrinoSqlParser.ESCAPE); - this.state = 796; + this.state = 833; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 834; (_localctx as ShowSchemasContext)._escape = this.string(); } } @@ -2722,31 +2775,31 @@ export class TrinoSqlParser extends Parser { } break; - case 50: + case 49: _localctx = new ShowCatalogsContext(_localctx); - this.enterOuterAlt(_localctx, 50); + this.enterOuterAlt(_localctx, 49); { - this.state = 801; - this.match(TrinoSqlParser.SHOW); - this.state = 802; - this.match(TrinoSqlParser.CATALOGS); - this.state = 809; + this.state = 839; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 840; + this.match(TrinoSqlParser.KW_CATALOGS); + this.state = 847; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.LIKE) { + if (_la === TrinoSqlParser.KW_LIKE) { { - this.state = 803; - this.match(TrinoSqlParser.LIKE); - this.state = 804; + this.state = 841; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 842; (_localctx as ShowCatalogsContext)._pattern = this.string(); - this.state = 807; + this.state = 845; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ESCAPE) { + if (_la === TrinoSqlParser.KW_ESCAPE) { { - this.state = 805; - this.match(TrinoSqlParser.ESCAPE); - this.state = 806; + this.state = 843; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 844; (_localctx as ShowCatalogsContext)._escape = this.string(); } } @@ -2757,17 +2810,17 @@ export class TrinoSqlParser extends Parser { } break; - case 51: + case 50: _localctx = new ShowColumnsContext(_localctx); - this.enterOuterAlt(_localctx, 51); + this.enterOuterAlt(_localctx, 50); { - this.state = 811; - this.match(TrinoSqlParser.SHOW); - this.state = 812; - this.match(TrinoSqlParser.COLUMNS); - this.state = 813; + this.state = 849; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 850; + this.match(TrinoSqlParser.KW_COLUMNS); + this.state = 851; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN)) { + if (!(_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -2777,33 +2830,33 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 815; + this.state = 853; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 89, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 95, this._ctx) ) { case 1: { - this.state = 814; - this.qualifiedName(); + this.state = 852; + this.tableOrViewName(); } break; } - this.state = 823; + this.state = 861; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.LIKE) { + if (_la === TrinoSqlParser.KW_LIKE) { { - this.state = 817; - this.match(TrinoSqlParser.LIKE); - this.state = 818; + this.state = 855; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 856; (_localctx as ShowColumnsContext)._pattern = this.string(); - this.state = 821; + this.state = 859; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ESCAPE) { + if (_la === TrinoSqlParser.KW_ESCAPE) { { - this.state = 819; - this.match(TrinoSqlParser.ESCAPE); - this.state = 820; + this.state = 857; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 858; (_localctx as ShowColumnsContext)._escape = this.string(); } } @@ -2814,66 +2867,66 @@ export class TrinoSqlParser extends Parser { } break; - case 52: + case 51: _localctx = new ShowStatsContext(_localctx); + this.enterOuterAlt(_localctx, 51); + { + this.state = 863; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 864; + this.match(TrinoSqlParser.KW_STATS); + this.state = 865; + this.match(TrinoSqlParser.KW_FOR); + this.state = 866; + this.tableName(); + } + break; + + case 52: + _localctx = new ShowStatsForQueryContext(_localctx); this.enterOuterAlt(_localctx, 52); { - this.state = 825; - this.match(TrinoSqlParser.SHOW); - this.state = 826; - this.match(TrinoSqlParser.STATS); - this.state = 827; - this.match(TrinoSqlParser.FOR); - this.state = 828; - this.qualifiedName(); + this.state = 867; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 868; + this.match(TrinoSqlParser.KW_STATS); + this.state = 869; + this.match(TrinoSqlParser.KW_FOR); + this.state = 870; + this.match(TrinoSqlParser.T__0); + this.state = 871; + this.query(); + this.state = 872; + this.match(TrinoSqlParser.T__1); } break; case 53: - _localctx = new ShowStatsForQueryContext(_localctx); + _localctx = new ShowRolesContext(_localctx); this.enterOuterAlt(_localctx, 53); { - this.state = 829; - this.match(TrinoSqlParser.SHOW); - this.state = 830; - this.match(TrinoSqlParser.STATS); - this.state = 831; - this.match(TrinoSqlParser.FOR); - this.state = 832; - this.match(TrinoSqlParser.T__1); - this.state = 833; - this.query(); - this.state = 834; - this.match(TrinoSqlParser.T__2); - } - break; - - case 54: - _localctx = new ShowRolesContext(_localctx); - this.enterOuterAlt(_localctx, 54); - { - this.state = 836; - this.match(TrinoSqlParser.SHOW); - this.state = 838; + this.state = 874; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 876; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.CURRENT) { + if (_la === TrinoSqlParser.KW_CURRENT) { { - this.state = 837; - this.match(TrinoSqlParser.CURRENT); + this.state = 875; + this.match(TrinoSqlParser.KW_CURRENT); } } - this.state = 840; - this.match(TrinoSqlParser.ROLES); - this.state = 843; + this.state = 878; + this.match(TrinoSqlParser.KW_ROLES); + this.state = 881; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN) { + if (_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN) { { - this.state = 841; + this.state = 879; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN)) { + if (!(_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -2883,7 +2936,42 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 842; + this.state = 880; + this.identifier(); + } + } + + } + break; + + case 54: + _localctx = new ShowRoleGrantsContext(_localctx); + this.enterOuterAlt(_localctx, 54); + { + this.state = 883; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 884; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 885; + this.match(TrinoSqlParser.KW_GRANTS); + this.state = 888; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN) { + { + this.state = 886; + _la = this._input.LA(1); + if (!(_la === TrinoSqlParser.KW_FROM || _la === TrinoSqlParser.KW_IN)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 887; this.identifier(); } } @@ -2892,37 +2980,13 @@ export class TrinoSqlParser extends Parser { break; case 55: - _localctx = new ShowRoleGrantsContext(_localctx); + _localctx = new ShowColumnsContext(_localctx); this.enterOuterAlt(_localctx, 55); { - this.state = 845; - this.match(TrinoSqlParser.SHOW); - this.state = 846; - this.match(TrinoSqlParser.ROLE); - this.state = 847; - this.match(TrinoSqlParser.GRANTS); - this.state = 850; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN) { - { - this.state = 848; - _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FROM || _la === TrinoSqlParser.IN)) { - this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 849; - this.identifier(); - } - } - + this.state = 890; + this.match(TrinoSqlParser.KW_DESCRIBE); + this.state = 891; + this.tableOrViewName(); } break; @@ -2930,49 +2994,38 @@ export class TrinoSqlParser extends Parser { _localctx = new ShowColumnsContext(_localctx); this.enterOuterAlt(_localctx, 56); { - this.state = 852; - this.match(TrinoSqlParser.DESCRIBE); - this.state = 853; - this.qualifiedName(); + this.state = 892; + this.match(TrinoSqlParser.KW_DESC); + this.state = 893; + this.tableOrViewName(); } break; case 57: - _localctx = new ShowColumnsContext(_localctx); + _localctx = new ShowFunctionsContext(_localctx); this.enterOuterAlt(_localctx, 57); { - this.state = 854; - this.match(TrinoSqlParser.DESC); - this.state = 855; - this.qualifiedName(); - } - break; - - case 58: - _localctx = new ShowFunctionsContext(_localctx); - this.enterOuterAlt(_localctx, 58); - { - this.state = 856; - this.match(TrinoSqlParser.SHOW); - this.state = 857; - this.match(TrinoSqlParser.FUNCTIONS); - this.state = 864; + this.state = 894; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 895; + this.match(TrinoSqlParser.KW_FUNCTIONS); + this.state = 902; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.LIKE) { + if (_la === TrinoSqlParser.KW_LIKE) { { - this.state = 858; - this.match(TrinoSqlParser.LIKE); - this.state = 859; + this.state = 896; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 897; (_localctx as ShowFunctionsContext)._pattern = this.string(); - this.state = 862; + this.state = 900; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ESCAPE) { + if (_la === TrinoSqlParser.KW_ESCAPE) { { - this.state = 860; - this.match(TrinoSqlParser.ESCAPE); - this.state = 861; + this.state = 898; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 899; (_localctx as ShowFunctionsContext)._escape = this.string(); } } @@ -2983,31 +3036,31 @@ export class TrinoSqlParser extends Parser { } break; - case 59: + case 58: _localctx = new ShowSessionContext(_localctx); - this.enterOuterAlt(_localctx, 59); + this.enterOuterAlt(_localctx, 58); { - this.state = 866; - this.match(TrinoSqlParser.SHOW); - this.state = 867; - this.match(TrinoSqlParser.SESSION); - this.state = 874; + this.state = 904; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 905; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 912; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.LIKE) { + if (_la === TrinoSqlParser.KW_LIKE) { { - this.state = 868; - this.match(TrinoSqlParser.LIKE); - this.state = 869; + this.state = 906; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 907; (_localctx as ShowSessionContext)._pattern = this.string(); - this.state = 872; + this.state = 910; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ESCAPE) { + if (_la === TrinoSqlParser.KW_ESCAPE) { { - this.state = 870; - this.match(TrinoSqlParser.ESCAPE); - this.state = 871; + this.state = 908; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 909; (_localctx as ShowSessionContext)._escape = this.string(); } } @@ -3018,64 +3071,64 @@ export class TrinoSqlParser extends Parser { } break; - case 60: + case 59: _localctx = new SetSessionContext(_localctx); - this.enterOuterAlt(_localctx, 60); + this.enterOuterAlt(_localctx, 59); { - this.state = 876; - this.match(TrinoSqlParser.SET); - this.state = 877; - this.match(TrinoSqlParser.SESSION); - this.state = 878; + this.state = 914; + this.match(TrinoSqlParser.KW_SET); + this.state = 915; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 916; this.qualifiedName(); - this.state = 879; + this.state = 917; this.match(TrinoSqlParser.EQ); - this.state = 880; + this.state = 918; this.expression(); } break; - case 61: + case 60: _localctx = new ResetSessionContext(_localctx); - this.enterOuterAlt(_localctx, 61); + this.enterOuterAlt(_localctx, 60); { - this.state = 882; - this.match(TrinoSqlParser.RESET); - this.state = 883; - this.match(TrinoSqlParser.SESSION); - this.state = 884; + this.state = 920; + this.match(TrinoSqlParser.KW_RESET); + this.state = 921; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 922; this.qualifiedName(); } break; - case 62: + case 61: _localctx = new StartTransactionContext(_localctx); - this.enterOuterAlt(_localctx, 62); + this.enterOuterAlt(_localctx, 61); { - this.state = 885; - this.match(TrinoSqlParser.START); - this.state = 886; - this.match(TrinoSqlParser.TRANSACTION); - this.state = 895; + this.state = 923; + this.match(TrinoSqlParser.KW_START); + this.state = 924; + this.match(TrinoSqlParser.KW_TRANSACTION); + this.state = 933; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 100, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 106, this._ctx) ) { case 1: { - this.state = 887; + this.state = 925; this.transactionMode(); - this.state = 892; + this.state = 930; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 888; - this.match(TrinoSqlParser.T__3); - this.state = 889; + this.state = 926; + this.match(TrinoSqlParser.T__2); + this.state = 927; this.transactionMode(); } } - this.state = 894; + this.state = 932; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3085,19 +3138,38 @@ export class TrinoSqlParser extends Parser { } break; + case 62: + _localctx = new CommitContext(_localctx); + this.enterOuterAlt(_localctx, 62); + { + this.state = 935; + this.match(TrinoSqlParser.KW_COMMIT); + this.state = 937; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 107, this._ctx) ) { + case 1: + { + this.state = 936; + this.match(TrinoSqlParser.KW_WORK); + } + break; + } + } + break; + case 63: - _localctx = new CommitContext(_localctx); + _localctx = new RollbackContext(_localctx); this.enterOuterAlt(_localctx, 63); { - this.state = 897; - this.match(TrinoSqlParser.COMMIT); - this.state = 899; + this.state = 939; + this.match(TrinoSqlParser.KW_ROLLBACK); + this.state = 941; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 101, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 108, this._ctx) ) { case 1: { - this.state = 898; - this.match(TrinoSqlParser.WORK); + this.state = 940; + this.match(TrinoSqlParser.KW_WORK); } break; } @@ -3105,82 +3177,63 @@ export class TrinoSqlParser extends Parser { break; case 64: - _localctx = new RollbackContext(_localctx); + _localctx = new PrepareContext(_localctx); this.enterOuterAlt(_localctx, 64); { - this.state = 901; - this.match(TrinoSqlParser.ROLLBACK); - this.state = 903; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 102, this._ctx) ) { - case 1: - { - this.state = 902; - this.match(TrinoSqlParser.WORK); - } - break; - } - } - break; - - case 65: - _localctx = new PrepareContext(_localctx); - this.enterOuterAlt(_localctx, 65); - { - this.state = 905; - this.match(TrinoSqlParser.PREPARE); - this.state = 906; + this.state = 943; + this.match(TrinoSqlParser.KW_PREPARE); + this.state = 944; this.identifier(); - this.state = 907; - this.match(TrinoSqlParser.FROM); - this.state = 908; + this.state = 945; + this.match(TrinoSqlParser.KW_FROM); + this.state = 946; this.statement(); } break; - case 66: + case 65: _localctx = new DeallocateContext(_localctx); - this.enterOuterAlt(_localctx, 66); + this.enterOuterAlt(_localctx, 65); { - this.state = 910; - this.match(TrinoSqlParser.DEALLOCATE); - this.state = 911; - this.match(TrinoSqlParser.PREPARE); - this.state = 912; + this.state = 948; + this.match(TrinoSqlParser.KW_DEALLOCATE); + this.state = 949; + this.match(TrinoSqlParser.KW_PREPARE); + this.state = 950; this.identifier(); } break; - case 67: + case 66: _localctx = new ExecuteContext(_localctx); - this.enterOuterAlt(_localctx, 67); + this.enterOuterAlt(_localctx, 66); { - this.state = 913; - this.match(TrinoSqlParser.EXECUTE); - this.state = 914; + this.state = 951; + this.match(TrinoSqlParser.KW_EXECUTE); + this.state = 952; this.identifier(); - this.state = 924; + this.state = 962; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.USING) { + if (_la === TrinoSqlParser.KW_USING) { { - this.state = 915; - this.match(TrinoSqlParser.USING); - this.state = 916; + this.state = 953; + this.match(TrinoSqlParser.KW_USING); + this.state = 954; this.expression(); - this.state = 921; + this.state = 959; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 917; - this.match(TrinoSqlParser.T__3); - this.state = 918; + this.state = 955; + this.match(TrinoSqlParser.T__2); + this.state = 956; this.expression(); } } - this.state = 923; + this.state = 961; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3190,68 +3243,68 @@ export class TrinoSqlParser extends Parser { } break; - case 68: + case 67: _localctx = new DescribeInputContext(_localctx); + this.enterOuterAlt(_localctx, 67); + { + this.state = 964; + this.match(TrinoSqlParser.KW_DESCRIBE); + this.state = 965; + this.match(TrinoSqlParser.KW_INPUT); + this.state = 966; + this.identifier(); + } + break; + + case 68: + _localctx = new DescribeOutputContext(_localctx); this.enterOuterAlt(_localctx, 68); { - this.state = 926; - this.match(TrinoSqlParser.DESCRIBE); - this.state = 927; - this.match(TrinoSqlParser.INPUT); - this.state = 928; + this.state = 967; + this.match(TrinoSqlParser.KW_DESCRIBE); + this.state = 968; + this.match(TrinoSqlParser.KW_OUTPUT); + this.state = 969; this.identifier(); } break; case 69: - _localctx = new DescribeOutputContext(_localctx); + _localctx = new SetPathContext(_localctx); this.enterOuterAlt(_localctx, 69); { - this.state = 929; - this.match(TrinoSqlParser.DESCRIBE); - this.state = 930; - this.match(TrinoSqlParser.OUTPUT); - this.state = 931; - this.identifier(); - } - break; - - case 70: - _localctx = new SetPathContext(_localctx); - this.enterOuterAlt(_localctx, 70); - { - this.state = 932; - this.match(TrinoSqlParser.SET); - this.state = 933; - this.match(TrinoSqlParser.PATH); - this.state = 934; + this.state = 970; + this.match(TrinoSqlParser.KW_SET); + this.state = 971; + this.match(TrinoSqlParser.KW_PATH); + this.state = 972; this.pathSpecification(); } break; - case 71: + case 70: _localctx = new SetTimeZoneContext(_localctx); - this.enterOuterAlt(_localctx, 71); + this.enterOuterAlt(_localctx, 70); { - this.state = 935; - this.match(TrinoSqlParser.SET); - this.state = 936; - this.match(TrinoSqlParser.TIME); - this.state = 937; - this.match(TrinoSqlParser.ZONE); - this.state = 940; + this.state = 973; + this.match(TrinoSqlParser.KW_SET); + this.state = 974; + this.match(TrinoSqlParser.KW_TIME); + this.state = 975; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 978; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 111, this._ctx) ) { case 1: { - this.state = 938; - this.match(TrinoSqlParser.LOCAL); + this.state = 976; + this.match(TrinoSqlParser.KW_LOCAL); } break; case 2: { - this.state = 939; + this.state = 977; this.expression(); } break; @@ -3259,42 +3312,42 @@ export class TrinoSqlParser extends Parser { } break; - case 72: + case 71: _localctx = new UpdateContext(_localctx); - this.enterOuterAlt(_localctx, 72); + this.enterOuterAlt(_localctx, 71); { - this.state = 942; - this.match(TrinoSqlParser.UPDATE); - this.state = 943; - this.qualifiedName(); - this.state = 944; - this.match(TrinoSqlParser.SET); - this.state = 945; + this.state = 980; + this.match(TrinoSqlParser.KW_UPDATE); + this.state = 981; + this.tableName(); + this.state = 982; + this.match(TrinoSqlParser.KW_SET); + this.state = 983; this.updateAssignment(); - this.state = 950; + this.state = 988; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 946; - this.match(TrinoSqlParser.T__3); - this.state = 947; + this.state = 984; + this.match(TrinoSqlParser.T__2); + this.state = 985; this.updateAssignment(); } } - this.state = 952; + this.state = 990; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 955; + this.state = 993; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.WHERE) { + if (_la === TrinoSqlParser.KW_WHERE) { { - this.state = 953; - this.match(TrinoSqlParser.WHERE); - this.state = 954; + this.state = 991; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 992; (_localctx as UpdateContext)._where = this.booleanExpression(0); } } @@ -3302,91 +3355,91 @@ export class TrinoSqlParser extends Parser { } break; - case 73: + case 72: _localctx = new MergeContext(_localctx); - this.enterOuterAlt(_localctx, 73); + this.enterOuterAlt(_localctx, 72); { - this.state = 957; - this.match(TrinoSqlParser.MERGE); - this.state = 958; - this.match(TrinoSqlParser.INTO); - this.state = 959; - this.qualifiedName(); - this.state = 964; + this.state = 995; + this.match(TrinoSqlParser.KW_MERGE); + this.state = 996; + this.match(TrinoSqlParser.KW_INTO); + this.state = 997; + this.tableName(); + this.state = 1002; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.ADD - 17)) | (1 << (TrinoSqlParser.ADMIN - 17)) | (1 << (TrinoSqlParser.AFTER - 17)) | (1 << (TrinoSqlParser.ALL - 17)) | (1 << (TrinoSqlParser.ANALYZE - 17)) | (1 << (TrinoSqlParser.ANY - 17)) | (1 << (TrinoSqlParser.ARRAY - 17)) | (1 << (TrinoSqlParser.AS - 17)) | (1 << (TrinoSqlParser.ASC - 17)) | (1 << (TrinoSqlParser.AT - 17)) | (1 << (TrinoSqlParser.AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.BERNOULLI - 17)) | (1 << (TrinoSqlParser.CALL - 17)) | (1 << (TrinoSqlParser.CASCADE - 17)) | (1 << (TrinoSqlParser.CATALOGS - 17)) | (1 << (TrinoSqlParser.COLUMN - 17)) | (1 << (TrinoSqlParser.COLUMNS - 17)) | (1 << (TrinoSqlParser.COMMENT - 17)) | (1 << (TrinoSqlParser.COMMIT - 17)) | (1 << (TrinoSqlParser.COMMITTED - 17)) | (1 << (TrinoSqlParser.CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.DATA - 56)) | (1 << (TrinoSqlParser.DATE - 56)) | (1 << (TrinoSqlParser.DAY - 56)) | (1 << (TrinoSqlParser.DEFAULT - 56)) | (1 << (TrinoSqlParser.DEFINER - 56)) | (1 << (TrinoSqlParser.DESC - 56)) | (1 << (TrinoSqlParser.DEFINE - 56)) | (1 << (TrinoSqlParser.DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.DOUBLE - 56)) | (1 << (TrinoSqlParser.EMPTY - 56)) | (1 << (TrinoSqlParser.EXCLUDING - 56)) | (1 << (TrinoSqlParser.EXPLAIN - 56)) | (1 << (TrinoSqlParser.FETCH - 56)) | (1 << (TrinoSqlParser.FILTER - 56)) | (1 << (TrinoSqlParser.FINAL - 56)) | (1 << (TrinoSqlParser.FIRST - 56)) | (1 << (TrinoSqlParser.FOLLOWING - 56)) | (1 << (TrinoSqlParser.FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.FUNCTIONS - 90)) | (1 << (TrinoSqlParser.GRANT - 90)) | (1 << (TrinoSqlParser.GRANTED - 90)) | (1 << (TrinoSqlParser.GRANTS - 90)) | (1 << (TrinoSqlParser.DENY - 90)) | (1 << (TrinoSqlParser.GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.GROUPS - 90)) | (1 << (TrinoSqlParser.HOUR - 90)) | (1 << (TrinoSqlParser.IF - 90)) | (1 << (TrinoSqlParser.IGNORE - 90)) | (1 << (TrinoSqlParser.INCLUDING - 90)) | (1 << (TrinoSqlParser.INITIAL - 90)) | (1 << (TrinoSqlParser.INPUT - 90)) | (1 << (TrinoSqlParser.INTERVAL - 90)) | (1 << (TrinoSqlParser.INVOKER - 90)) | (1 << (TrinoSqlParser.IO - 90)) | (1 << (TrinoSqlParser.ISOLATION - 90)) | (1 << (TrinoSqlParser.JSON - 90)) | (1 << (TrinoSqlParser.LAST - 90)) | (1 << (TrinoSqlParser.LATERAL - 90)) | (1 << (TrinoSqlParser.LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.LIMIT - 123)) | (1 << (TrinoSqlParser.LOCAL - 123)) | (1 << (TrinoSqlParser.LOGICAL - 123)) | (1 << (TrinoSqlParser.MAP - 123)) | (1 << (TrinoSqlParser.MATCH - 123)) | (1 << (TrinoSqlParser.MATCHED - 123)) | (1 << (TrinoSqlParser.MATCHES - 123)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.MATERIALIZED - 123)) | (1 << (TrinoSqlParser.MEASURES - 123)) | (1 << (TrinoSqlParser.MERGE - 123)) | (1 << (TrinoSqlParser.MINUTE - 123)) | (1 << (TrinoSqlParser.MONTH - 123)) | (1 << (TrinoSqlParser.NEXT - 123)) | (1 << (TrinoSqlParser.NFC - 123)) | (1 << (TrinoSqlParser.NFD - 123)) | (1 << (TrinoSqlParser.NFKC - 123)) | (1 << (TrinoSqlParser.NFKD - 123)) | (1 << (TrinoSqlParser.NO - 123)) | (1 << (TrinoSqlParser.NONE - 123)) | (1 << (TrinoSqlParser.NULLIF - 123)) | (1 << (TrinoSqlParser.NULLS - 123)) | (1 << (TrinoSqlParser.OFFSET - 123)) | (1 << (TrinoSqlParser.OMIT - 123)) | (1 << (TrinoSqlParser.ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.ONLY - 155)) | (1 << (TrinoSqlParser.OPTION - 155)) | (1 << (TrinoSqlParser.ORDINALITY - 155)) | (1 << (TrinoSqlParser.OUTPUT - 155)) | (1 << (TrinoSqlParser.OVER - 155)) | (1 << (TrinoSqlParser.PARTITION - 155)) | (1 << (TrinoSqlParser.PARTITIONS - 155)) | (1 << (TrinoSqlParser.PAST - 155)) | (1 << (TrinoSqlParser.PATH - 155)) | (1 << (TrinoSqlParser.PATTERN - 155)) | (1 << (TrinoSqlParser.PER - 155)) | (1 << (TrinoSqlParser.PERMUTE - 155)) | (1 << (TrinoSqlParser.POSITION - 155)) | (1 << (TrinoSqlParser.PRECEDING - 155)) | (1 << (TrinoSqlParser.PRECISION - 155)) | (1 << (TrinoSqlParser.PRIVILEGES - 155)) | (1 << (TrinoSqlParser.PROPERTIES - 155)) | (1 << (TrinoSqlParser.RANGE - 155)) | (1 << (TrinoSqlParser.READ - 155)) | (1 << (TrinoSqlParser.REFRESH - 155)) | (1 << (TrinoSqlParser.RENAME - 155)) | (1 << (TrinoSqlParser.REPEATABLE - 155)) | (1 << (TrinoSqlParser.REPLACE - 155)) | (1 << (TrinoSqlParser.RESET - 155)) | (1 << (TrinoSqlParser.RESPECT - 155)) | (1 << (TrinoSqlParser.RESTRICT - 155)) | (1 << (TrinoSqlParser.REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.ROLE - 188)) | (1 << (TrinoSqlParser.ROLES - 188)) | (1 << (TrinoSqlParser.ROLLBACK - 188)) | (1 << (TrinoSqlParser.ROW - 188)) | (1 << (TrinoSqlParser.ROWS - 188)) | (1 << (TrinoSqlParser.RUNNING - 188)) | (1 << (TrinoSqlParser.SCHEMA - 188)) | (1 << (TrinoSqlParser.SCHEMAS - 188)) | (1 << (TrinoSqlParser.SECOND - 188)) | (1 << (TrinoSqlParser.SECURITY - 188)) | (1 << (TrinoSqlParser.SEEK - 188)) | (1 << (TrinoSqlParser.SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.SESSION - 188)) | (1 << (TrinoSqlParser.SET - 188)) | (1 << (TrinoSqlParser.SETS - 188)) | (1 << (TrinoSqlParser.SHOW - 188)) | (1 << (TrinoSqlParser.SOME - 188)) | (1 << (TrinoSqlParser.START - 188)) | (1 << (TrinoSqlParser.STATS - 188)) | (1 << (TrinoSqlParser.SUBSET - 188)) | (1 << (TrinoSqlParser.SUBSTRING - 188)) | (1 << (TrinoSqlParser.SYSTEM - 188)) | (1 << (TrinoSqlParser.TABLES - 188)) | (1 << (TrinoSqlParser.TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.TEXT - 188)) | (1 << (TrinoSqlParser.TIES - 188)) | (1 << (TrinoSqlParser.TIME - 188)) | (1 << (TrinoSqlParser.TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.TO - 220)) | (1 << (TrinoSqlParser.TRANSACTION - 220)) | (1 << (TrinoSqlParser.TRUNCATE - 220)) | (1 << (TrinoSqlParser.TRY_CAST - 220)) | (1 << (TrinoSqlParser.TYPE - 220)) | (1 << (TrinoSqlParser.UNBOUNDED - 220)) | (1 << (TrinoSqlParser.UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.UNMATCHED - 220)) | (1 << (TrinoSqlParser.UPDATE - 220)) | (1 << (TrinoSqlParser.USE - 220)) | (1 << (TrinoSqlParser.USER - 220)) | (1 << (TrinoSqlParser.VALIDATE - 220)) | (1 << (TrinoSqlParser.VERBOSE - 220)) | (1 << (TrinoSqlParser.VIEW - 220)) | (1 << (TrinoSqlParser.WINDOW - 220)) | (1 << (TrinoSqlParser.WITHOUT - 220)) | (1 << (TrinoSqlParser.WORK - 220)) | (1 << (TrinoSqlParser.WRITE - 220)) | (1 << (TrinoSqlParser.YEAR - 220)) | (1 << (TrinoSqlParser.ZONE - 220)))) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & ((1 << (TrinoSqlParser.IDENTIFIER - 268)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 268)))) !== 0)) { + if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.KW_ADD - 17)) | (1 << (TrinoSqlParser.KW_ADMIN - 17)) | (1 << (TrinoSqlParser.KW_AFTER - 17)) | (1 << (TrinoSqlParser.KW_ALL - 17)) | (1 << (TrinoSqlParser.KW_ANALYZE - 17)) | (1 << (TrinoSqlParser.KW_ANY - 17)) | (1 << (TrinoSqlParser.KW_ARRAY - 17)) | (1 << (TrinoSqlParser.KW_AS - 17)) | (1 << (TrinoSqlParser.KW_ASC - 17)) | (1 << (TrinoSqlParser.KW_AT - 17)) | (1 << (TrinoSqlParser.KW_AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.KW_BERNOULLI - 17)) | (1 << (TrinoSqlParser.KW_CALL - 17)) | (1 << (TrinoSqlParser.KW_CASCADE - 17)) | (1 << (TrinoSqlParser.KW_CATALOGS - 17)) | (1 << (TrinoSqlParser.KW_COLUMN - 17)) | (1 << (TrinoSqlParser.KW_COLUMNS - 17)) | (1 << (TrinoSqlParser.KW_COMMENT - 17)) | (1 << (TrinoSqlParser.KW_COMMIT - 17)) | (1 << (TrinoSqlParser.KW_COMMITTED - 17)) | (1 << (TrinoSqlParser.KW_CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.KW_DATA - 56)) | (1 << (TrinoSqlParser.KW_DATE - 56)) | (1 << (TrinoSqlParser.KW_DAY - 56)) | (1 << (TrinoSqlParser.KW_DEFAULT - 56)) | (1 << (TrinoSqlParser.KW_DEFINER - 56)) | (1 << (TrinoSqlParser.KW_DESC - 56)) | (1 << (TrinoSqlParser.KW_DEFINE - 56)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.KW_DOUBLE - 56)) | (1 << (TrinoSqlParser.KW_EMPTY - 56)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 56)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 56)) | (1 << (TrinoSqlParser.KW_FETCH - 56)) | (1 << (TrinoSqlParser.KW_FILTER - 56)) | (1 << (TrinoSqlParser.KW_FINAL - 56)) | (1 << (TrinoSqlParser.KW_FIRST - 56)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 56)) | (1 << (TrinoSqlParser.KW_FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.KW_FUNCTIONS - 90)) | (1 << (TrinoSqlParser.KW_GRANT - 90)) | (1 << (TrinoSqlParser.KW_GRANTED - 90)) | (1 << (TrinoSqlParser.KW_GRANTS - 90)) | (1 << (TrinoSqlParser.KW_DENY - 90)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.KW_GROUPS - 90)) | (1 << (TrinoSqlParser.KW_HOUR - 90)) | (1 << (TrinoSqlParser.KW_IF - 90)) | (1 << (TrinoSqlParser.KW_IGNORE - 90)) | (1 << (TrinoSqlParser.KW_INCLUDING - 90)) | (1 << (TrinoSqlParser.KW_INITIAL - 90)) | (1 << (TrinoSqlParser.KW_INPUT - 90)) | (1 << (TrinoSqlParser.KW_INTERVAL - 90)) | (1 << (TrinoSqlParser.KW_INVOKER - 90)) | (1 << (TrinoSqlParser.KW_IO - 90)) | (1 << (TrinoSqlParser.KW_ISOLATION - 90)) | (1 << (TrinoSqlParser.KW_JSON - 90)) | (1 << (TrinoSqlParser.KW_LAST - 90)) | (1 << (TrinoSqlParser.KW_LATERAL - 90)) | (1 << (TrinoSqlParser.KW_LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.KW_LIMIT - 123)) | (1 << (TrinoSqlParser.KW_LOCAL - 123)) | (1 << (TrinoSqlParser.KW_LOGICAL - 123)) | (1 << (TrinoSqlParser.KW_MAP - 123)) | (1 << (TrinoSqlParser.KW_MATCH - 123)) | (1 << (TrinoSqlParser.KW_MATCHED - 123)) | (1 << (TrinoSqlParser.KW_MATCHES - 123)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 123)) | (1 << (TrinoSqlParser.KW_MEASURES - 123)) | (1 << (TrinoSqlParser.KW_MERGE - 123)) | (1 << (TrinoSqlParser.KW_MINUTE - 123)) | (1 << (TrinoSqlParser.KW_MONTH - 123)) | (1 << (TrinoSqlParser.KW_NEXT - 123)) | (1 << (TrinoSqlParser.KW_NFC - 123)) | (1 << (TrinoSqlParser.KW_NFD - 123)) | (1 << (TrinoSqlParser.KW_NFKC - 123)) | (1 << (TrinoSqlParser.KW_NFKD - 123)) | (1 << (TrinoSqlParser.KW_NO - 123)) | (1 << (TrinoSqlParser.KW_NONE - 123)) | (1 << (TrinoSqlParser.KW_NULLIF - 123)) | (1 << (TrinoSqlParser.KW_NULLS - 123)) | (1 << (TrinoSqlParser.KW_OFFSET - 123)) | (1 << (TrinoSqlParser.KW_OMIT - 123)) | (1 << (TrinoSqlParser.KW_ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.KW_ONLY - 155)) | (1 << (TrinoSqlParser.KW_OPTION - 155)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 155)) | (1 << (TrinoSqlParser.KW_OUTPUT - 155)) | (1 << (TrinoSqlParser.KW_OVER - 155)) | (1 << (TrinoSqlParser.KW_PARTITION - 155)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 155)) | (1 << (TrinoSqlParser.KW_PAST - 155)) | (1 << (TrinoSqlParser.KW_PATH - 155)) | (1 << (TrinoSqlParser.KW_PATTERN - 155)) | (1 << (TrinoSqlParser.KW_PER - 155)) | (1 << (TrinoSqlParser.KW_PERMUTE - 155)) | (1 << (TrinoSqlParser.KW_POSITION - 155)) | (1 << (TrinoSqlParser.KW_PRECEDING - 155)) | (1 << (TrinoSqlParser.KW_PRECISION - 155)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 155)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 155)) | (1 << (TrinoSqlParser.KW_RANGE - 155)) | (1 << (TrinoSqlParser.KW_READ - 155)) | (1 << (TrinoSqlParser.KW_REFRESH - 155)) | (1 << (TrinoSqlParser.KW_RENAME - 155)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 155)) | (1 << (TrinoSqlParser.KW_REPLACE - 155)) | (1 << (TrinoSqlParser.KW_RESET - 155)) | (1 << (TrinoSqlParser.KW_RESPECT - 155)) | (1 << (TrinoSqlParser.KW_RESTRICT - 155)) | (1 << (TrinoSqlParser.KW_REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.KW_ROLE - 188)) | (1 << (TrinoSqlParser.KW_ROLES - 188)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 188)) | (1 << (TrinoSqlParser.KW_ROW - 188)) | (1 << (TrinoSqlParser.KW_ROWS - 188)) | (1 << (TrinoSqlParser.KW_RUNNING - 188)) | (1 << (TrinoSqlParser.KW_SCHEMA - 188)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 188)) | (1 << (TrinoSqlParser.KW_SECOND - 188)) | (1 << (TrinoSqlParser.KW_SECURITY - 188)) | (1 << (TrinoSqlParser.KW_SEEK - 188)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.KW_SESSION - 188)) | (1 << (TrinoSqlParser.KW_SET - 188)) | (1 << (TrinoSqlParser.KW_SETS - 188)) | (1 << (TrinoSqlParser.KW_SHOW - 188)) | (1 << (TrinoSqlParser.KW_SOME - 188)) | (1 << (TrinoSqlParser.KW_START - 188)) | (1 << (TrinoSqlParser.KW_STATS - 188)) | (1 << (TrinoSqlParser.KW_SUBSET - 188)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 188)) | (1 << (TrinoSqlParser.KW_SYSTEM - 188)) | (1 << (TrinoSqlParser.KW_TABLES - 188)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.KW_TEXT - 188)) | (1 << (TrinoSqlParser.KW_TIES - 188)) | (1 << (TrinoSqlParser.KW_TIME - 188)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.KW_TO - 220)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 220)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 220)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 220)) | (1 << (TrinoSqlParser.KW_TYPE - 220)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 220)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 220)) | (1 << (TrinoSqlParser.KW_UPDATE - 220)) | (1 << (TrinoSqlParser.KW_USE - 220)) | (1 << (TrinoSqlParser.KW_USER - 220)) | (1 << (TrinoSqlParser.KW_VALIDATE - 220)) | (1 << (TrinoSqlParser.KW_VERBOSE - 220)) | (1 << (TrinoSqlParser.KW_VIEW - 220)) | (1 << (TrinoSqlParser.KW_WINDOW - 220)) | (1 << (TrinoSqlParser.KW_WITHOUT - 220)) | (1 << (TrinoSqlParser.KW_WORK - 220)) | (1 << (TrinoSqlParser.KW_WRITE - 220)) | (1 << (TrinoSqlParser.KW_YEAR - 220)) | (1 << (TrinoSqlParser.KW_ZONE - 220)))) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & ((1 << (TrinoSqlParser.IDENTIFIER - 268)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 268)))) !== 0)) { { - this.state = 961; + this.state = 999; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AS) { + if (_la === TrinoSqlParser.KW_AS) { { - this.state = 960; - this.match(TrinoSqlParser.AS); + this.state = 998; + this.match(TrinoSqlParser.KW_AS); } } - this.state = 963; + this.state = 1001; this.identifier(); } } - this.state = 966; - this.match(TrinoSqlParser.USING); - this.state = 967; + this.state = 1004; + this.match(TrinoSqlParser.KW_USING); + this.state = 1005; this.relation(0); - this.state = 968; - this.match(TrinoSqlParser.ON); - this.state = 969; + this.state = 1006; + this.match(TrinoSqlParser.KW_ON); + this.state = 1007; this.expression(); - this.state = 971; + this.state = 1009; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 970; + this.state = 1008; this.mergeCase(); } } - this.state = 973; + this.state = 1011; this._errHandler.sync(this); _la = this._input.LA(1); - } while (_la === TrinoSqlParser.WHEN); + } while (_la === TrinoSqlParser.KW_WHEN); + } + break; + + case 73: + _localctx = new ShowTableCommentContext(_localctx); + this.enterOuterAlt(_localctx, 73); + { + this.state = 1013; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 1014; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 1015; + this.match(TrinoSqlParser.KW_ON); + this.state = 1016; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 1017; + this.tableName(); } break; case 74: - _localctx = new ShowTableCommentContext(_localctx); + _localctx = new ShowColumnCommentContext(_localctx); this.enterOuterAlt(_localctx, 74); { - this.state = 975; - this.match(TrinoSqlParser.SHOW); - this.state = 976; - this.match(TrinoSqlParser.COMMENT); - this.state = 977; - this.match(TrinoSqlParser.ON); - this.state = 978; - this.match(TrinoSqlParser.TABLE); - this.state = 979; - this.qualifiedName(); - } - break; - - case 75: - _localctx = new ShowColumnCommentContext(_localctx); - this.enterOuterAlt(_localctx, 75); - { - this.state = 980; - this.match(TrinoSqlParser.SHOW); - this.state = 981; - this.match(TrinoSqlParser.COMMENT); - this.state = 982; - this.match(TrinoSqlParser.ON); - this.state = 983; - this.match(TrinoSqlParser.COLUMN); - this.state = 984; + this.state = 1018; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 1019; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 1020; + this.match(TrinoSqlParser.KW_ON); + this.state = 1021; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 1022; this.qualifiedName(); } break; @@ -3414,17 +3467,17 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 988; + this.state = 1026; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.WITH) { + if (_la === TrinoSqlParser.KW_WITH) { { - this.state = 987; + this.state = 1025; this.with(); } } - this.state = 990; + this.state = 1028; this.queryNoWith(); } } @@ -3450,33 +3503,33 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 992; - this.match(TrinoSqlParser.WITH); - this.state = 994; + this.state = 1030; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1032; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.RECURSIVE) { + if (_la === TrinoSqlParser.KW_RECURSIVE) { { - this.state = 993; - this.match(TrinoSqlParser.RECURSIVE); + this.state = 1031; + this.match(TrinoSqlParser.KW_RECURSIVE); } } - this.state = 996; + this.state = 1034; this.namedQuery(); - this.state = 1001; + this.state = 1039; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 997; - this.match(TrinoSqlParser.T__3); - this.state = 998; + this.state = 1035; + this.match(TrinoSqlParser.T__2); + this.state = 1036; this.namedQuery(); } } - this.state = 1003; + this.state = 1041; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3501,182 +3554,182 @@ export class TrinoSqlParser extends Parser { let _localctx: TableElementContext = new TableElementContext(this._ctx, this.state); this.enterRule(_localctx, 20, TrinoSqlParser.RULE_tableElement); try { - this.state = 1006; + this.state = 1044; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ADD: - case TrinoSqlParser.ADMIN: - case TrinoSqlParser.AFTER: - case TrinoSqlParser.ALL: - case TrinoSqlParser.ANALYZE: - case TrinoSqlParser.ANY: - case TrinoSqlParser.ARRAY: - case TrinoSqlParser.ASC: - case TrinoSqlParser.AT: - case TrinoSqlParser.AUTHORIZATION: - case TrinoSqlParser.BERNOULLI: - case TrinoSqlParser.CALL: - case TrinoSqlParser.CASCADE: - case TrinoSqlParser.CATALOGS: - case TrinoSqlParser.COLUMN: - case TrinoSqlParser.COLUMNS: - case TrinoSqlParser.COMMENT: - case TrinoSqlParser.COMMIT: - case TrinoSqlParser.COMMITTED: - case TrinoSqlParser.CURRENT: - case TrinoSqlParser.DATA: - case TrinoSqlParser.DATE: - case TrinoSqlParser.DAY: - case TrinoSqlParser.DEFAULT: - case TrinoSqlParser.DEFINER: - case TrinoSqlParser.DESC: - case TrinoSqlParser.DEFINE: - case TrinoSqlParser.DISTRIBUTED: - case TrinoSqlParser.DOUBLE: - case TrinoSqlParser.EMPTY: - case TrinoSqlParser.EXCLUDING: - case TrinoSqlParser.EXPLAIN: - case TrinoSqlParser.FETCH: - case TrinoSqlParser.FILTER: - case TrinoSqlParser.FINAL: - case TrinoSqlParser.FIRST: - case TrinoSqlParser.FOLLOWING: - case TrinoSqlParser.FORMAT: - case TrinoSqlParser.FUNCTIONS: - case TrinoSqlParser.GRANT: - case TrinoSqlParser.GRANTED: - case TrinoSqlParser.GRANTS: - case TrinoSqlParser.DENY: - case TrinoSqlParser.GRAPHVIZ: - case TrinoSqlParser.GROUPS: - case TrinoSqlParser.HOUR: - case TrinoSqlParser.IF: - case TrinoSqlParser.IGNORE: - case TrinoSqlParser.INCLUDING: - case TrinoSqlParser.INITIAL: - case TrinoSqlParser.INPUT: - case TrinoSqlParser.INTERVAL: - case TrinoSqlParser.INVOKER: - case TrinoSqlParser.IO: - case TrinoSqlParser.ISOLATION: - case TrinoSqlParser.JSON: - case TrinoSqlParser.LAST: - case TrinoSqlParser.LATERAL: - case TrinoSqlParser.LEVEL: - case TrinoSqlParser.LIMIT: - case TrinoSqlParser.LOCAL: - case TrinoSqlParser.LOGICAL: - case TrinoSqlParser.MAP: - case TrinoSqlParser.MATCH: - case TrinoSqlParser.MATCHED: - case TrinoSqlParser.MATCHES: - case TrinoSqlParser.MATCH_RECOGNIZE: - case TrinoSqlParser.MATERIALIZED: - case TrinoSqlParser.MEASURES: - case TrinoSqlParser.MERGE: - case TrinoSqlParser.MINUTE: - case TrinoSqlParser.MONTH: - case TrinoSqlParser.NEXT: - case TrinoSqlParser.NFC: - case TrinoSqlParser.NFD: - case TrinoSqlParser.NFKC: - case TrinoSqlParser.NFKD: - case TrinoSqlParser.NO: - case TrinoSqlParser.NONE: - case TrinoSqlParser.NULLIF: - case TrinoSqlParser.NULLS: - case TrinoSqlParser.OFFSET: - case TrinoSqlParser.OMIT: - case TrinoSqlParser.ONE: - case TrinoSqlParser.ONLY: - case TrinoSqlParser.OPTION: - case TrinoSqlParser.ORDINALITY: - case TrinoSqlParser.OUTPUT: - case TrinoSqlParser.OVER: - case TrinoSqlParser.PARTITION: - case TrinoSqlParser.PARTITIONS: - case TrinoSqlParser.PAST: - case TrinoSqlParser.PATH: - case TrinoSqlParser.PATTERN: - case TrinoSqlParser.PER: - case TrinoSqlParser.PERMUTE: - case TrinoSqlParser.POSITION: - case TrinoSqlParser.PRECEDING: - case TrinoSqlParser.PRECISION: - case TrinoSqlParser.PRIVILEGES: - case TrinoSqlParser.PROPERTIES: - case TrinoSqlParser.RANGE: - case TrinoSqlParser.READ: - case TrinoSqlParser.REFRESH: - case TrinoSqlParser.RENAME: - case TrinoSqlParser.REPEATABLE: - case TrinoSqlParser.REPLACE: - case TrinoSqlParser.RESET: - case TrinoSqlParser.RESPECT: - case TrinoSqlParser.RESTRICT: - case TrinoSqlParser.REVOKE: - case TrinoSqlParser.ROLE: - case TrinoSqlParser.ROLES: - case TrinoSqlParser.ROLLBACK: - case TrinoSqlParser.ROW: - case TrinoSqlParser.ROWS: - case TrinoSqlParser.RUNNING: - case TrinoSqlParser.SCHEMA: - case TrinoSqlParser.SCHEMAS: - case TrinoSqlParser.SECOND: - case TrinoSqlParser.SECURITY: - case TrinoSqlParser.SEEK: - case TrinoSqlParser.SERIALIZABLE: - case TrinoSqlParser.SESSION: - case TrinoSqlParser.SET: - case TrinoSqlParser.SETS: - case TrinoSqlParser.SHOW: - case TrinoSqlParser.SOME: - case TrinoSqlParser.START: - case TrinoSqlParser.STATS: - case TrinoSqlParser.SUBSET: - case TrinoSqlParser.SUBSTRING: - case TrinoSqlParser.SYSTEM: - case TrinoSqlParser.TABLES: - case TrinoSqlParser.TABLESAMPLE: - case TrinoSqlParser.TEXT: - case TrinoSqlParser.TIES: - case TrinoSqlParser.TIME: - case TrinoSqlParser.TIMESTAMP: - case TrinoSqlParser.TO: - case TrinoSqlParser.TRANSACTION: - case TrinoSqlParser.TRUNCATE: - case TrinoSqlParser.TRY_CAST: - case TrinoSqlParser.TYPE: - case TrinoSqlParser.UNBOUNDED: - case TrinoSqlParser.UNCOMMITTED: - case TrinoSqlParser.UNMATCHED: - case TrinoSqlParser.UPDATE: - case TrinoSqlParser.USE: - case TrinoSqlParser.USER: - case TrinoSqlParser.VALIDATE: - case TrinoSqlParser.VERBOSE: - case TrinoSqlParser.VIEW: - case TrinoSqlParser.WINDOW: - case TrinoSqlParser.WITHOUT: - case TrinoSqlParser.WORK: - case TrinoSqlParser.WRITE: - case TrinoSqlParser.YEAR: - case TrinoSqlParser.ZONE: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: case TrinoSqlParser.IDENTIFIER: case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(_localctx, 1); { - this.state = 1004; + this.state = 1042; this.columnDefinition(); } break; - case TrinoSqlParser.LIKE: + case TrinoSqlParser.KW_LIKE: this.enterOuterAlt(_localctx, 2); { - this.state = 1005; + this.state = 1043; this.likeClause(); } break; @@ -3705,42 +3758,42 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1008; + this.state = 1046; this.identifier(); - this.state = 1009; + this.state = 1047; this.type(0); - this.state = 1012; + this.state = 1050; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 116, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 122, this._ctx) ) { case 1: { - this.state = 1010; - this.match(TrinoSqlParser.NOT); - this.state = 1011; - this.match(TrinoSqlParser.NULL); + this.state = 1048; + this.match(TrinoSqlParser.KW_NOT); + this.state = 1049; + this.match(TrinoSqlParser.KW_NULL); } break; } - this.state = 1016; + this.state = 1054; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 117, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 123, this._ctx) ) { case 1: { - this.state = 1014; - this.match(TrinoSqlParser.COMMENT); - this.state = 1015; + this.state = 1052; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 1053; this.string(); } break; } - this.state = 1020; + this.state = 1058; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 118, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 124, this._ctx) ) { case 1: { - this.state = 1018; - this.match(TrinoSqlParser.WITH); - this.state = 1019; + this.state = 1056; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1057; this.properties(); } break; @@ -3769,19 +3822,19 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1022; - this.match(TrinoSqlParser.LIKE); - this.state = 1023; - this.qualifiedName(); - this.state = 1026; + this.state = 1060; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 1061; + this.tableName(); + this.state = 1064; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.EXCLUDING || _la === TrinoSqlParser.INCLUDING) { + if (_la === TrinoSqlParser.KW_EXCLUDING || _la === TrinoSqlParser.KW_INCLUDING) { { - this.state = 1024; + this.state = 1062; _localctx._optionType = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.EXCLUDING || _la === TrinoSqlParser.INCLUDING)) { + if (!(_la === TrinoSqlParser.KW_EXCLUDING || _la === TrinoSqlParser.KW_INCLUDING)) { _localctx._optionType = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -3791,8 +3844,8 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1025; - this.match(TrinoSqlParser.PROPERTIES); + this.state = 1063; + this.match(TrinoSqlParser.KW_PROPERTIES); } } @@ -3819,12 +3872,12 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1028; - this.match(TrinoSqlParser.T__1); - this.state = 1029; + this.state = 1066; + this.match(TrinoSqlParser.T__0); + this.state = 1067; this.propertyAssignments(); - this.state = 1030; - this.match(TrinoSqlParser.T__2); + this.state = 1068; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -3849,21 +3902,21 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1032; + this.state = 1070; this.property(); - this.state = 1037; + this.state = 1075; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1033; - this.match(TrinoSqlParser.T__3); - this.state = 1034; + this.state = 1071; + this.match(TrinoSqlParser.T__2); + this.state = 1072; this.property(); } } - this.state = 1039; + this.state = 1077; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3890,11 +3943,11 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1040; + this.state = 1078; this.identifier(); - this.state = 1041; + this.state = 1079; this.match(TrinoSqlParser.EQ); - this.state = 1042; + this.state = 1080; this.propertyValue(); } } @@ -3917,15 +3970,15 @@ export class TrinoSqlParser extends Parser { let _localctx: PropertyValueContext = new PropertyValueContext(this._ctx, this.state); this.enterRule(_localctx, 32, TrinoSqlParser.RULE_propertyValue); try { - this.state = 1046; + this.state = 1084; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 121, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 127, this._ctx) ) { case 1: _localctx = new DefaultPropertyValueContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1044; - this.match(TrinoSqlParser.DEFAULT); + this.state = 1082; + this.match(TrinoSqlParser.KW_DEFAULT); } break; @@ -3933,7 +3986,7 @@ export class TrinoSqlParser extends Parser { _localctx = new NonDefaultPropertyValueContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1045; + this.state = 1083; this.expression(); } break; @@ -3961,55 +4014,55 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1048; + this.state = 1086; this.queryTerm(0); - this.state = 1059; + this.state = 1097; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ORDER) { + if (_la === TrinoSqlParser.KW_ORDER) { { - this.state = 1049; - this.match(TrinoSqlParser.ORDER); - this.state = 1050; - this.match(TrinoSqlParser.BY); - this.state = 1051; + this.state = 1087; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 1088; + this.match(TrinoSqlParser.KW_BY); + this.state = 1089; this.sortItem(); - this.state = 1056; + this.state = 1094; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1052; - this.match(TrinoSqlParser.T__3); - this.state = 1053; + this.state = 1090; + this.match(TrinoSqlParser.T__2); + this.state = 1091; this.sortItem(); } } - this.state = 1058; + this.state = 1096; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1066; + this.state = 1104; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 125, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 131, this._ctx) ) { case 1: { - this.state = 1061; - this.match(TrinoSqlParser.OFFSET); - this.state = 1062; + this.state = 1099; + this.match(TrinoSqlParser.KW_OFFSET); + this.state = 1100; _localctx._offset = this.rowCount(); - this.state = 1064; + this.state = 1102; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 124, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 130, this._ctx) ) { case 1: { - this.state = 1063; + this.state = 1101; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.ROW || _la === TrinoSqlParser.ROWS)) { + if (!(_la === TrinoSqlParser.KW_ROW || _la === TrinoSqlParser.KW_ROWS)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -4025,15 +4078,15 @@ export class TrinoSqlParser extends Parser { } break; } - this.state = 1081; + this.state = 1119; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 128, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 134, this._ctx) ) { case 1: { { - this.state = 1068; - this.match(TrinoSqlParser.LIMIT); - this.state = 1069; + this.state = 1106; + this.match(TrinoSqlParser.KW_LIMIT); + this.state = 1107; _localctx._limit = this.limitRowCount(); } } @@ -4042,11 +4095,11 @@ export class TrinoSqlParser extends Parser { case 2: { { - this.state = 1070; - this.match(TrinoSqlParser.FETCH); - this.state = 1071; + this.state = 1108; + this.match(TrinoSqlParser.KW_FETCH); + this.state = 1109; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FIRST || _la === TrinoSqlParser.NEXT)) { + if (!(_la === TrinoSqlParser.KW_FIRST || _la === TrinoSqlParser.KW_NEXT)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -4056,19 +4109,19 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1073; + this.state = 1111; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.QUESTION_MARK || _la === TrinoSqlParser.INTEGER_VALUE) { { - this.state = 1072; + this.state = 1110; _localctx._fetchFirst = this.rowCount(); } } - this.state = 1075; + this.state = 1113; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.ROW || _la === TrinoSqlParser.ROWS)) { + if (!(_la === TrinoSqlParser.KW_ROW || _la === TrinoSqlParser.KW_ROWS)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -4078,21 +4131,21 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1079; + this.state = 1117; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ONLY: + case TrinoSqlParser.KW_ONLY: { - this.state = 1076; - this.match(TrinoSqlParser.ONLY); + this.state = 1114; + this.match(TrinoSqlParser.KW_ONLY); } break; - case TrinoSqlParser.WITH: + case TrinoSqlParser.KW_WITH: { - this.state = 1077; - this.match(TrinoSqlParser.WITH); - this.state = 1078; - this.match(TrinoSqlParser.TIES); + this.state = 1115; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1116; + this.match(TrinoSqlParser.KW_TIES); } break; default: @@ -4123,21 +4176,21 @@ export class TrinoSqlParser extends Parser { let _localctx: LimitRowCountContext = new LimitRowCountContext(this._ctx, this.state); this.enterRule(_localctx, 36, TrinoSqlParser.RULE_limitRowCount); try { - this.state = 1085; + this.state = 1123; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ALL: + case TrinoSqlParser.KW_ALL: this.enterOuterAlt(_localctx, 1); { - this.state = 1083; - this.match(TrinoSqlParser.ALL); + this.state = 1121; + this.match(TrinoSqlParser.KW_ALL); } break; case TrinoSqlParser.QUESTION_MARK: case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(_localctx, 2); { - this.state = 1084; + this.state = 1122; this.rowCount(); } break; @@ -4167,7 +4220,7 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1087; + this.state = 1125; _la = this._input.LA(1); if (!(_la === TrinoSqlParser.QUESTION_MARK || _la === TrinoSqlParser.INTEGER_VALUE)) { this._errHandler.recoverInline(this); @@ -4220,13 +4273,13 @@ export class TrinoSqlParser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 1090; + this.state = 1128; this.queryPrimary(); } this._ctx._stop = this._input.tryLT(-1); - this.state = 1106; + this.state = 1144; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 133, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 139, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -4234,31 +4287,31 @@ export class TrinoSqlParser extends Parser { } _prevctx = _localctx; { - this.state = 1104; + this.state = 1142; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 132, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 138, this._ctx) ) { case 1: { _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); (_localctx as SetOperationContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_queryTerm); - this.state = 1092; + this.state = 1130; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 1093; - (_localctx as SetOperationContext)._operator = this.match(TrinoSqlParser.INTERSECT); - this.state = 1095; + this.state = 1131; + (_localctx as SetOperationContext)._operator = this.match(TrinoSqlParser.KW_INTERSECT); + this.state = 1133; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ALL || _la === TrinoSqlParser.DISTINCT) { + if (_la === TrinoSqlParser.KW_ALL || _la === TrinoSqlParser.KW_DISTINCT) { { - this.state = 1094; + this.state = 1132; this.setQuantifier(); } } - this.state = 1097; + this.state = 1135; (_localctx as SetOperationContext)._right = this.queryTerm(3); } break; @@ -4268,14 +4321,14 @@ export class TrinoSqlParser extends Parser { _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); (_localctx as SetOperationContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_queryTerm); - this.state = 1098; + this.state = 1136; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 1099; + this.state = 1137; (_localctx as SetOperationContext)._operator = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.EXCEPT || _la === TrinoSqlParser.UNION)) { + if (!(_la === TrinoSqlParser.KW_EXCEPT || _la === TrinoSqlParser.KW_UNION)) { (_localctx as SetOperationContext)._operator = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -4285,26 +4338,26 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1101; + this.state = 1139; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ALL || _la === TrinoSqlParser.DISTINCT) { + if (_la === TrinoSqlParser.KW_ALL || _la === TrinoSqlParser.KW_DISTINCT) { { - this.state = 1100; + this.state = 1138; this.setQuantifier(); } } - this.state = 1103; + this.state = 1141; (_localctx as SetOperationContext)._right = this.queryTerm(2); } break; } } } - this.state = 1108; + this.state = 1146; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 133, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 139, this._ctx); } } } @@ -4328,65 +4381,65 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 42, TrinoSqlParser.RULE_queryPrimary); try { let _alt: number; - this.state = 1125; + this.state = 1163; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.SELECT: + case TrinoSqlParser.KW_SELECT: _localctx = new QueryPrimaryDefaultContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1109; + this.state = 1147; this.querySpecification(); } break; - case TrinoSqlParser.TABLE: + case TrinoSqlParser.KW_TABLE: _localctx = new TableContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1110; - this.match(TrinoSqlParser.TABLE); - this.state = 1111; - this.qualifiedName(); + this.state = 1148; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 1149; + this.tableName(); } break; - case TrinoSqlParser.VALUES: + case TrinoSqlParser.KW_VALUES: _localctx = new InlineTableContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 1112; - this.match(TrinoSqlParser.VALUES); - this.state = 1113; + this.state = 1150; + this.match(TrinoSqlParser.KW_VALUES); + this.state = 1151; this.expression(); - this.state = 1118; + this.state = 1156; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 134, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 140, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1114; - this.match(TrinoSqlParser.T__3); - this.state = 1115; + this.state = 1152; + this.match(TrinoSqlParser.T__2); + this.state = 1153; this.expression(); } } } - this.state = 1120; + this.state = 1158; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 134, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 140, this._ctx); } } break; - case TrinoSqlParser.T__1: + case TrinoSqlParser.T__0: _localctx = new SubqueryContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 1121; - this.match(TrinoSqlParser.T__1); - this.state = 1122; + this.state = 1159; + this.match(TrinoSqlParser.T__0); + this.state = 1160; this.queryNoWith(); - this.state = 1123; - this.match(TrinoSqlParser.T__2); + this.state = 1161; + this.match(TrinoSqlParser.T__1); } break; default: @@ -4415,17 +4468,17 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1127; + this.state = 1165; this.expression(); - this.state = 1129; + this.state = 1167; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 136, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 142, this._ctx) ) { case 1: { - this.state = 1128; + this.state = 1166; _localctx._ordering = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.ASC || _la === TrinoSqlParser.DESC)) { + if (!(_la === TrinoSqlParser.KW_ASC || _la === TrinoSqlParser.KW_DESC)) { _localctx._ordering = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -4438,17 +4491,17 @@ export class TrinoSqlParser extends Parser { } break; } - this.state = 1133; + this.state = 1171; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 137, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 143, this._ctx) ) { case 1: { - this.state = 1131; - this.match(TrinoSqlParser.NULLS); - this.state = 1132; + this.state = 1169; + this.match(TrinoSqlParser.KW_NULLS); + this.state = 1170; _localctx._nullOrdering = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FIRST || _la === TrinoSqlParser.LAST)) { + if (!(_la === TrinoSqlParser.KW_FIRST || _la === TrinoSqlParser.KW_LAST)) { _localctx._nullOrdering = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -4485,132 +4538,132 @@ export class TrinoSqlParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 1135; - this.match(TrinoSqlParser.SELECT); - this.state = 1137; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 138, this._ctx) ) { - case 1: - { - this.state = 1136; - this.setQuantifier(); - } - break; - } - this.state = 1139; - this.selectItem(); - this.state = 1144; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 139, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 1140; - this.match(TrinoSqlParser.T__3); - this.state = 1141; - this.selectItem(); - } - } - } - this.state = 1146; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 139, this._ctx); - } - this.state = 1156; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 141, this._ctx) ) { - case 1: - { - this.state = 1147; - this.match(TrinoSqlParser.FROM); - this.state = 1148; - this.relation(0); - this.state = 1153; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 140, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 1149; - this.match(TrinoSqlParser.T__3); - this.state = 1150; - this.relation(0); - } - } - } - this.state = 1155; - this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 140, this._ctx); - } - } - break; - } - this.state = 1160; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 142, this._ctx) ) { - case 1: - { - this.state = 1158; - this.match(TrinoSqlParser.WHERE); - this.state = 1159; - _localctx._where = this.booleanExpression(0); - } - break; - } - this.state = 1165; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 143, this._ctx) ) { - case 1: - { - this.state = 1162; - this.match(TrinoSqlParser.GROUP); - this.state = 1163; - this.match(TrinoSqlParser.BY); - this.state = 1164; - this.groupBy(); - } - break; - } - this.state = 1169; + this.state = 1173; + this.match(TrinoSqlParser.KW_SELECT); + this.state = 1175; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 144, this._ctx) ) { case 1: { - this.state = 1167; - this.match(TrinoSqlParser.HAVING); - this.state = 1168; - _localctx._having = this.booleanExpression(0); + this.state = 1174; + this.setQuantifier(); } break; } - this.state = 1180; + this.state = 1177; + this.selectItem(); + this.state = 1182; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 146, this._ctx) ) { - case 1: - { - this.state = 1171; - this.match(TrinoSqlParser.WINDOW); - this.state = 1172; - this.windowDefinition(); - this.state = 1177; + _alt = this.interpreter.adaptivePredict(this._input, 145, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 1178; + this.match(TrinoSqlParser.T__2); + this.state = 1179; + this.selectItem(); + } + } + } + this.state = 1184; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 145, this._ctx); + } + this.state = 1194; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 147, this._ctx) ) { + case 1: + { + this.state = 1185; + this.match(TrinoSqlParser.KW_FROM); + this.state = 1186; + this.relation(0); + this.state = 1191; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 146, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1173; - this.match(TrinoSqlParser.T__3); - this.state = 1174; + this.state = 1187; + this.match(TrinoSqlParser.T__2); + this.state = 1188; + this.relation(0); + } + } + } + this.state = 1193; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 146, this._ctx); + } + } + break; + } + this.state = 1198; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 148, this._ctx) ) { + case 1: + { + this.state = 1196; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 1197; + _localctx._where = this.booleanExpression(0); + } + break; + } + this.state = 1203; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 149, this._ctx) ) { + case 1: + { + this.state = 1200; + this.match(TrinoSqlParser.KW_GROUP); + this.state = 1201; + this.match(TrinoSqlParser.KW_BY); + this.state = 1202; + this.groupBy(); + } + break; + } + this.state = 1207; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 150, this._ctx) ) { + case 1: + { + this.state = 1205; + this.match(TrinoSqlParser.KW_HAVING); + this.state = 1206; + _localctx._having = this.booleanExpression(0); + } + break; + } + this.state = 1218; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 152, this._ctx) ) { + case 1: + { + this.state = 1209; + this.match(TrinoSqlParser.KW_WINDOW); + this.state = 1210; + this.windowDefinition(); + this.state = 1215; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 151, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 1211; + this.match(TrinoSqlParser.T__2); + this.state = 1212; this.windowDefinition(); } } } - this.state = 1179; + this.state = 1217; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 145, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 151, this._ctx); } } break; @@ -4639,35 +4692,35 @@ export class TrinoSqlParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 1183; + this.state = 1221; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 147, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 153, this._ctx) ) { case 1: { - this.state = 1182; + this.state = 1220; this.setQuantifier(); } break; } - this.state = 1185; + this.state = 1223; this.groupingElement(); - this.state = 1190; + this.state = 1228; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 148, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 154, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1186; - this.match(TrinoSqlParser.T__3); - this.state = 1187; + this.state = 1224; + this.match(TrinoSqlParser.T__2); + this.state = 1225; this.groupingElement(); } } } - this.state = 1192; + this.state = 1230; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 148, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 154, this._ctx); } } } @@ -4691,14 +4744,14 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 50, TrinoSqlParser.RULE_groupingElement); let _la: number; try { - this.state = 1233; + this.state = 1271; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 154, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 160, this._ctx) ) { case 1: _localctx = new SingleGroupingSetContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1193; + this.state = 1231; this.groupingSet(); } break; @@ -4707,38 +4760,38 @@ export class TrinoSqlParser extends Parser { _localctx = new RollupContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1194; - this.match(TrinoSqlParser.ROLLUP); - this.state = 1195; - this.match(TrinoSqlParser.T__1); - this.state = 1204; + this.state = 1232; + this.match(TrinoSqlParser.KW_ROLLUP); + this.state = 1233; + this.match(TrinoSqlParser.T__0); + this.state = 1242; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { - this.state = 1196; + this.state = 1234; this.expression(); - this.state = 1201; + this.state = 1239; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1197; - this.match(TrinoSqlParser.T__3); - this.state = 1198; + this.state = 1235; + this.match(TrinoSqlParser.T__2); + this.state = 1236; this.expression(); } } - this.state = 1203; + this.state = 1241; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1206; - this.match(TrinoSqlParser.T__2); + this.state = 1244; + this.match(TrinoSqlParser.T__1); } break; @@ -4746,38 +4799,38 @@ export class TrinoSqlParser extends Parser { _localctx = new CubeContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 1207; - this.match(TrinoSqlParser.CUBE); - this.state = 1208; - this.match(TrinoSqlParser.T__1); - this.state = 1217; + this.state = 1245; + this.match(TrinoSqlParser.KW_CUBE); + this.state = 1246; + this.match(TrinoSqlParser.T__0); + this.state = 1255; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { - this.state = 1209; + this.state = 1247; this.expression(); - this.state = 1214; + this.state = 1252; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1210; - this.match(TrinoSqlParser.T__3); - this.state = 1211; + this.state = 1248; + this.match(TrinoSqlParser.T__2); + this.state = 1249; this.expression(); } } - this.state = 1216; + this.state = 1254; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1219; - this.match(TrinoSqlParser.T__2); + this.state = 1257; + this.match(TrinoSqlParser.T__1); } break; @@ -4785,32 +4838,32 @@ export class TrinoSqlParser extends Parser { _localctx = new MultipleGroupingSetsContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 1220; - this.match(TrinoSqlParser.GROUPING); - this.state = 1221; - this.match(TrinoSqlParser.SETS); - this.state = 1222; - this.match(TrinoSqlParser.T__1); - this.state = 1223; + this.state = 1258; + this.match(TrinoSqlParser.KW_GROUPING); + this.state = 1259; + this.match(TrinoSqlParser.KW_SETS); + this.state = 1260; + this.match(TrinoSqlParser.T__0); + this.state = 1261; this.groupingSet(); - this.state = 1228; + this.state = 1266; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1224; - this.match(TrinoSqlParser.T__3); - this.state = 1225; + this.state = 1262; + this.match(TrinoSqlParser.T__2); + this.state = 1263; this.groupingSet(); } } - this.state = 1230; + this.state = 1268; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1231; - this.match(TrinoSqlParser.T__2); + this.state = 1269; + this.match(TrinoSqlParser.T__1); } break; } @@ -4835,49 +4888,49 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 52, TrinoSqlParser.RULE_groupingSet); let _la: number; try { - this.state = 1248; + this.state = 1286; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 157, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 163, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 1235; - this.match(TrinoSqlParser.T__1); - this.state = 1244; + this.state = 1273; + this.match(TrinoSqlParser.T__0); + this.state = 1282; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { - this.state = 1236; + this.state = 1274; this.expression(); - this.state = 1241; + this.state = 1279; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1237; - this.match(TrinoSqlParser.T__3); - this.state = 1238; + this.state = 1275; + this.match(TrinoSqlParser.T__2); + this.state = 1276; this.expression(); } } - this.state = 1243; + this.state = 1281; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1246; - this.match(TrinoSqlParser.T__2); + this.state = 1284; + this.match(TrinoSqlParser.T__1); } break; case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 1247; + this.state = 1285; this.expression(); } break; @@ -4904,16 +4957,16 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1250; + this.state = 1288; _localctx._name = this.identifier(); - this.state = 1251; - this.match(TrinoSqlParser.AS); - this.state = 1252; - this.match(TrinoSqlParser.T__1); - this.state = 1253; + this.state = 1289; + this.match(TrinoSqlParser.KW_AS); + this.state = 1290; + this.match(TrinoSqlParser.T__0); + this.state = 1291; this.windowSpecification(); - this.state = 1254; - this.match(TrinoSqlParser.T__2); + this.state = 1292; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -4938,84 +4991,84 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1257; + this.state = 1295; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 158, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 164, this._ctx) ) { case 1: { - this.state = 1256; + this.state = 1294; _localctx._existingWindowName = this.identifier(); } break; } - this.state = 1269; + this.state = 1307; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.PARTITION) { + if (_la === TrinoSqlParser.KW_PARTITION) { { - this.state = 1259; - this.match(TrinoSqlParser.PARTITION); - this.state = 1260; - this.match(TrinoSqlParser.BY); - this.state = 1261; + this.state = 1297; + this.match(TrinoSqlParser.KW_PARTITION); + this.state = 1298; + this.match(TrinoSqlParser.KW_BY); + this.state = 1299; _localctx._expression = this.expression(); _localctx._partition.push(_localctx._expression); - this.state = 1266; + this.state = 1304; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1262; - this.match(TrinoSqlParser.T__3); - this.state = 1263; + this.state = 1300; + this.match(TrinoSqlParser.T__2); + this.state = 1301; _localctx._expression = this.expression(); _localctx._partition.push(_localctx._expression); } } - this.state = 1268; + this.state = 1306; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1281; + this.state = 1319; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ORDER) { + if (_la === TrinoSqlParser.KW_ORDER) { { - this.state = 1271; - this.match(TrinoSqlParser.ORDER); - this.state = 1272; - this.match(TrinoSqlParser.BY); - this.state = 1273; + this.state = 1309; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 1310; + this.match(TrinoSqlParser.KW_BY); + this.state = 1311; this.sortItem(); - this.state = 1278; + this.state = 1316; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1274; - this.match(TrinoSqlParser.T__3); - this.state = 1275; + this.state = 1312; + this.match(TrinoSqlParser.T__2); + this.state = 1313; this.sortItem(); } } - this.state = 1280; + this.state = 1318; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1284; + this.state = 1322; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.GROUPS || _la === TrinoSqlParser.MEASURES || _la === TrinoSqlParser.RANGE || _la === TrinoSqlParser.ROWS) { + if (_la === TrinoSqlParser.KW_GROUPS || _la === TrinoSqlParser.KW_MEASURES || _la === TrinoSqlParser.KW_RANGE || _la === TrinoSqlParser.KW_ROWS) { { - this.state = 1283; + this.state = 1321; this.windowFrame(); } } @@ -5044,26 +5097,26 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1286; + this.state = 1324; _localctx._name = this.identifier(); - this.state = 1288; + this.state = 1326; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.T__1) { + if (_la === TrinoSqlParser.T__0) { { - this.state = 1287; + this.state = 1325; this.columnAliases(); } } - this.state = 1290; - this.match(TrinoSqlParser.AS); - this.state = 1291; - this.match(TrinoSqlParser.T__1); - this.state = 1292; + this.state = 1328; + this.match(TrinoSqlParser.KW_AS); + this.state = 1329; + this.match(TrinoSqlParser.T__0); + this.state = 1330; this.query(); - this.state = 1293; - this.match(TrinoSqlParser.T__2); + this.state = 1331; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -5088,9 +5141,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1295; + this.state = 1333; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.ALL || _la === TrinoSqlParser.DISTINCT)) { + if (!(_la === TrinoSqlParser.KW_ALL || _la === TrinoSqlParser.KW_DISTINCT)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -5122,31 +5175,31 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 62, TrinoSqlParser.RULE_selectItem); let _la: number; try { - this.state = 1312; + this.state = 1350; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 168, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 174, this._ctx) ) { case 1: _localctx = new SelectSingleContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1297; + this.state = 1335; this.expression(); - this.state = 1302; + this.state = 1340; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 166, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 172, this._ctx) ) { case 1: { - this.state = 1299; + this.state = 1337; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AS) { + if (_la === TrinoSqlParser.KW_AS) { { - this.state = 1298; - this.match(TrinoSqlParser.AS); + this.state = 1336; + this.match(TrinoSqlParser.KW_AS); } } - this.state = 1301; + this.state = 1339; this.identifier(); } break; @@ -5158,20 +5211,20 @@ export class TrinoSqlParser extends Parser { _localctx = new SelectAllContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1304; + this.state = 1342; this.primaryExpression(0); - this.state = 1305; - this.match(TrinoSqlParser.T__0); - this.state = 1306; + this.state = 1343; + this.match(TrinoSqlParser.T__3); + this.state = 1344; this.match(TrinoSqlParser.ASTERISK); - this.state = 1309; + this.state = 1347; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 167, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 173, this._ctx) ) { case 1: { - this.state = 1307; - this.match(TrinoSqlParser.AS); - this.state = 1308; + this.state = 1345; + this.match(TrinoSqlParser.KW_AS); + this.state = 1346; this.columnAliases(); } break; @@ -5183,7 +5236,7 @@ export class TrinoSqlParser extends Parser { _localctx = new SelectAllContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 1311; + this.state = 1349; this.match(TrinoSqlParser.ASTERISK); } break; @@ -5227,13 +5280,13 @@ export class TrinoSqlParser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 1315; + this.state = 1353; this.sampledRelation(); } this._ctx._stop = this._input.tryLT(-1); - this.state = 1335; + this.state = 1373; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 170, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 176, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -5245,48 +5298,48 @@ export class TrinoSqlParser extends Parser { _localctx = new JoinRelationContext(new RelationContext(_parentctx, _parentState)); (_localctx as JoinRelationContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_relation); - this.state = 1317; + this.state = 1355; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 1331; + this.state = 1369; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.CROSS: + case TrinoSqlParser.KW_CROSS: { - this.state = 1318; - this.match(TrinoSqlParser.CROSS); - this.state = 1319; - this.match(TrinoSqlParser.JOIN); - this.state = 1320; + this.state = 1356; + this.match(TrinoSqlParser.KW_CROSS); + this.state = 1357; + this.match(TrinoSqlParser.KW_JOIN); + this.state = 1358; (_localctx as JoinRelationContext)._right = this.sampledRelation(); } break; - case TrinoSqlParser.FULL: - case TrinoSqlParser.INNER: - case TrinoSqlParser.JOIN: - case TrinoSqlParser.LEFT: - case TrinoSqlParser.RIGHT: + case TrinoSqlParser.KW_FULL: + case TrinoSqlParser.KW_INNER: + case TrinoSqlParser.KW_JOIN: + case TrinoSqlParser.KW_LEFT: + case TrinoSqlParser.KW_RIGHT: { - this.state = 1321; + this.state = 1359; this.joinType(); - this.state = 1322; - this.match(TrinoSqlParser.JOIN); - this.state = 1323; + this.state = 1360; + this.match(TrinoSqlParser.KW_JOIN); + this.state = 1361; (_localctx as JoinRelationContext)._rightRelation = this.relation(0); - this.state = 1324; + this.state = 1362; this.joinCriteria(); } break; - case TrinoSqlParser.NATURAL: + case TrinoSqlParser.KW_NATURAL: { - this.state = 1326; - this.match(TrinoSqlParser.NATURAL); - this.state = 1327; + this.state = 1364; + this.match(TrinoSqlParser.KW_NATURAL); + this.state = 1365; this.joinType(); - this.state = 1328; - this.match(TrinoSqlParser.JOIN); - this.state = 1329; + this.state = 1366; + this.match(TrinoSqlParser.KW_JOIN); + this.state = 1367; (_localctx as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -5296,9 +5349,9 @@ export class TrinoSqlParser extends Parser { } } } - this.state = 1337; + this.state = 1375; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 170, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 176, this._ctx); } } } @@ -5322,71 +5375,71 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 66, TrinoSqlParser.RULE_joinType); let _la: number; try { - this.state = 1353; + this.state = 1391; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.INNER: - case TrinoSqlParser.JOIN: + case TrinoSqlParser.KW_INNER: + case TrinoSqlParser.KW_JOIN: this.enterOuterAlt(_localctx, 1); { - this.state = 1339; + this.state = 1377; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.INNER) { + if (_la === TrinoSqlParser.KW_INNER) { { - this.state = 1338; - this.match(TrinoSqlParser.INNER); + this.state = 1376; + this.match(TrinoSqlParser.KW_INNER); } } } break; - case TrinoSqlParser.LEFT: + case TrinoSqlParser.KW_LEFT: this.enterOuterAlt(_localctx, 2); { - this.state = 1341; - this.match(TrinoSqlParser.LEFT); - this.state = 1343; + this.state = 1379; + this.match(TrinoSqlParser.KW_LEFT); + this.state = 1381; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.OUTER) { + if (_la === TrinoSqlParser.KW_OUTER) { { - this.state = 1342; - this.match(TrinoSqlParser.OUTER); + this.state = 1380; + this.match(TrinoSqlParser.KW_OUTER); } } } break; - case TrinoSqlParser.RIGHT: + case TrinoSqlParser.KW_RIGHT: this.enterOuterAlt(_localctx, 3); { - this.state = 1345; - this.match(TrinoSqlParser.RIGHT); - this.state = 1347; + this.state = 1383; + this.match(TrinoSqlParser.KW_RIGHT); + this.state = 1385; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.OUTER) { + if (_la === TrinoSqlParser.KW_OUTER) { { - this.state = 1346; - this.match(TrinoSqlParser.OUTER); + this.state = 1384; + this.match(TrinoSqlParser.KW_OUTER); } } } break; - case TrinoSqlParser.FULL: + case TrinoSqlParser.KW_FULL: this.enterOuterAlt(_localctx, 4); { - this.state = 1349; - this.match(TrinoSqlParser.FULL); - this.state = 1351; + this.state = 1387; + this.match(TrinoSqlParser.KW_FULL); + this.state = 1389; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.OUTER) { + if (_la === TrinoSqlParser.KW_OUTER) { { - this.state = 1350; - this.match(TrinoSqlParser.OUTER); + this.state = 1388; + this.match(TrinoSqlParser.KW_OUTER); } } @@ -5416,45 +5469,45 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 68, TrinoSqlParser.RULE_joinCriteria); let _la: number; try { - this.state = 1369; + this.state = 1407; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ON: + case TrinoSqlParser.KW_ON: this.enterOuterAlt(_localctx, 1); { - this.state = 1355; - this.match(TrinoSqlParser.ON); - this.state = 1356; + this.state = 1393; + this.match(TrinoSqlParser.KW_ON); + this.state = 1394; this.booleanExpression(0); } break; - case TrinoSqlParser.USING: + case TrinoSqlParser.KW_USING: this.enterOuterAlt(_localctx, 2); { - this.state = 1357; - this.match(TrinoSqlParser.USING); - this.state = 1358; - this.match(TrinoSqlParser.T__1); - this.state = 1359; + this.state = 1395; + this.match(TrinoSqlParser.KW_USING); + this.state = 1396; + this.match(TrinoSqlParser.T__0); + this.state = 1397; this.identifier(); - this.state = 1364; + this.state = 1402; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1360; - this.match(TrinoSqlParser.T__3); - this.state = 1361; + this.state = 1398; + this.match(TrinoSqlParser.T__2); + this.state = 1399; this.identifier(); } } - this.state = 1366; + this.state = 1404; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1367; - this.match(TrinoSqlParser.T__2); + this.state = 1405; + this.match(TrinoSqlParser.T__1); } break; default: @@ -5482,23 +5535,23 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1371; + this.state = 1409; this.patternRecognition(); - this.state = 1378; + this.state = 1416; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 178, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 184, this._ctx) ) { case 1: { - this.state = 1372; - this.match(TrinoSqlParser.TABLESAMPLE); - this.state = 1373; + this.state = 1410; + this.match(TrinoSqlParser.KW_TABLESAMPLE); + this.state = 1411; this.sampleType(); - this.state = 1374; - this.match(TrinoSqlParser.T__1); - this.state = 1375; + this.state = 1412; + this.match(TrinoSqlParser.T__0); + this.state = 1413; _localctx._percentage = this.expression(); - this.state = 1376; - this.match(TrinoSqlParser.T__2); + this.state = 1414; + this.match(TrinoSqlParser.T__1); } break; } @@ -5526,9 +5579,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1380; + this.state = 1418; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.BERNOULLI || _la === TrinoSqlParser.SYSTEM)) { + if (!(_la === TrinoSqlParser.KW_BERNOULLI || _la === TrinoSqlParser.KW_SYSTEM)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -5562,139 +5615,139 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1382; + this.state = 1420; this.aliasedRelation(); - this.state = 1465; + this.state = 1503; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 194, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 200, this._ctx) ) { case 1: { - this.state = 1383; - this.match(TrinoSqlParser.MATCH_RECOGNIZE); - this.state = 1384; - this.match(TrinoSqlParser.T__1); - this.state = 1395; + this.state = 1421; + this.match(TrinoSqlParser.KW_MATCH_RECOGNIZE); + this.state = 1422; + this.match(TrinoSqlParser.T__0); + this.state = 1433; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.PARTITION) { + if (_la === TrinoSqlParser.KW_PARTITION) { { - this.state = 1385; - this.match(TrinoSqlParser.PARTITION); - this.state = 1386; - this.match(TrinoSqlParser.BY); - this.state = 1387; + this.state = 1423; + this.match(TrinoSqlParser.KW_PARTITION); + this.state = 1424; + this.match(TrinoSqlParser.KW_BY); + this.state = 1425; _localctx._expression = this.expression(); _localctx._partition.push(_localctx._expression); - this.state = 1392; + this.state = 1430; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1388; - this.match(TrinoSqlParser.T__3); - this.state = 1389; + this.state = 1426; + this.match(TrinoSqlParser.T__2); + this.state = 1427; _localctx._expression = this.expression(); _localctx._partition.push(_localctx._expression); } } - this.state = 1394; + this.state = 1432; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1407; + this.state = 1445; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ORDER) { + if (_la === TrinoSqlParser.KW_ORDER) { { - this.state = 1397; - this.match(TrinoSqlParser.ORDER); - this.state = 1398; - this.match(TrinoSqlParser.BY); - this.state = 1399; + this.state = 1435; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 1436; + this.match(TrinoSqlParser.KW_BY); + this.state = 1437; this.sortItem(); - this.state = 1404; + this.state = 1442; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1400; - this.match(TrinoSqlParser.T__3); - this.state = 1401; + this.state = 1438; + this.match(TrinoSqlParser.T__2); + this.state = 1439; this.sortItem(); } } - this.state = 1406; + this.state = 1444; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1418; + this.state = 1456; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.MEASURES) { + if (_la === TrinoSqlParser.KW_MEASURES) { { - this.state = 1409; - this.match(TrinoSqlParser.MEASURES); - this.state = 1410; + this.state = 1447; + this.match(TrinoSqlParser.KW_MEASURES); + this.state = 1448; this.measureDefinition(); - this.state = 1415; + this.state = 1453; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1411; - this.match(TrinoSqlParser.T__3); - this.state = 1412; + this.state = 1449; + this.match(TrinoSqlParser.T__2); + this.state = 1450; this.measureDefinition(); } } - this.state = 1417; + this.state = 1455; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1421; + this.state = 1459; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ALL || _la === TrinoSqlParser.ONE) { + if (_la === TrinoSqlParser.KW_ALL || _la === TrinoSqlParser.KW_ONE) { { - this.state = 1420; + this.state = 1458; this.rowsPerMatch(); } } - this.state = 1426; + this.state = 1464; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AFTER) { + if (_la === TrinoSqlParser.KW_AFTER) { { - this.state = 1423; - this.match(TrinoSqlParser.AFTER); - this.state = 1424; - this.match(TrinoSqlParser.MATCH); - this.state = 1425; + this.state = 1461; + this.match(TrinoSqlParser.KW_AFTER); + this.state = 1462; + this.match(TrinoSqlParser.KW_MATCH); + this.state = 1463; this.skipTo(); } } - this.state = 1429; + this.state = 1467; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.INITIAL || _la === TrinoSqlParser.SEEK) { + if (_la === TrinoSqlParser.KW_INITIAL || _la === TrinoSqlParser.KW_SEEK) { { - this.state = 1428; + this.state = 1466; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.INITIAL || _la === TrinoSqlParser.SEEK)) { + if (!(_la === TrinoSqlParser.KW_INITIAL || _la === TrinoSqlParser.KW_SEEK)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -5707,87 +5760,87 @@ export class TrinoSqlParser extends Parser { } } - this.state = 1431; - this.match(TrinoSqlParser.PATTERN); - this.state = 1432; - this.match(TrinoSqlParser.T__1); - this.state = 1433; + this.state = 1469; + this.match(TrinoSqlParser.KW_PATTERN); + this.state = 1470; + this.match(TrinoSqlParser.T__0); + this.state = 1471; this.rowPattern(0); - this.state = 1434; - this.match(TrinoSqlParser.T__2); - this.state = 1444; + this.state = 1472; + this.match(TrinoSqlParser.T__1); + this.state = 1482; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.SUBSET) { + if (_la === TrinoSqlParser.KW_SUBSET) { { - this.state = 1435; - this.match(TrinoSqlParser.SUBSET); - this.state = 1436; + this.state = 1473; + this.match(TrinoSqlParser.KW_SUBSET); + this.state = 1474; this.subsetDefinition(); - this.state = 1441; + this.state = 1479; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1437; - this.match(TrinoSqlParser.T__3); - this.state = 1438; + this.state = 1475; + this.match(TrinoSqlParser.T__2); + this.state = 1476; this.subsetDefinition(); } } - this.state = 1443; + this.state = 1481; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1446; - this.match(TrinoSqlParser.DEFINE); - this.state = 1447; + this.state = 1484; + this.match(TrinoSqlParser.KW_DEFINE); + this.state = 1485; this.variableDefinition(); - this.state = 1452; + this.state = 1490; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1448; - this.match(TrinoSqlParser.T__3); - this.state = 1449; + this.state = 1486; + this.match(TrinoSqlParser.T__2); + this.state = 1487; this.variableDefinition(); } } - this.state = 1454; + this.state = 1492; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1455; - this.match(TrinoSqlParser.T__2); - this.state = 1463; + this.state = 1493; + this.match(TrinoSqlParser.T__1); + this.state = 1501; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 193, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 199, this._ctx) ) { case 1: { - this.state = 1457; + this.state = 1495; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AS) { + if (_la === TrinoSqlParser.KW_AS) { { - this.state = 1456; - this.match(TrinoSqlParser.AS); + this.state = 1494; + this.match(TrinoSqlParser.KW_AS); } } - this.state = 1459; + this.state = 1497; this.identifier(); - this.state = 1461; + this.state = 1499; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 192, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 198, this._ctx) ) { case 1: { - this.state = 1460; + this.state = 1498; this.columnAliases(); } break; @@ -5821,11 +5874,11 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1467; + this.state = 1505; this.expression(); - this.state = 1468; - this.match(TrinoSqlParser.AS); - this.state = 1469; + this.state = 1506; + this.match(TrinoSqlParser.KW_AS); + this.state = 1507; this.identifier(); } } @@ -5849,39 +5902,39 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 78, TrinoSqlParser.RULE_rowsPerMatch); let _la: number; try { - this.state = 1482; + this.state = 1520; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ONE: + case TrinoSqlParser.KW_ONE: this.enterOuterAlt(_localctx, 1); { - this.state = 1471; - this.match(TrinoSqlParser.ONE); - this.state = 1472; - this.match(TrinoSqlParser.ROW); - this.state = 1473; - this.match(TrinoSqlParser.PER); - this.state = 1474; - this.match(TrinoSqlParser.MATCH); + this.state = 1509; + this.match(TrinoSqlParser.KW_ONE); + this.state = 1510; + this.match(TrinoSqlParser.KW_ROW); + this.state = 1511; + this.match(TrinoSqlParser.KW_PER); + this.state = 1512; + this.match(TrinoSqlParser.KW_MATCH); } break; - case TrinoSqlParser.ALL: + case TrinoSqlParser.KW_ALL: this.enterOuterAlt(_localctx, 2); { - this.state = 1475; - this.match(TrinoSqlParser.ALL); - this.state = 1476; - this.match(TrinoSqlParser.ROWS); - this.state = 1477; - this.match(TrinoSqlParser.PER); - this.state = 1478; - this.match(TrinoSqlParser.MATCH); - this.state = 1480; + this.state = 1513; + this.match(TrinoSqlParser.KW_ALL); + this.state = 1514; + this.match(TrinoSqlParser.KW_ROWS); + this.state = 1515; + this.match(TrinoSqlParser.KW_PER); + this.state = 1516; + this.match(TrinoSqlParser.KW_MATCH); + this.state = 1518; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.OMIT || _la === TrinoSqlParser.SHOW || _la === TrinoSqlParser.WITH) { + if (_la === TrinoSqlParser.KW_OMIT || _la === TrinoSqlParser.KW_SHOW || _la === TrinoSqlParser.KW_WITH) { { - this.state = 1479; + this.state = 1517; this.emptyMatchHandling(); } } @@ -5911,40 +5964,40 @@ export class TrinoSqlParser extends Parser { let _localctx: EmptyMatchHandlingContext = new EmptyMatchHandlingContext(this._ctx, this.state); this.enterRule(_localctx, 80, TrinoSqlParser.RULE_emptyMatchHandling); try { - this.state = 1493; + this.state = 1531; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.SHOW: + case TrinoSqlParser.KW_SHOW: this.enterOuterAlt(_localctx, 1); { - this.state = 1484; - this.match(TrinoSqlParser.SHOW); - this.state = 1485; - this.match(TrinoSqlParser.EMPTY); - this.state = 1486; - this.match(TrinoSqlParser.MATCHES); + this.state = 1522; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 1523; + this.match(TrinoSqlParser.KW_EMPTY); + this.state = 1524; + this.match(TrinoSqlParser.KW_MATCHES); } break; - case TrinoSqlParser.OMIT: + case TrinoSqlParser.KW_OMIT: this.enterOuterAlt(_localctx, 2); { - this.state = 1487; - this.match(TrinoSqlParser.OMIT); - this.state = 1488; - this.match(TrinoSqlParser.EMPTY); - this.state = 1489; - this.match(TrinoSqlParser.MATCHES); + this.state = 1525; + this.match(TrinoSqlParser.KW_OMIT); + this.state = 1526; + this.match(TrinoSqlParser.KW_EMPTY); + this.state = 1527; + this.match(TrinoSqlParser.KW_MATCHES); } break; - case TrinoSqlParser.WITH: + case TrinoSqlParser.KW_WITH: this.enterOuterAlt(_localctx, 3); { - this.state = 1490; - this.match(TrinoSqlParser.WITH); - this.state = 1491; - this.match(TrinoSqlParser.UNMATCHED); - this.state = 1492; - this.match(TrinoSqlParser.ROWS); + this.state = 1528; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1529; + this.match(TrinoSqlParser.KW_UNMATCHED); + this.state = 1530; + this.match(TrinoSqlParser.KW_ROWS); } break; default: @@ -5970,47 +6023,47 @@ export class TrinoSqlParser extends Parser { let _localctx: SkipToContext = new SkipToContext(this._ctx, this.state); this.enterRule(_localctx, 82, TrinoSqlParser.RULE_skipTo); try { - this.state = 1514; + this.state = 1552; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 198, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 204, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 1495; + this.state = 1533; this.match(TrinoSqlParser.T__4); - this.state = 1496; - this.match(TrinoSqlParser.TO); - this.state = 1497; - this.match(TrinoSqlParser.NEXT); - this.state = 1498; - this.match(TrinoSqlParser.ROW); + this.state = 1534; + this.match(TrinoSqlParser.KW_TO); + this.state = 1535; + this.match(TrinoSqlParser.KW_NEXT); + this.state = 1536; + this.match(TrinoSqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 1499; + this.state = 1537; this.match(TrinoSqlParser.T__4); - this.state = 1500; - this.match(TrinoSqlParser.PAST); - this.state = 1501; - this.match(TrinoSqlParser.LAST); - this.state = 1502; - this.match(TrinoSqlParser.ROW); + this.state = 1538; + this.match(TrinoSqlParser.KW_PAST); + this.state = 1539; + this.match(TrinoSqlParser.KW_LAST); + this.state = 1540; + this.match(TrinoSqlParser.KW_ROW); } break; case 3: this.enterOuterAlt(_localctx, 3); { - this.state = 1503; + this.state = 1541; this.match(TrinoSqlParser.T__4); - this.state = 1504; - this.match(TrinoSqlParser.TO); - this.state = 1505; - this.match(TrinoSqlParser.FIRST); - this.state = 1506; + this.state = 1542; + this.match(TrinoSqlParser.KW_TO); + this.state = 1543; + this.match(TrinoSqlParser.KW_FIRST); + this.state = 1544; this.identifier(); } break; @@ -6018,13 +6071,13 @@ export class TrinoSqlParser extends Parser { case 4: this.enterOuterAlt(_localctx, 4); { - this.state = 1507; + this.state = 1545; this.match(TrinoSqlParser.T__4); - this.state = 1508; - this.match(TrinoSqlParser.TO); - this.state = 1509; - this.match(TrinoSqlParser.LAST); - this.state = 1510; + this.state = 1546; + this.match(TrinoSqlParser.KW_TO); + this.state = 1547; + this.match(TrinoSqlParser.KW_LAST); + this.state = 1548; this.identifier(); } break; @@ -6032,11 +6085,11 @@ export class TrinoSqlParser extends Parser { case 5: this.enterOuterAlt(_localctx, 5); { - this.state = 1511; + this.state = 1549; this.match(TrinoSqlParser.T__4); - this.state = 1512; - this.match(TrinoSqlParser.TO); - this.state = 1513; + this.state = 1550; + this.match(TrinoSqlParser.KW_TO); + this.state = 1551; this.identifier(); } break; @@ -6064,34 +6117,34 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1516; + this.state = 1554; _localctx._name = this.identifier(); - this.state = 1517; + this.state = 1555; this.match(TrinoSqlParser.EQ); - this.state = 1518; - this.match(TrinoSqlParser.T__1); - this.state = 1519; + this.state = 1556; + this.match(TrinoSqlParser.T__0); + this.state = 1557; _localctx._identifier = this.identifier(); _localctx._union.push(_localctx._identifier); - this.state = 1524; + this.state = 1562; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1520; - this.match(TrinoSqlParser.T__3); - this.state = 1521; + this.state = 1558; + this.match(TrinoSqlParser.T__2); + this.state = 1559; _localctx._identifier = this.identifier(); _localctx._union.push(_localctx._identifier); } } - this.state = 1526; + this.state = 1564; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1527; - this.match(TrinoSqlParser.T__2); + this.state = 1565; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -6115,11 +6168,11 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1529; + this.state = 1567; this.identifier(); - this.state = 1530; - this.match(TrinoSqlParser.AS); - this.state = 1531; + this.state = 1568; + this.match(TrinoSqlParser.KW_AS); + this.state = 1569; this.expression(); } } @@ -6145,31 +6198,31 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1533; + this.state = 1571; this.relationPrimary(); - this.state = 1541; + this.state = 1579; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 202, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 208, this._ctx) ) { case 1: { - this.state = 1535; + this.state = 1573; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AS) { + if (_la === TrinoSqlParser.KW_AS) { { - this.state = 1534; - this.match(TrinoSqlParser.AS); + this.state = 1572; + this.match(TrinoSqlParser.KW_AS); } } - this.state = 1537; + this.state = 1575; this.identifier(); - this.state = 1539; + this.state = 1577; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 201, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 207, this._ctx) ) { case 1: { - this.state = 1538; + this.state = 1576; this.columnAliases(); } break; @@ -6201,28 +6254,28 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1543; - this.match(TrinoSqlParser.T__1); - this.state = 1544; + this.state = 1581; + this.match(TrinoSqlParser.T__0); + this.state = 1582; this.identifier(); - this.state = 1549; + this.state = 1587; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1545; - this.match(TrinoSqlParser.T__3); - this.state = 1546; + this.state = 1583; + this.match(TrinoSqlParser.T__2); + this.state = 1584; this.identifier(); } } - this.state = 1551; + this.state = 1589; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1552; - this.match(TrinoSqlParser.T__2); + this.state = 1590; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -6245,15 +6298,15 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 92, TrinoSqlParser.RULE_relationPrimary); let _la: number; try { - this.state = 1583; + this.state = 1621; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 206, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 212, this._ctx) ) { case 1: - _localctx = new TableNameContext(_localctx); + _localctx = new TableOrViewRelationContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1554; - this.qualifiedName(); + this.state = 1592; + this.tableOrViewName(); } break; @@ -6261,12 +6314,12 @@ export class TrinoSqlParser extends Parser { _localctx = new SubqueryRelationContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1555; - this.match(TrinoSqlParser.T__1); - this.state = 1556; + this.state = 1593; + this.match(TrinoSqlParser.T__0); + this.state = 1594; this.query(); - this.state = 1557; - this.match(TrinoSqlParser.T__2); + this.state = 1595; + this.match(TrinoSqlParser.T__1); } break; @@ -6274,39 +6327,39 @@ export class TrinoSqlParser extends Parser { _localctx = new UnnestContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 1559; - this.match(TrinoSqlParser.UNNEST); - this.state = 1560; - this.match(TrinoSqlParser.T__1); - this.state = 1561; + this.state = 1597; + this.match(TrinoSqlParser.KW_UNNEST); + this.state = 1598; + this.match(TrinoSqlParser.T__0); + this.state = 1599; this.expression(); - this.state = 1566; + this.state = 1604; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1562; - this.match(TrinoSqlParser.T__3); - this.state = 1563; + this.state = 1600; + this.match(TrinoSqlParser.T__2); + this.state = 1601; this.expression(); } } - this.state = 1568; + this.state = 1606; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1569; - this.match(TrinoSqlParser.T__2); - this.state = 1572; + this.state = 1607; + this.match(TrinoSqlParser.T__1); + this.state = 1610; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 205, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 211, this._ctx) ) { case 1: { - this.state = 1570; - this.match(TrinoSqlParser.WITH); - this.state = 1571; - this.match(TrinoSqlParser.ORDINALITY); + this.state = 1608; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1609; + this.match(TrinoSqlParser.KW_ORDINALITY); } break; } @@ -6317,14 +6370,14 @@ export class TrinoSqlParser extends Parser { _localctx = new LateralContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 1574; - this.match(TrinoSqlParser.LATERAL); - this.state = 1575; - this.match(TrinoSqlParser.T__1); - this.state = 1576; + this.state = 1612; + this.match(TrinoSqlParser.KW_LATERAL); + this.state = 1613; + this.match(TrinoSqlParser.T__0); + this.state = 1614; this.query(); - this.state = 1577; - this.match(TrinoSqlParser.T__2); + this.state = 1615; + this.match(TrinoSqlParser.T__1); } break; @@ -6332,12 +6385,12 @@ export class TrinoSqlParser extends Parser { _localctx = new ParenthesizedRelationContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 1579; - this.match(TrinoSqlParser.T__1); - this.state = 1580; + this.state = 1617; + this.match(TrinoSqlParser.T__0); + this.state = 1618; this.relation(0); - this.state = 1581; - this.match(TrinoSqlParser.T__2); + this.state = 1619; + this.match(TrinoSqlParser.T__1); } break; } @@ -6363,7 +6416,7 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1585; + this.state = 1623; this.booleanExpression(0); } } @@ -6400,187 +6453,187 @@ export class TrinoSqlParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 1594; + this.state = 1632; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.T__1: - case TrinoSqlParser.ADD: - case TrinoSqlParser.ADMIN: - case TrinoSqlParser.AFTER: - case TrinoSqlParser.ALL: - case TrinoSqlParser.ANALYZE: - case TrinoSqlParser.ANY: - case TrinoSqlParser.ARRAY: - case TrinoSqlParser.ASC: - case TrinoSqlParser.AT: - case TrinoSqlParser.AUTHORIZATION: - case TrinoSqlParser.BERNOULLI: - case TrinoSqlParser.CALL: - case TrinoSqlParser.CASCADE: - case TrinoSqlParser.CASE: - case TrinoSqlParser.CAST: - case TrinoSqlParser.CATALOGS: - case TrinoSqlParser.COLUMN: - case TrinoSqlParser.COLUMNS: - case TrinoSqlParser.COMMENT: - case TrinoSqlParser.COMMIT: - case TrinoSqlParser.COMMITTED: - case TrinoSqlParser.CURRENT: - case TrinoSqlParser.CURRENT_CATALOG: - case TrinoSqlParser.CURRENT_DATE: - case TrinoSqlParser.CURRENT_PATH: - case TrinoSqlParser.CURRENT_SCHEMA: - case TrinoSqlParser.CURRENT_TIME: - case TrinoSqlParser.CURRENT_TIMESTAMP: - case TrinoSqlParser.CURRENT_USER: - case TrinoSqlParser.DATA: - case TrinoSqlParser.DATE: - case TrinoSqlParser.DAY: - case TrinoSqlParser.DEFAULT: - case TrinoSqlParser.DEFINER: - case TrinoSqlParser.DESC: - case TrinoSqlParser.DEFINE: - case TrinoSqlParser.DISTRIBUTED: - case TrinoSqlParser.DOUBLE: - case TrinoSqlParser.EMPTY: - case TrinoSqlParser.EXCLUDING: - case TrinoSqlParser.EXISTS: - case TrinoSqlParser.EXPLAIN: - case TrinoSqlParser.EXTRACT: - case TrinoSqlParser.FALSE: - case TrinoSqlParser.FETCH: - case TrinoSqlParser.FILTER: - case TrinoSqlParser.FINAL: - case TrinoSqlParser.FIRST: - case TrinoSqlParser.FOLLOWING: - case TrinoSqlParser.FORMAT: - case TrinoSqlParser.FUNCTIONS: - case TrinoSqlParser.GRANT: - case TrinoSqlParser.GRANTED: - case TrinoSqlParser.GRANTS: - case TrinoSqlParser.DENY: - case TrinoSqlParser.GRAPHVIZ: - case TrinoSqlParser.GROUPING: - case TrinoSqlParser.GROUPS: - case TrinoSqlParser.HOUR: - case TrinoSqlParser.IF: - case TrinoSqlParser.IGNORE: - case TrinoSqlParser.INCLUDING: - case TrinoSqlParser.INITIAL: - case TrinoSqlParser.INPUT: - case TrinoSqlParser.INTERVAL: - case TrinoSqlParser.INVOKER: - case TrinoSqlParser.IO: - case TrinoSqlParser.ISOLATION: - case TrinoSqlParser.JSON: - case TrinoSqlParser.LAST: - case TrinoSqlParser.LATERAL: - case TrinoSqlParser.LEVEL: - case TrinoSqlParser.LIMIT: - case TrinoSqlParser.LOCAL: - case TrinoSqlParser.LOCALTIME: - case TrinoSqlParser.LOCALTIMESTAMP: - case TrinoSqlParser.LOGICAL: - case TrinoSqlParser.MAP: - case TrinoSqlParser.MATCH: - case TrinoSqlParser.MATCHED: - case TrinoSqlParser.MATCHES: - case TrinoSqlParser.MATCH_RECOGNIZE: - case TrinoSqlParser.MATERIALIZED: - case TrinoSqlParser.MEASURES: - case TrinoSqlParser.MERGE: - case TrinoSqlParser.MINUTE: - case TrinoSqlParser.MONTH: - case TrinoSqlParser.NEXT: - case TrinoSqlParser.NFC: - case TrinoSqlParser.NFD: - case TrinoSqlParser.NFKC: - case TrinoSqlParser.NFKD: - case TrinoSqlParser.NO: - case TrinoSqlParser.NONE: - case TrinoSqlParser.NORMALIZE: - case TrinoSqlParser.NULL: - case TrinoSqlParser.NULLIF: - case TrinoSqlParser.NULLS: - case TrinoSqlParser.OFFSET: - case TrinoSqlParser.OMIT: - case TrinoSqlParser.ONE: - case TrinoSqlParser.ONLY: - case TrinoSqlParser.OPTION: - case TrinoSqlParser.ORDINALITY: - case TrinoSqlParser.OUTPUT: - case TrinoSqlParser.OVER: - case TrinoSqlParser.PARTITION: - case TrinoSqlParser.PARTITIONS: - case TrinoSqlParser.PAST: - case TrinoSqlParser.PATH: - case TrinoSqlParser.PATTERN: - case TrinoSqlParser.PER: - case TrinoSqlParser.PERMUTE: - case TrinoSqlParser.POSITION: - case TrinoSqlParser.PRECEDING: - case TrinoSqlParser.PRECISION: - case TrinoSqlParser.PRIVILEGES: - case TrinoSqlParser.PROPERTIES: - case TrinoSqlParser.RANGE: - case TrinoSqlParser.READ: - case TrinoSqlParser.REFRESH: - case TrinoSqlParser.RENAME: - case TrinoSqlParser.REPEATABLE: - case TrinoSqlParser.REPLACE: - case TrinoSqlParser.RESET: - case TrinoSqlParser.RESPECT: - case TrinoSqlParser.RESTRICT: - case TrinoSqlParser.REVOKE: - case TrinoSqlParser.ROLE: - case TrinoSqlParser.ROLES: - case TrinoSqlParser.ROLLBACK: - case TrinoSqlParser.ROW: - case TrinoSqlParser.ROWS: - case TrinoSqlParser.RUNNING: - case TrinoSqlParser.SCHEMA: - case TrinoSqlParser.SCHEMAS: - case TrinoSqlParser.SECOND: - case TrinoSqlParser.SECURITY: - case TrinoSqlParser.SEEK: - case TrinoSqlParser.SERIALIZABLE: - case TrinoSqlParser.SESSION: - case TrinoSqlParser.SET: - case TrinoSqlParser.SETS: - case TrinoSqlParser.SHOW: - case TrinoSqlParser.SOME: - case TrinoSqlParser.START: - case TrinoSqlParser.STATS: - case TrinoSqlParser.SUBSET: - case TrinoSqlParser.SUBSTRING: - case TrinoSqlParser.SYSTEM: - case TrinoSqlParser.TABLES: - case TrinoSqlParser.TABLESAMPLE: - case TrinoSqlParser.TEXT: - case TrinoSqlParser.TIES: - case TrinoSqlParser.TIME: - case TrinoSqlParser.TIMESTAMP: - case TrinoSqlParser.TO: - case TrinoSqlParser.TRANSACTION: - case TrinoSqlParser.TRUNCATE: - case TrinoSqlParser.TRUE: - case TrinoSqlParser.TRY_CAST: - case TrinoSqlParser.TYPE: - case TrinoSqlParser.UNBOUNDED: - case TrinoSqlParser.UNCOMMITTED: - case TrinoSqlParser.UNMATCHED: - case TrinoSqlParser.UPDATE: - case TrinoSqlParser.USE: - case TrinoSqlParser.USER: - case TrinoSqlParser.VALIDATE: - case TrinoSqlParser.VERBOSE: - case TrinoSqlParser.VIEW: - case TrinoSqlParser.WINDOW: - case TrinoSqlParser.WITHOUT: - case TrinoSqlParser.WORK: - case TrinoSqlParser.WRITE: - case TrinoSqlParser.YEAR: - case TrinoSqlParser.ZONE: + case TrinoSqlParser.T__0: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CASE: + case TrinoSqlParser.KW_CAST: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_CURRENT_CATALOG: + case TrinoSqlParser.KW_CURRENT_DATE: + case TrinoSqlParser.KW_CURRENT_PATH: + case TrinoSqlParser.KW_CURRENT_SCHEMA: + case TrinoSqlParser.KW_CURRENT_TIME: + case TrinoSqlParser.KW_CURRENT_TIMESTAMP: + case TrinoSqlParser.KW_CURRENT_USER: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXISTS: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_EXTRACT: + case TrinoSqlParser.KW_FALSE: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPING: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOCALTIME: + case TrinoSqlParser.KW_LOCALTIMESTAMP: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NORMALIZE: + case TrinoSqlParser.KW_NULL: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRUE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: case TrinoSqlParser.PLUS: case TrinoSqlParser.MINUS: case TrinoSqlParser.QUESTION_MARK: @@ -6599,28 +6652,28 @@ export class TrinoSqlParser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 1588; + this.state = 1626; (_localctx as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 1590; + this.state = 1628; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 207, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 213, this._ctx) ) { case 1: { - this.state = 1589; + this.state = 1627; this.predicate((_localctx as PredicatedContext)._valueExpression); } break; } } break; - case TrinoSqlParser.NOT: + case TrinoSqlParser.KW_NOT: { _localctx = new LogicalNotContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1592; - this.match(TrinoSqlParser.NOT); - this.state = 1593; + this.state = 1630; + this.match(TrinoSqlParser.KW_NOT); + this.state = 1631; this.booleanExpression(3); } break; @@ -6628,9 +6681,9 @@ export class TrinoSqlParser extends Parser { throw new NoViableAltException(this); } this._ctx._stop = this._input.tryLT(-1); - this.state = 1604; + this.state = 1642; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 210, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 216, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -6638,21 +6691,21 @@ export class TrinoSqlParser extends Parser { } _prevctx = _localctx; { - this.state = 1602; + this.state = 1640; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 209, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 215, this._ctx) ) { case 1: { _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); (_localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_booleanExpression); - this.state = 1596; + this.state = 1634; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 1597; - (_localctx as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.AND); - this.state = 1598; + this.state = 1635; + (_localctx as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.KW_AND); + this.state = 1636; (_localctx as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -6662,22 +6715,22 @@ export class TrinoSqlParser extends Parser { _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); (_localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_booleanExpression); - this.state = 1599; + this.state = 1637; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 1600; - (_localctx as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.OR); - this.state = 1601; + this.state = 1638; + (_localctx as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.KW_OR); + this.state = 1639; (_localctx as LogicalBinaryContext)._right = this.booleanExpression(2); } break; } } } - this.state = 1606; + this.state = 1644; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 210, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 216, this._ctx); } } } @@ -6701,16 +6754,16 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 98, TrinoSqlParser.RULE_predicate); let _la: number; try { - this.state = 1668; + this.state = 1706; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 219, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 225, this._ctx) ) { case 1: _localctx = new ComparisonContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1607; + this.state = 1645; this.comparisonOperator(); - this.state = 1608; + this.state = 1646; (_localctx as ComparisonContext)._right = this.valueExpression(0); } break; @@ -6719,16 +6772,16 @@ export class TrinoSqlParser extends Parser { _localctx = new QuantifiedComparisonContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1610; + this.state = 1648; this.comparisonOperator(); - this.state = 1611; + this.state = 1649; this.comparisonQuantifier(); - this.state = 1612; - this.match(TrinoSqlParser.T__1); - this.state = 1613; + this.state = 1650; + this.match(TrinoSqlParser.T__0); + this.state = 1651; this.query(); - this.state = 1614; - this.match(TrinoSqlParser.T__2); + this.state = 1652; + this.match(TrinoSqlParser.T__1); } break; @@ -6736,23 +6789,23 @@ export class TrinoSqlParser extends Parser { _localctx = new BetweenContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 1617; + this.state = 1655; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NOT) { + if (_la === TrinoSqlParser.KW_NOT) { { - this.state = 1616; - this.match(TrinoSqlParser.NOT); + this.state = 1654; + this.match(TrinoSqlParser.KW_NOT); } } - this.state = 1619; - this.match(TrinoSqlParser.BETWEEN); - this.state = 1620; + this.state = 1657; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 1658; (_localctx as BetweenContext)._lower = this.valueExpression(0); - this.state = 1621; - this.match(TrinoSqlParser.AND); - this.state = 1622; + this.state = 1659; + this.match(TrinoSqlParser.KW_AND); + this.state = 1660; (_localctx as BetweenContext)._upper = this.valueExpression(0); } break; @@ -6761,40 +6814,40 @@ export class TrinoSqlParser extends Parser { _localctx = new InListContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 1625; + this.state = 1663; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NOT) { + if (_la === TrinoSqlParser.KW_NOT) { { - this.state = 1624; - this.match(TrinoSqlParser.NOT); + this.state = 1662; + this.match(TrinoSqlParser.KW_NOT); } } - this.state = 1627; - this.match(TrinoSqlParser.IN); - this.state = 1628; - this.match(TrinoSqlParser.T__1); - this.state = 1629; + this.state = 1665; + this.match(TrinoSqlParser.KW_IN); + this.state = 1666; + this.match(TrinoSqlParser.T__0); + this.state = 1667; this.expression(); - this.state = 1634; + this.state = 1672; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1630; - this.match(TrinoSqlParser.T__3); - this.state = 1631; + this.state = 1668; + this.match(TrinoSqlParser.T__2); + this.state = 1669; this.expression(); } } - this.state = 1636; + this.state = 1674; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1637; - this.match(TrinoSqlParser.T__2); + this.state = 1675; + this.match(TrinoSqlParser.T__1); } break; @@ -6802,24 +6855,24 @@ export class TrinoSqlParser extends Parser { _localctx = new InSubqueryContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 1640; + this.state = 1678; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NOT) { + if (_la === TrinoSqlParser.KW_NOT) { { - this.state = 1639; - this.match(TrinoSqlParser.NOT); + this.state = 1677; + this.match(TrinoSqlParser.KW_NOT); } } - this.state = 1642; - this.match(TrinoSqlParser.IN); - this.state = 1643; - this.match(TrinoSqlParser.T__1); - this.state = 1644; + this.state = 1680; + this.match(TrinoSqlParser.KW_IN); + this.state = 1681; + this.match(TrinoSqlParser.T__0); + this.state = 1682; this.query(); - this.state = 1645; - this.match(TrinoSqlParser.T__2); + this.state = 1683; + this.match(TrinoSqlParser.T__1); } break; @@ -6827,28 +6880,28 @@ export class TrinoSqlParser extends Parser { _localctx = new LikeContext(_localctx); this.enterOuterAlt(_localctx, 6); { - this.state = 1648; + this.state = 1686; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NOT) { + if (_la === TrinoSqlParser.KW_NOT) { { - this.state = 1647; - this.match(TrinoSqlParser.NOT); + this.state = 1685; + this.match(TrinoSqlParser.KW_NOT); } } - this.state = 1650; - this.match(TrinoSqlParser.LIKE); - this.state = 1651; + this.state = 1688; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 1689; (_localctx as LikeContext)._pattern = this.valueExpression(0); - this.state = 1654; + this.state = 1692; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 216, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 222, this._ctx) ) { case 1: { - this.state = 1652; - this.match(TrinoSqlParser.ESCAPE); - this.state = 1653; + this.state = 1690; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 1691; (_localctx as LikeContext)._escape = this.valueExpression(0); } break; @@ -6860,20 +6913,20 @@ export class TrinoSqlParser extends Parser { _localctx = new NullPredicateContext(_localctx); this.enterOuterAlt(_localctx, 7); { - this.state = 1656; - this.match(TrinoSqlParser.IS); - this.state = 1658; + this.state = 1694; + this.match(TrinoSqlParser.KW_IS); + this.state = 1696; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NOT) { + if (_la === TrinoSqlParser.KW_NOT) { { - this.state = 1657; - this.match(TrinoSqlParser.NOT); + this.state = 1695; + this.match(TrinoSqlParser.KW_NOT); } } - this.state = 1660; - this.match(TrinoSqlParser.NULL); + this.state = 1698; + this.match(TrinoSqlParser.KW_NULL); } break; @@ -6881,23 +6934,23 @@ export class TrinoSqlParser extends Parser { _localctx = new DistinctFromContext(_localctx); this.enterOuterAlt(_localctx, 8); { - this.state = 1661; - this.match(TrinoSqlParser.IS); - this.state = 1663; + this.state = 1699; + this.match(TrinoSqlParser.KW_IS); + this.state = 1701; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.NOT) { + if (_la === TrinoSqlParser.KW_NOT) { { - this.state = 1662; - this.match(TrinoSqlParser.NOT); + this.state = 1700; + this.match(TrinoSqlParser.KW_NOT); } } - this.state = 1665; - this.match(TrinoSqlParser.DISTINCT); - this.state = 1666; - this.match(TrinoSqlParser.FROM); - this.state = 1667; + this.state = 1703; + this.match(TrinoSqlParser.KW_DISTINCT); + this.state = 1704; + this.match(TrinoSqlParser.KW_FROM); + this.state = 1705; (_localctx as DistinctFromContext)._right = this.valueExpression(0); } break; @@ -6937,16 +6990,16 @@ export class TrinoSqlParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 1674; + this.state = 1712; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 220, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 226, this._ctx) ) { case 1: { _localctx = new ValueExpressionDefaultContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1671; + this.state = 1709; this.primaryExpression(0); } break; @@ -6956,7 +7009,7 @@ export class TrinoSqlParser extends Parser { _localctx = new ArithmeticUnaryContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1672; + this.state = 1710; (_localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(_la === TrinoSqlParser.PLUS || _la === TrinoSqlParser.MINUS)) { @@ -6969,15 +7022,15 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1673; + this.state = 1711; this.valueExpression(4); } break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 1690; + this.state = 1728; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 222, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 228, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -6985,19 +7038,19 @@ export class TrinoSqlParser extends Parser { } _prevctx = _localctx; { - this.state = 1688; + this.state = 1726; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 221, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 227, this._ctx) ) { case 1: { _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); (_localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1676; + this.state = 1714; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 1677; + this.state = 1715; (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & ((1 << (TrinoSqlParser.ASTERISK - 257)) | (1 << (TrinoSqlParser.SLASH - 257)) | (1 << (TrinoSqlParser.PERCENT - 257)))) !== 0))) { @@ -7010,7 +7063,7 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1678; + this.state = 1716; (_localctx as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -7020,11 +7073,11 @@ export class TrinoSqlParser extends Parser { _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); (_localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1679; + this.state = 1717; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 1680; + this.state = 1718; (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(_la === TrinoSqlParser.PLUS || _la === TrinoSqlParser.MINUS)) { @@ -7037,7 +7090,7 @@ export class TrinoSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1681; + this.state = 1719; (_localctx as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -7047,13 +7100,13 @@ export class TrinoSqlParser extends Parser { _localctx = new ConcatenationContext(new ValueExpressionContext(_parentctx, _parentState)); (_localctx as ConcatenationContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1682; + this.state = 1720; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 1683; + this.state = 1721; this.match(TrinoSqlParser.CONCAT); - this.state = 1684; + this.state = 1722; (_localctx as ConcatenationContext)._right = this.valueExpression(2); } break; @@ -7062,22 +7115,22 @@ export class TrinoSqlParser extends Parser { { _localctx = new AtTimeZoneContext(new ValueExpressionContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1685; + this.state = 1723; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } - this.state = 1686; - this.match(TrinoSqlParser.AT); - this.state = 1687; + this.state = 1724; + this.match(TrinoSqlParser.KW_AT); + this.state = 1725; this.timeZoneSpecifier(); } break; } } } - this.state = 1692; + this.state = 1730; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 222, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 228, this._ctx); } } } @@ -7115,17 +7168,17 @@ export class TrinoSqlParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 1942; + this.state = 1980; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 252, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 258, this._ctx) ) { case 1: { _localctx = new NullLiteralContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1694; - this.match(TrinoSqlParser.NULL); + this.state = 1732; + this.match(TrinoSqlParser.KW_NULL); } break; @@ -7134,7 +7187,7 @@ export class TrinoSqlParser extends Parser { _localctx = new IntervalLiteralContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1695; + this.state = 1733; this.interval(); } break; @@ -7144,9 +7197,9 @@ export class TrinoSqlParser extends Parser { _localctx = new TypeConstructorContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1696; + this.state = 1734; this.identifier(); - this.state = 1697; + this.state = 1735; this.string(); } break; @@ -7156,11 +7209,11 @@ export class TrinoSqlParser extends Parser { _localctx = new TypeConstructorContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1699; - this.match(TrinoSqlParser.DOUBLE); - this.state = 1700; - this.match(TrinoSqlParser.PRECISION); - this.state = 1701; + this.state = 1737; + this.match(TrinoSqlParser.KW_DOUBLE); + this.state = 1738; + this.match(TrinoSqlParser.KW_PRECISION); + this.state = 1739; this.string(); } break; @@ -7170,7 +7223,7 @@ export class TrinoSqlParser extends Parser { _localctx = new NumericLiteralContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1702; + this.state = 1740; this.number(); } break; @@ -7180,7 +7233,7 @@ export class TrinoSqlParser extends Parser { _localctx = new BooleanLiteralContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1703; + this.state = 1741; this.booleanValue(); } break; @@ -7190,7 +7243,7 @@ export class TrinoSqlParser extends Parser { _localctx = new StringLiteralContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1704; + this.state = 1742; this.string(); } break; @@ -7200,7 +7253,7 @@ export class TrinoSqlParser extends Parser { _localctx = new BinaryLiteralContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1705; + this.state = 1743; this.match(TrinoSqlParser.BINARY_LITERAL); } break; @@ -7210,7 +7263,7 @@ export class TrinoSqlParser extends Parser { _localctx = new ParameterContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1706; + this.state = 1744; this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -7220,18 +7273,18 @@ export class TrinoSqlParser extends Parser { _localctx = new PositionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1707; - this.match(TrinoSqlParser.POSITION); - this.state = 1708; + this.state = 1745; + this.match(TrinoSqlParser.KW_POSITION); + this.state = 1746; + this.match(TrinoSqlParser.T__0); + this.state = 1747; + this.valueExpression(0); + this.state = 1748; + this.match(TrinoSqlParser.KW_IN); + this.state = 1749; + this.valueExpression(0); + this.state = 1750; this.match(TrinoSqlParser.T__1); - this.state = 1709; - this.valueExpression(0); - this.state = 1710; - this.match(TrinoSqlParser.IN); - this.state = 1711; - this.valueExpression(0); - this.state = 1712; - this.match(TrinoSqlParser.T__2); } break; @@ -7240,28 +7293,28 @@ export class TrinoSqlParser extends Parser { _localctx = new RowConstructorContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1714; - this.match(TrinoSqlParser.T__1); - this.state = 1715; + this.state = 1752; + this.match(TrinoSqlParser.T__0); + this.state = 1753; this.expression(); - this.state = 1718; + this.state = 1756; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1716; - this.match(TrinoSqlParser.T__3); - this.state = 1717; + this.state = 1754; + this.match(TrinoSqlParser.T__2); + this.state = 1755; this.expression(); } } - this.state = 1720; + this.state = 1758; this._errHandler.sync(this); _la = this._input.LA(1); - } while (_la === TrinoSqlParser.T__3); - this.state = 1722; - this.match(TrinoSqlParser.T__2); + } while (_la === TrinoSqlParser.T__2); + this.state = 1760; + this.match(TrinoSqlParser.T__1); } break; @@ -7270,30 +7323,30 @@ export class TrinoSqlParser extends Parser { _localctx = new RowConstructorContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1724; - this.match(TrinoSqlParser.ROW); - this.state = 1725; - this.match(TrinoSqlParser.T__1); - this.state = 1726; + this.state = 1762; + this.match(TrinoSqlParser.KW_ROW); + this.state = 1763; + this.match(TrinoSqlParser.T__0); + this.state = 1764; this.expression(); - this.state = 1731; + this.state = 1769; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1727; - this.match(TrinoSqlParser.T__3); - this.state = 1728; + this.state = 1765; + this.match(TrinoSqlParser.T__2); + this.state = 1766; this.expression(); } } - this.state = 1733; + this.state = 1771; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1734; - this.match(TrinoSqlParser.T__2); + this.state = 1772; + this.match(TrinoSqlParser.T__1); } break; @@ -7302,30 +7355,30 @@ export class TrinoSqlParser extends Parser { _localctx = new FunctionCallContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1736; - this.qualifiedName(); - this.state = 1737; - this.match(TrinoSqlParser.T__1); - this.state = 1738; + this.state = 1774; + this.functionName(); + this.state = 1775; + this.match(TrinoSqlParser.T__0); + this.state = 1776; this.match(TrinoSqlParser.ASTERISK); - this.state = 1739; - this.match(TrinoSqlParser.T__2); - this.state = 1741; + this.state = 1777; + this.match(TrinoSqlParser.T__1); + this.state = 1779; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 225, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 231, this._ctx) ) { case 1: { - this.state = 1740; + this.state = 1778; this.filter(); } break; } - this.state = 1744; + this.state = 1782; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 226, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 232, this._ctx) ) { case 1: { - this.state = 1743; + this.state = 1781; this.over(); } break; @@ -7338,114 +7391,114 @@ export class TrinoSqlParser extends Parser { _localctx = new FunctionCallContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1747; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 227, this._ctx) ) { - case 1: - { - this.state = 1746; - this.processingMode(); - } - break; - } - this.state = 1749; - this.qualifiedName(); - this.state = 1750; - this.match(TrinoSqlParser.T__1); - this.state = 1762; - this._errHandler.sync(this); - _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTINCT - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { - { - this.state = 1752; - this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 228, this._ctx) ) { - case 1: - { - this.state = 1751; - this.setQuantifier(); - } - break; - } - this.state = 1754; - this.expression(); - this.state = 1759; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { - { - { - this.state = 1755; - this.match(TrinoSqlParser.T__3); - this.state = 1756; - this.expression(); - } - } - this.state = 1761; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 1774; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la === TrinoSqlParser.ORDER) { - { - this.state = 1764; - this.match(TrinoSqlParser.ORDER); - this.state = 1765; - this.match(TrinoSqlParser.BY); - this.state = 1766; - this.sortItem(); - this.state = 1771; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { - { - { - this.state = 1767; - this.match(TrinoSqlParser.T__3); - this.state = 1768; - this.sortItem(); - } - } - this.state = 1773; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 1776; - this.match(TrinoSqlParser.T__2); - this.state = 1778; + this.state = 1785; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 233, this._ctx) ) { case 1: { - this.state = 1777; + this.state = 1784; + this.processingMode(); + } + break; + } + this.state = 1787; + this.functionName(); + this.state = 1788; + this.match(TrinoSqlParser.T__0); + this.state = 1800; + this._errHandler.sync(this); + _la = this._input.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTINCT - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + { + this.state = 1790; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 234, this._ctx) ) { + case 1: + { + this.state = 1789; + this.setQuantifier(); + } + break; + } + this.state = 1792; + this.expression(); + this.state = 1797; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 1793; + this.match(TrinoSqlParser.T__2); + this.state = 1794; + this.expression(); + } + } + this.state = 1799; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 1812; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === TrinoSqlParser.KW_ORDER) { + { + this.state = 1802; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 1803; + this.match(TrinoSqlParser.KW_BY); + this.state = 1804; + this.sortItem(); + this.state = 1809; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__2) { + { + { + this.state = 1805; + this.match(TrinoSqlParser.T__2); + this.state = 1806; + this.sortItem(); + } + } + this.state = 1811; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 1814; + this.match(TrinoSqlParser.T__1); + this.state = 1816; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 239, this._ctx) ) { + case 1: + { + this.state = 1815; this.filter(); } break; } - this.state = 1784; + this.state = 1822; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 235, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 241, this._ctx) ) { case 1: { - this.state = 1781; + this.state = 1819; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.IGNORE || _la === TrinoSqlParser.RESPECT) { + if (_la === TrinoSqlParser.KW_IGNORE || _la === TrinoSqlParser.KW_RESPECT) { { - this.state = 1780; + this.state = 1818; this.nullTreatment(); } } - this.state = 1783; + this.state = 1821; this.over(); } break; @@ -7458,9 +7511,9 @@ export class TrinoSqlParser extends Parser { _localctx = new MeasureContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1786; + this.state = 1824; this.identifier(); - this.state = 1787; + this.state = 1825; this.over(); } break; @@ -7470,11 +7523,11 @@ export class TrinoSqlParser extends Parser { _localctx = new LambdaContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1789; + this.state = 1827; this.identifier(); - this.state = 1790; + this.state = 1828; this.match(TrinoSqlParser.T__5); - this.state = 1791; + this.state = 1829; this.expression(); } break; @@ -7484,39 +7537,39 @@ export class TrinoSqlParser extends Parser { _localctx = new LambdaContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1793; - this.match(TrinoSqlParser.T__1); - this.state = 1802; + this.state = 1831; + this.match(TrinoSqlParser.T__0); + this.state = 1840; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.ADD - 17)) | (1 << (TrinoSqlParser.ADMIN - 17)) | (1 << (TrinoSqlParser.AFTER - 17)) | (1 << (TrinoSqlParser.ALL - 17)) | (1 << (TrinoSqlParser.ANALYZE - 17)) | (1 << (TrinoSqlParser.ANY - 17)) | (1 << (TrinoSqlParser.ARRAY - 17)) | (1 << (TrinoSqlParser.ASC - 17)) | (1 << (TrinoSqlParser.AT - 17)) | (1 << (TrinoSqlParser.AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.BERNOULLI - 17)) | (1 << (TrinoSqlParser.CALL - 17)) | (1 << (TrinoSqlParser.CASCADE - 17)) | (1 << (TrinoSqlParser.CATALOGS - 17)) | (1 << (TrinoSqlParser.COLUMN - 17)) | (1 << (TrinoSqlParser.COLUMNS - 17)) | (1 << (TrinoSqlParser.COMMENT - 17)) | (1 << (TrinoSqlParser.COMMIT - 17)) | (1 << (TrinoSqlParser.COMMITTED - 17)) | (1 << (TrinoSqlParser.CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.DATA - 56)) | (1 << (TrinoSqlParser.DATE - 56)) | (1 << (TrinoSqlParser.DAY - 56)) | (1 << (TrinoSqlParser.DEFAULT - 56)) | (1 << (TrinoSqlParser.DEFINER - 56)) | (1 << (TrinoSqlParser.DESC - 56)) | (1 << (TrinoSqlParser.DEFINE - 56)) | (1 << (TrinoSqlParser.DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.DOUBLE - 56)) | (1 << (TrinoSqlParser.EMPTY - 56)) | (1 << (TrinoSqlParser.EXCLUDING - 56)) | (1 << (TrinoSqlParser.EXPLAIN - 56)) | (1 << (TrinoSqlParser.FETCH - 56)) | (1 << (TrinoSqlParser.FILTER - 56)) | (1 << (TrinoSqlParser.FINAL - 56)) | (1 << (TrinoSqlParser.FIRST - 56)) | (1 << (TrinoSqlParser.FOLLOWING - 56)) | (1 << (TrinoSqlParser.FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.FUNCTIONS - 90)) | (1 << (TrinoSqlParser.GRANT - 90)) | (1 << (TrinoSqlParser.GRANTED - 90)) | (1 << (TrinoSqlParser.GRANTS - 90)) | (1 << (TrinoSqlParser.DENY - 90)) | (1 << (TrinoSqlParser.GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.GROUPS - 90)) | (1 << (TrinoSqlParser.HOUR - 90)) | (1 << (TrinoSqlParser.IF - 90)) | (1 << (TrinoSqlParser.IGNORE - 90)) | (1 << (TrinoSqlParser.INCLUDING - 90)) | (1 << (TrinoSqlParser.INITIAL - 90)) | (1 << (TrinoSqlParser.INPUT - 90)) | (1 << (TrinoSqlParser.INTERVAL - 90)) | (1 << (TrinoSqlParser.INVOKER - 90)) | (1 << (TrinoSqlParser.IO - 90)) | (1 << (TrinoSqlParser.ISOLATION - 90)) | (1 << (TrinoSqlParser.JSON - 90)) | (1 << (TrinoSqlParser.LAST - 90)) | (1 << (TrinoSqlParser.LATERAL - 90)) | (1 << (TrinoSqlParser.LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.LIMIT - 123)) | (1 << (TrinoSqlParser.LOCAL - 123)) | (1 << (TrinoSqlParser.LOGICAL - 123)) | (1 << (TrinoSqlParser.MAP - 123)) | (1 << (TrinoSqlParser.MATCH - 123)) | (1 << (TrinoSqlParser.MATCHED - 123)) | (1 << (TrinoSqlParser.MATCHES - 123)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.MATERIALIZED - 123)) | (1 << (TrinoSqlParser.MEASURES - 123)) | (1 << (TrinoSqlParser.MERGE - 123)) | (1 << (TrinoSqlParser.MINUTE - 123)) | (1 << (TrinoSqlParser.MONTH - 123)) | (1 << (TrinoSqlParser.NEXT - 123)) | (1 << (TrinoSqlParser.NFC - 123)) | (1 << (TrinoSqlParser.NFD - 123)) | (1 << (TrinoSqlParser.NFKC - 123)) | (1 << (TrinoSqlParser.NFKD - 123)) | (1 << (TrinoSqlParser.NO - 123)) | (1 << (TrinoSqlParser.NONE - 123)) | (1 << (TrinoSqlParser.NULLIF - 123)) | (1 << (TrinoSqlParser.NULLS - 123)) | (1 << (TrinoSqlParser.OFFSET - 123)) | (1 << (TrinoSqlParser.OMIT - 123)) | (1 << (TrinoSqlParser.ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.ONLY - 155)) | (1 << (TrinoSqlParser.OPTION - 155)) | (1 << (TrinoSqlParser.ORDINALITY - 155)) | (1 << (TrinoSqlParser.OUTPUT - 155)) | (1 << (TrinoSqlParser.OVER - 155)) | (1 << (TrinoSqlParser.PARTITION - 155)) | (1 << (TrinoSqlParser.PARTITIONS - 155)) | (1 << (TrinoSqlParser.PAST - 155)) | (1 << (TrinoSqlParser.PATH - 155)) | (1 << (TrinoSqlParser.PATTERN - 155)) | (1 << (TrinoSqlParser.PER - 155)) | (1 << (TrinoSqlParser.PERMUTE - 155)) | (1 << (TrinoSqlParser.POSITION - 155)) | (1 << (TrinoSqlParser.PRECEDING - 155)) | (1 << (TrinoSqlParser.PRECISION - 155)) | (1 << (TrinoSqlParser.PRIVILEGES - 155)) | (1 << (TrinoSqlParser.PROPERTIES - 155)) | (1 << (TrinoSqlParser.RANGE - 155)) | (1 << (TrinoSqlParser.READ - 155)) | (1 << (TrinoSqlParser.REFRESH - 155)) | (1 << (TrinoSqlParser.RENAME - 155)) | (1 << (TrinoSqlParser.REPEATABLE - 155)) | (1 << (TrinoSqlParser.REPLACE - 155)) | (1 << (TrinoSqlParser.RESET - 155)) | (1 << (TrinoSqlParser.RESPECT - 155)) | (1 << (TrinoSqlParser.RESTRICT - 155)) | (1 << (TrinoSqlParser.REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.ROLE - 188)) | (1 << (TrinoSqlParser.ROLES - 188)) | (1 << (TrinoSqlParser.ROLLBACK - 188)) | (1 << (TrinoSqlParser.ROW - 188)) | (1 << (TrinoSqlParser.ROWS - 188)) | (1 << (TrinoSqlParser.RUNNING - 188)) | (1 << (TrinoSqlParser.SCHEMA - 188)) | (1 << (TrinoSqlParser.SCHEMAS - 188)) | (1 << (TrinoSqlParser.SECOND - 188)) | (1 << (TrinoSqlParser.SECURITY - 188)) | (1 << (TrinoSqlParser.SEEK - 188)) | (1 << (TrinoSqlParser.SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.SESSION - 188)) | (1 << (TrinoSqlParser.SET - 188)) | (1 << (TrinoSqlParser.SETS - 188)) | (1 << (TrinoSqlParser.SHOW - 188)) | (1 << (TrinoSqlParser.SOME - 188)) | (1 << (TrinoSqlParser.START - 188)) | (1 << (TrinoSqlParser.STATS - 188)) | (1 << (TrinoSqlParser.SUBSET - 188)) | (1 << (TrinoSqlParser.SUBSTRING - 188)) | (1 << (TrinoSqlParser.SYSTEM - 188)) | (1 << (TrinoSqlParser.TABLES - 188)) | (1 << (TrinoSqlParser.TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.TEXT - 188)) | (1 << (TrinoSqlParser.TIES - 188)) | (1 << (TrinoSqlParser.TIME - 188)) | (1 << (TrinoSqlParser.TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.TO - 220)) | (1 << (TrinoSqlParser.TRANSACTION - 220)) | (1 << (TrinoSqlParser.TRUNCATE - 220)) | (1 << (TrinoSqlParser.TRY_CAST - 220)) | (1 << (TrinoSqlParser.TYPE - 220)) | (1 << (TrinoSqlParser.UNBOUNDED - 220)) | (1 << (TrinoSqlParser.UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.UNMATCHED - 220)) | (1 << (TrinoSqlParser.UPDATE - 220)) | (1 << (TrinoSqlParser.USE - 220)) | (1 << (TrinoSqlParser.USER - 220)) | (1 << (TrinoSqlParser.VALIDATE - 220)) | (1 << (TrinoSqlParser.VERBOSE - 220)) | (1 << (TrinoSqlParser.VIEW - 220)) | (1 << (TrinoSqlParser.WINDOW - 220)) | (1 << (TrinoSqlParser.WITHOUT - 220)) | (1 << (TrinoSqlParser.WORK - 220)) | (1 << (TrinoSqlParser.WRITE - 220)) | (1 << (TrinoSqlParser.YEAR - 220)) | (1 << (TrinoSqlParser.ZONE - 220)))) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & ((1 << (TrinoSqlParser.IDENTIFIER - 268)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 268)))) !== 0)) { + if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.KW_ADD - 17)) | (1 << (TrinoSqlParser.KW_ADMIN - 17)) | (1 << (TrinoSqlParser.KW_AFTER - 17)) | (1 << (TrinoSqlParser.KW_ALL - 17)) | (1 << (TrinoSqlParser.KW_ANALYZE - 17)) | (1 << (TrinoSqlParser.KW_ANY - 17)) | (1 << (TrinoSqlParser.KW_ARRAY - 17)) | (1 << (TrinoSqlParser.KW_ASC - 17)) | (1 << (TrinoSqlParser.KW_AT - 17)) | (1 << (TrinoSqlParser.KW_AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.KW_BERNOULLI - 17)) | (1 << (TrinoSqlParser.KW_CALL - 17)) | (1 << (TrinoSqlParser.KW_CASCADE - 17)) | (1 << (TrinoSqlParser.KW_CATALOGS - 17)) | (1 << (TrinoSqlParser.KW_COLUMN - 17)) | (1 << (TrinoSqlParser.KW_COLUMNS - 17)) | (1 << (TrinoSqlParser.KW_COMMENT - 17)) | (1 << (TrinoSqlParser.KW_COMMIT - 17)) | (1 << (TrinoSqlParser.KW_COMMITTED - 17)) | (1 << (TrinoSqlParser.KW_CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.KW_DATA - 56)) | (1 << (TrinoSqlParser.KW_DATE - 56)) | (1 << (TrinoSqlParser.KW_DAY - 56)) | (1 << (TrinoSqlParser.KW_DEFAULT - 56)) | (1 << (TrinoSqlParser.KW_DEFINER - 56)) | (1 << (TrinoSqlParser.KW_DESC - 56)) | (1 << (TrinoSqlParser.KW_DEFINE - 56)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.KW_DOUBLE - 56)) | (1 << (TrinoSqlParser.KW_EMPTY - 56)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 56)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 56)) | (1 << (TrinoSqlParser.KW_FETCH - 56)) | (1 << (TrinoSqlParser.KW_FILTER - 56)) | (1 << (TrinoSqlParser.KW_FINAL - 56)) | (1 << (TrinoSqlParser.KW_FIRST - 56)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 56)) | (1 << (TrinoSqlParser.KW_FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.KW_FUNCTIONS - 90)) | (1 << (TrinoSqlParser.KW_GRANT - 90)) | (1 << (TrinoSqlParser.KW_GRANTED - 90)) | (1 << (TrinoSqlParser.KW_GRANTS - 90)) | (1 << (TrinoSqlParser.KW_DENY - 90)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.KW_GROUPS - 90)) | (1 << (TrinoSqlParser.KW_HOUR - 90)) | (1 << (TrinoSqlParser.KW_IF - 90)) | (1 << (TrinoSqlParser.KW_IGNORE - 90)) | (1 << (TrinoSqlParser.KW_INCLUDING - 90)) | (1 << (TrinoSqlParser.KW_INITIAL - 90)) | (1 << (TrinoSqlParser.KW_INPUT - 90)) | (1 << (TrinoSqlParser.KW_INTERVAL - 90)) | (1 << (TrinoSqlParser.KW_INVOKER - 90)) | (1 << (TrinoSqlParser.KW_IO - 90)) | (1 << (TrinoSqlParser.KW_ISOLATION - 90)) | (1 << (TrinoSqlParser.KW_JSON - 90)) | (1 << (TrinoSqlParser.KW_LAST - 90)) | (1 << (TrinoSqlParser.KW_LATERAL - 90)) | (1 << (TrinoSqlParser.KW_LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.KW_LIMIT - 123)) | (1 << (TrinoSqlParser.KW_LOCAL - 123)) | (1 << (TrinoSqlParser.KW_LOGICAL - 123)) | (1 << (TrinoSqlParser.KW_MAP - 123)) | (1 << (TrinoSqlParser.KW_MATCH - 123)) | (1 << (TrinoSqlParser.KW_MATCHED - 123)) | (1 << (TrinoSqlParser.KW_MATCHES - 123)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 123)) | (1 << (TrinoSqlParser.KW_MEASURES - 123)) | (1 << (TrinoSqlParser.KW_MERGE - 123)) | (1 << (TrinoSqlParser.KW_MINUTE - 123)) | (1 << (TrinoSqlParser.KW_MONTH - 123)) | (1 << (TrinoSqlParser.KW_NEXT - 123)) | (1 << (TrinoSqlParser.KW_NFC - 123)) | (1 << (TrinoSqlParser.KW_NFD - 123)) | (1 << (TrinoSqlParser.KW_NFKC - 123)) | (1 << (TrinoSqlParser.KW_NFKD - 123)) | (1 << (TrinoSqlParser.KW_NO - 123)) | (1 << (TrinoSqlParser.KW_NONE - 123)) | (1 << (TrinoSqlParser.KW_NULLIF - 123)) | (1 << (TrinoSqlParser.KW_NULLS - 123)) | (1 << (TrinoSqlParser.KW_OFFSET - 123)) | (1 << (TrinoSqlParser.KW_OMIT - 123)) | (1 << (TrinoSqlParser.KW_ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.KW_ONLY - 155)) | (1 << (TrinoSqlParser.KW_OPTION - 155)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 155)) | (1 << (TrinoSqlParser.KW_OUTPUT - 155)) | (1 << (TrinoSqlParser.KW_OVER - 155)) | (1 << (TrinoSqlParser.KW_PARTITION - 155)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 155)) | (1 << (TrinoSqlParser.KW_PAST - 155)) | (1 << (TrinoSqlParser.KW_PATH - 155)) | (1 << (TrinoSqlParser.KW_PATTERN - 155)) | (1 << (TrinoSqlParser.KW_PER - 155)) | (1 << (TrinoSqlParser.KW_PERMUTE - 155)) | (1 << (TrinoSqlParser.KW_POSITION - 155)) | (1 << (TrinoSqlParser.KW_PRECEDING - 155)) | (1 << (TrinoSqlParser.KW_PRECISION - 155)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 155)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 155)) | (1 << (TrinoSqlParser.KW_RANGE - 155)) | (1 << (TrinoSqlParser.KW_READ - 155)) | (1 << (TrinoSqlParser.KW_REFRESH - 155)) | (1 << (TrinoSqlParser.KW_RENAME - 155)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 155)) | (1 << (TrinoSqlParser.KW_REPLACE - 155)) | (1 << (TrinoSqlParser.KW_RESET - 155)) | (1 << (TrinoSqlParser.KW_RESPECT - 155)) | (1 << (TrinoSqlParser.KW_RESTRICT - 155)) | (1 << (TrinoSqlParser.KW_REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.KW_ROLE - 188)) | (1 << (TrinoSqlParser.KW_ROLES - 188)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 188)) | (1 << (TrinoSqlParser.KW_ROW - 188)) | (1 << (TrinoSqlParser.KW_ROWS - 188)) | (1 << (TrinoSqlParser.KW_RUNNING - 188)) | (1 << (TrinoSqlParser.KW_SCHEMA - 188)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 188)) | (1 << (TrinoSqlParser.KW_SECOND - 188)) | (1 << (TrinoSqlParser.KW_SECURITY - 188)) | (1 << (TrinoSqlParser.KW_SEEK - 188)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.KW_SESSION - 188)) | (1 << (TrinoSqlParser.KW_SET - 188)) | (1 << (TrinoSqlParser.KW_SETS - 188)) | (1 << (TrinoSqlParser.KW_SHOW - 188)) | (1 << (TrinoSqlParser.KW_SOME - 188)) | (1 << (TrinoSqlParser.KW_START - 188)) | (1 << (TrinoSqlParser.KW_STATS - 188)) | (1 << (TrinoSqlParser.KW_SUBSET - 188)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 188)) | (1 << (TrinoSqlParser.KW_SYSTEM - 188)) | (1 << (TrinoSqlParser.KW_TABLES - 188)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.KW_TEXT - 188)) | (1 << (TrinoSqlParser.KW_TIES - 188)) | (1 << (TrinoSqlParser.KW_TIME - 188)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.KW_TO - 220)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 220)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 220)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 220)) | (1 << (TrinoSqlParser.KW_TYPE - 220)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 220)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 220)) | (1 << (TrinoSqlParser.KW_UPDATE - 220)) | (1 << (TrinoSqlParser.KW_USE - 220)) | (1 << (TrinoSqlParser.KW_USER - 220)) | (1 << (TrinoSqlParser.KW_VALIDATE - 220)) | (1 << (TrinoSqlParser.KW_VERBOSE - 220)) | (1 << (TrinoSqlParser.KW_VIEW - 220)) | (1 << (TrinoSqlParser.KW_WINDOW - 220)) | (1 << (TrinoSqlParser.KW_WITHOUT - 220)) | (1 << (TrinoSqlParser.KW_WORK - 220)) | (1 << (TrinoSqlParser.KW_WRITE - 220)) | (1 << (TrinoSqlParser.KW_YEAR - 220)) | (1 << (TrinoSqlParser.KW_ZONE - 220)))) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & ((1 << (TrinoSqlParser.IDENTIFIER - 268)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 268)))) !== 0)) { { - this.state = 1794; + this.state = 1832; this.identifier(); - this.state = 1799; + this.state = 1837; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1795; - this.match(TrinoSqlParser.T__3); - this.state = 1796; + this.state = 1833; + this.match(TrinoSqlParser.T__2); + this.state = 1834; this.identifier(); } } - this.state = 1801; + this.state = 1839; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1804; - this.match(TrinoSqlParser.T__2); - this.state = 1805; + this.state = 1842; + this.match(TrinoSqlParser.T__1); + this.state = 1843; this.match(TrinoSqlParser.T__5); - this.state = 1806; + this.state = 1844; this.expression(); } break; @@ -7526,12 +7579,12 @@ export class TrinoSqlParser extends Parser { _localctx = new SubqueryExpressionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1807; - this.match(TrinoSqlParser.T__1); - this.state = 1808; + this.state = 1845; + this.match(TrinoSqlParser.T__0); + this.state = 1846; this.query(); - this.state = 1809; - this.match(TrinoSqlParser.T__2); + this.state = 1847; + this.match(TrinoSqlParser.T__1); } break; @@ -7540,14 +7593,14 @@ export class TrinoSqlParser extends Parser { _localctx = new ExistsContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1811; - this.match(TrinoSqlParser.EXISTS); - this.state = 1812; - this.match(TrinoSqlParser.T__1); - this.state = 1813; + this.state = 1849; + this.match(TrinoSqlParser.KW_EXISTS); + this.state = 1850; + this.match(TrinoSqlParser.T__0); + this.state = 1851; this.query(); - this.state = 1814; - this.match(TrinoSqlParser.T__2); + this.state = 1852; + this.match(TrinoSqlParser.T__1); } break; @@ -7556,38 +7609,38 @@ export class TrinoSqlParser extends Parser { _localctx = new SimpleCaseContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1816; - this.match(TrinoSqlParser.CASE); - this.state = 1817; + this.state = 1854; + this.match(TrinoSqlParser.KW_CASE); + this.state = 1855; (_localctx as SimpleCaseContext)._operand = this.expression(); - this.state = 1819; + this.state = 1857; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1818; + this.state = 1856; this.whenClause(); } } - this.state = 1821; + this.state = 1859; this._errHandler.sync(this); _la = this._input.LA(1); - } while (_la === TrinoSqlParser.WHEN); - this.state = 1825; + } while (_la === TrinoSqlParser.KW_WHEN); + this.state = 1863; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ELSE) { + if (_la === TrinoSqlParser.KW_ELSE) { { - this.state = 1823; - this.match(TrinoSqlParser.ELSE); - this.state = 1824; + this.state = 1861; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 1862; (_localctx as SimpleCaseContext)._elseExpression = this.expression(); } } - this.state = 1827; - this.match(TrinoSqlParser.END); + this.state = 1865; + this.match(TrinoSqlParser.KW_END); } break; @@ -7596,36 +7649,36 @@ export class TrinoSqlParser extends Parser { _localctx = new SearchedCaseContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1829; - this.match(TrinoSqlParser.CASE); - this.state = 1831; + this.state = 1867; + this.match(TrinoSqlParser.KW_CASE); + this.state = 1869; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1830; + this.state = 1868; this.whenClause(); } } - this.state = 1833; + this.state = 1871; this._errHandler.sync(this); _la = this._input.LA(1); - } while (_la === TrinoSqlParser.WHEN); - this.state = 1837; + } while (_la === TrinoSqlParser.KW_WHEN); + this.state = 1875; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.ELSE) { + if (_la === TrinoSqlParser.KW_ELSE) { { - this.state = 1835; - this.match(TrinoSqlParser.ELSE); - this.state = 1836; + this.state = 1873; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 1874; (_localctx as SearchedCaseContext)._elseExpression = this.expression(); } } - this.state = 1839; - this.match(TrinoSqlParser.END); + this.state = 1877; + this.match(TrinoSqlParser.KW_END); } break; @@ -7634,18 +7687,18 @@ export class TrinoSqlParser extends Parser { _localctx = new CastContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1841; - this.match(TrinoSqlParser.CAST); - this.state = 1842; - this.match(TrinoSqlParser.T__1); - this.state = 1843; + this.state = 1879; + this.match(TrinoSqlParser.KW_CAST); + this.state = 1880; + this.match(TrinoSqlParser.T__0); + this.state = 1881; this.expression(); - this.state = 1844; - this.match(TrinoSqlParser.AS); - this.state = 1845; + this.state = 1882; + this.match(TrinoSqlParser.KW_AS); + this.state = 1883; this.type(0); - this.state = 1846; - this.match(TrinoSqlParser.T__2); + this.state = 1884; + this.match(TrinoSqlParser.T__1); } break; @@ -7654,18 +7707,18 @@ export class TrinoSqlParser extends Parser { _localctx = new CastContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1848; - this.match(TrinoSqlParser.TRY_CAST); - this.state = 1849; - this.match(TrinoSqlParser.T__1); - this.state = 1850; + this.state = 1886; + this.match(TrinoSqlParser.KW_TRY_CAST); + this.state = 1887; + this.match(TrinoSqlParser.T__0); + this.state = 1888; this.expression(); - this.state = 1851; - this.match(TrinoSqlParser.AS); - this.state = 1852; + this.state = 1889; + this.match(TrinoSqlParser.KW_AS); + this.state = 1890; this.type(0); - this.state = 1853; - this.match(TrinoSqlParser.T__2); + this.state = 1891; + this.match(TrinoSqlParser.T__1); } break; @@ -7674,37 +7727,37 @@ export class TrinoSqlParser extends Parser { _localctx = new ArrayConstructorContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1855; - this.match(TrinoSqlParser.ARRAY); - this.state = 1856; + this.state = 1893; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 1894; this.match(TrinoSqlParser.T__6); - this.state = 1865; + this.state = 1903; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__1) | (1 << TrinoSqlParser.ADD) | (1 << TrinoSqlParser.ADMIN) | (1 << TrinoSqlParser.AFTER) | (1 << TrinoSqlParser.ALL) | (1 << TrinoSqlParser.ANALYZE) | (1 << TrinoSqlParser.ANY) | (1 << TrinoSqlParser.ARRAY) | (1 << TrinoSqlParser.ASC) | (1 << TrinoSqlParser.AT) | (1 << TrinoSqlParser.AUTHORIZATION) | (1 << TrinoSqlParser.BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.CALL - 33)) | (1 << (TrinoSqlParser.CASCADE - 33)) | (1 << (TrinoSqlParser.CASE - 33)) | (1 << (TrinoSqlParser.CAST - 33)) | (1 << (TrinoSqlParser.CATALOGS - 33)) | (1 << (TrinoSqlParser.COLUMN - 33)) | (1 << (TrinoSqlParser.COLUMNS - 33)) | (1 << (TrinoSqlParser.COMMENT - 33)) | (1 << (TrinoSqlParser.COMMIT - 33)) | (1 << (TrinoSqlParser.COMMITTED - 33)) | (1 << (TrinoSqlParser.CURRENT - 33)) | (1 << (TrinoSqlParser.CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.CURRENT_USER - 33)) | (1 << (TrinoSqlParser.DATA - 33)) | (1 << (TrinoSqlParser.DATE - 33)) | (1 << (TrinoSqlParser.DAY - 33)) | (1 << (TrinoSqlParser.DEFAULT - 33)) | (1 << (TrinoSqlParser.DEFINER - 33)) | (1 << (TrinoSqlParser.DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.DEFINE - 65)) | (1 << (TrinoSqlParser.DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.DOUBLE - 65)) | (1 << (TrinoSqlParser.EMPTY - 65)) | (1 << (TrinoSqlParser.EXCLUDING - 65)) | (1 << (TrinoSqlParser.EXISTS - 65)) | (1 << (TrinoSqlParser.EXPLAIN - 65)) | (1 << (TrinoSqlParser.EXTRACT - 65)) | (1 << (TrinoSqlParser.FALSE - 65)) | (1 << (TrinoSqlParser.FETCH - 65)) | (1 << (TrinoSqlParser.FILTER - 65)) | (1 << (TrinoSqlParser.FINAL - 65)) | (1 << (TrinoSqlParser.FIRST - 65)) | (1 << (TrinoSqlParser.FOLLOWING - 65)) | (1 << (TrinoSqlParser.FORMAT - 65)) | (1 << (TrinoSqlParser.FUNCTIONS - 65)) | (1 << (TrinoSqlParser.GRANT - 65)) | (1 << (TrinoSqlParser.GRANTED - 65)) | (1 << (TrinoSqlParser.GRANTS - 65)) | (1 << (TrinoSqlParser.DENY - 65)) | (1 << (TrinoSqlParser.GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.GROUPING - 97)) | (1 << (TrinoSqlParser.GROUPS - 97)) | (1 << (TrinoSqlParser.HOUR - 97)) | (1 << (TrinoSqlParser.IF - 97)) | (1 << (TrinoSqlParser.IGNORE - 97)) | (1 << (TrinoSqlParser.INCLUDING - 97)) | (1 << (TrinoSqlParser.INITIAL - 97)) | (1 << (TrinoSqlParser.INPUT - 97)) | (1 << (TrinoSqlParser.INTERVAL - 97)) | (1 << (TrinoSqlParser.INVOKER - 97)) | (1 << (TrinoSqlParser.IO - 97)) | (1 << (TrinoSqlParser.ISOLATION - 97)) | (1 << (TrinoSqlParser.JSON - 97)) | (1 << (TrinoSqlParser.LAST - 97)) | (1 << (TrinoSqlParser.LATERAL - 97)) | (1 << (TrinoSqlParser.LEVEL - 97)) | (1 << (TrinoSqlParser.LIMIT - 97)) | (1 << (TrinoSqlParser.LOCAL - 97)) | (1 << (TrinoSqlParser.LOCALTIME - 97)) | (1 << (TrinoSqlParser.LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.LOGICAL - 97)) | (1 << (TrinoSqlParser.MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.MATCH - 129)) | (1 << (TrinoSqlParser.MATCHED - 129)) | (1 << (TrinoSqlParser.MATCHES - 129)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.MATERIALIZED - 129)) | (1 << (TrinoSqlParser.MEASURES - 129)) | (1 << (TrinoSqlParser.MERGE - 129)) | (1 << (TrinoSqlParser.MINUTE - 129)) | (1 << (TrinoSqlParser.MONTH - 129)) | (1 << (TrinoSqlParser.NEXT - 129)) | (1 << (TrinoSqlParser.NFC - 129)) | (1 << (TrinoSqlParser.NFD - 129)) | (1 << (TrinoSqlParser.NFKC - 129)) | (1 << (TrinoSqlParser.NFKD - 129)) | (1 << (TrinoSqlParser.NO - 129)) | (1 << (TrinoSqlParser.NONE - 129)) | (1 << (TrinoSqlParser.NORMALIZE - 129)) | (1 << (TrinoSqlParser.NOT - 129)) | (1 << (TrinoSqlParser.NULL - 129)) | (1 << (TrinoSqlParser.NULLIF - 129)) | (1 << (TrinoSqlParser.NULLS - 129)) | (1 << (TrinoSqlParser.OFFSET - 129)) | (1 << (TrinoSqlParser.OMIT - 129)) | (1 << (TrinoSqlParser.ONE - 129)) | (1 << (TrinoSqlParser.ONLY - 129)) | (1 << (TrinoSqlParser.OPTION - 129)) | (1 << (TrinoSqlParser.ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.OUTPUT - 161)) | (1 << (TrinoSqlParser.OVER - 161)) | (1 << (TrinoSqlParser.PARTITION - 161)) | (1 << (TrinoSqlParser.PARTITIONS - 161)) | (1 << (TrinoSqlParser.PAST - 161)) | (1 << (TrinoSqlParser.PATH - 161)) | (1 << (TrinoSqlParser.PATTERN - 161)) | (1 << (TrinoSqlParser.PER - 161)) | (1 << (TrinoSqlParser.PERMUTE - 161)) | (1 << (TrinoSqlParser.POSITION - 161)) | (1 << (TrinoSqlParser.PRECEDING - 161)) | (1 << (TrinoSqlParser.PRECISION - 161)) | (1 << (TrinoSqlParser.PRIVILEGES - 161)) | (1 << (TrinoSqlParser.PROPERTIES - 161)) | (1 << (TrinoSqlParser.RANGE - 161)) | (1 << (TrinoSqlParser.READ - 161)) | (1 << (TrinoSqlParser.REFRESH - 161)) | (1 << (TrinoSqlParser.RENAME - 161)) | (1 << (TrinoSqlParser.REPEATABLE - 161)) | (1 << (TrinoSqlParser.REPLACE - 161)) | (1 << (TrinoSqlParser.RESET - 161)) | (1 << (TrinoSqlParser.RESPECT - 161)) | (1 << (TrinoSqlParser.RESTRICT - 161)) | (1 << (TrinoSqlParser.REVOKE - 161)) | (1 << (TrinoSqlParser.ROLE - 161)) | (1 << (TrinoSqlParser.ROLES - 161)) | (1 << (TrinoSqlParser.ROLLBACK - 161)) | (1 << (TrinoSqlParser.ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.ROWS - 193)) | (1 << (TrinoSqlParser.RUNNING - 193)) | (1 << (TrinoSqlParser.SCHEMA - 193)) | (1 << (TrinoSqlParser.SCHEMAS - 193)) | (1 << (TrinoSqlParser.SECOND - 193)) | (1 << (TrinoSqlParser.SECURITY - 193)) | (1 << (TrinoSqlParser.SEEK - 193)) | (1 << (TrinoSqlParser.SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.SESSION - 193)) | (1 << (TrinoSqlParser.SET - 193)) | (1 << (TrinoSqlParser.SETS - 193)) | (1 << (TrinoSqlParser.SHOW - 193)) | (1 << (TrinoSqlParser.SOME - 193)) | (1 << (TrinoSqlParser.START - 193)) | (1 << (TrinoSqlParser.STATS - 193)) | (1 << (TrinoSqlParser.SUBSET - 193)) | (1 << (TrinoSqlParser.SUBSTRING - 193)) | (1 << (TrinoSqlParser.SYSTEM - 193)) | (1 << (TrinoSqlParser.TABLES - 193)) | (1 << (TrinoSqlParser.TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.TEXT - 193)) | (1 << (TrinoSqlParser.TIES - 193)) | (1 << (TrinoSqlParser.TIME - 193)) | (1 << (TrinoSqlParser.TIMESTAMP - 193)) | (1 << (TrinoSqlParser.TO - 193)) | (1 << (TrinoSqlParser.TRANSACTION - 193)) | (1 << (TrinoSqlParser.TRUNCATE - 193)) | (1 << (TrinoSqlParser.TRUE - 193)) | (1 << (TrinoSqlParser.TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.TYPE - 225)) | (1 << (TrinoSqlParser.UNBOUNDED - 225)) | (1 << (TrinoSqlParser.UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.UNMATCHED - 225)) | (1 << (TrinoSqlParser.UPDATE - 225)) | (1 << (TrinoSqlParser.USE - 225)) | (1 << (TrinoSqlParser.USER - 225)) | (1 << (TrinoSqlParser.VALIDATE - 225)) | (1 << (TrinoSqlParser.VERBOSE - 225)) | (1 << (TrinoSqlParser.VIEW - 225)) | (1 << (TrinoSqlParser.WINDOW - 225)) | (1 << (TrinoSqlParser.WITHOUT - 225)) | (1 << (TrinoSqlParser.WORK - 225)) | (1 << (TrinoSqlParser.WRITE - 225)) | (1 << (TrinoSqlParser.YEAR - 225)) | (1 << (TrinoSqlParser.ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << TrinoSqlParser.T__0) | (1 << TrinoSqlParser.KW_ADD) | (1 << TrinoSqlParser.KW_ADMIN) | (1 << TrinoSqlParser.KW_AFTER) | (1 << TrinoSqlParser.KW_ALL) | (1 << TrinoSqlParser.KW_ANALYZE) | (1 << TrinoSqlParser.KW_ANY) | (1 << TrinoSqlParser.KW_ARRAY) | (1 << TrinoSqlParser.KW_ASC) | (1 << TrinoSqlParser.KW_AT) | (1 << TrinoSqlParser.KW_AUTHORIZATION) | (1 << TrinoSqlParser.KW_BERNOULLI))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (TrinoSqlParser.KW_CALL - 33)) | (1 << (TrinoSqlParser.KW_CASCADE - 33)) | (1 << (TrinoSqlParser.KW_CASE - 33)) | (1 << (TrinoSqlParser.KW_CAST - 33)) | (1 << (TrinoSqlParser.KW_CATALOGS - 33)) | (1 << (TrinoSqlParser.KW_COLUMN - 33)) | (1 << (TrinoSqlParser.KW_COLUMNS - 33)) | (1 << (TrinoSqlParser.KW_COMMENT - 33)) | (1 << (TrinoSqlParser.KW_COMMIT - 33)) | (1 << (TrinoSqlParser.KW_COMMITTED - 33)) | (1 << (TrinoSqlParser.KW_CURRENT - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_CATALOG - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_DATE - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_PATH - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_SCHEMA - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIME - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (TrinoSqlParser.KW_CURRENT_USER - 33)) | (1 << (TrinoSqlParser.KW_DATA - 33)) | (1 << (TrinoSqlParser.KW_DATE - 33)) | (1 << (TrinoSqlParser.KW_DAY - 33)) | (1 << (TrinoSqlParser.KW_DEFAULT - 33)) | (1 << (TrinoSqlParser.KW_DEFINER - 33)) | (1 << (TrinoSqlParser.KW_DESC - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (TrinoSqlParser.KW_DEFINE - 65)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 65)) | (1 << (TrinoSqlParser.KW_DOUBLE - 65)) | (1 << (TrinoSqlParser.KW_EMPTY - 65)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 65)) | (1 << (TrinoSqlParser.KW_EXISTS - 65)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 65)) | (1 << (TrinoSqlParser.KW_EXTRACT - 65)) | (1 << (TrinoSqlParser.KW_FALSE - 65)) | (1 << (TrinoSqlParser.KW_FETCH - 65)) | (1 << (TrinoSqlParser.KW_FILTER - 65)) | (1 << (TrinoSqlParser.KW_FINAL - 65)) | (1 << (TrinoSqlParser.KW_FIRST - 65)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 65)) | (1 << (TrinoSqlParser.KW_FORMAT - 65)) | (1 << (TrinoSqlParser.KW_FUNCTIONS - 65)) | (1 << (TrinoSqlParser.KW_GRANT - 65)) | (1 << (TrinoSqlParser.KW_GRANTED - 65)) | (1 << (TrinoSqlParser.KW_GRANTS - 65)) | (1 << (TrinoSqlParser.KW_DENY - 65)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (TrinoSqlParser.KW_GROUPING - 97)) | (1 << (TrinoSqlParser.KW_GROUPS - 97)) | (1 << (TrinoSqlParser.KW_HOUR - 97)) | (1 << (TrinoSqlParser.KW_IF - 97)) | (1 << (TrinoSqlParser.KW_IGNORE - 97)) | (1 << (TrinoSqlParser.KW_INCLUDING - 97)) | (1 << (TrinoSqlParser.KW_INITIAL - 97)) | (1 << (TrinoSqlParser.KW_INPUT - 97)) | (1 << (TrinoSqlParser.KW_INTERVAL - 97)) | (1 << (TrinoSqlParser.KW_INVOKER - 97)) | (1 << (TrinoSqlParser.KW_IO - 97)) | (1 << (TrinoSqlParser.KW_ISOLATION - 97)) | (1 << (TrinoSqlParser.KW_JSON - 97)) | (1 << (TrinoSqlParser.KW_LAST - 97)) | (1 << (TrinoSqlParser.KW_LATERAL - 97)) | (1 << (TrinoSqlParser.KW_LEVEL - 97)) | (1 << (TrinoSqlParser.KW_LIMIT - 97)) | (1 << (TrinoSqlParser.KW_LOCAL - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIME - 97)) | (1 << (TrinoSqlParser.KW_LOCALTIMESTAMP - 97)) | (1 << (TrinoSqlParser.KW_LOGICAL - 97)) | (1 << (TrinoSqlParser.KW_MAP - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (TrinoSqlParser.KW_MATCH - 129)) | (1 << (TrinoSqlParser.KW_MATCHED - 129)) | (1 << (TrinoSqlParser.KW_MATCHES - 129)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 129)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 129)) | (1 << (TrinoSqlParser.KW_MEASURES - 129)) | (1 << (TrinoSqlParser.KW_MERGE - 129)) | (1 << (TrinoSqlParser.KW_MINUTE - 129)) | (1 << (TrinoSqlParser.KW_MONTH - 129)) | (1 << (TrinoSqlParser.KW_NEXT - 129)) | (1 << (TrinoSqlParser.KW_NFC - 129)) | (1 << (TrinoSqlParser.KW_NFD - 129)) | (1 << (TrinoSqlParser.KW_NFKC - 129)) | (1 << (TrinoSqlParser.KW_NFKD - 129)) | (1 << (TrinoSqlParser.KW_NO - 129)) | (1 << (TrinoSqlParser.KW_NONE - 129)) | (1 << (TrinoSqlParser.KW_NORMALIZE - 129)) | (1 << (TrinoSqlParser.KW_NOT - 129)) | (1 << (TrinoSqlParser.KW_NULL - 129)) | (1 << (TrinoSqlParser.KW_NULLIF - 129)) | (1 << (TrinoSqlParser.KW_NULLS - 129)) | (1 << (TrinoSqlParser.KW_OFFSET - 129)) | (1 << (TrinoSqlParser.KW_OMIT - 129)) | (1 << (TrinoSqlParser.KW_ONE - 129)) | (1 << (TrinoSqlParser.KW_ONLY - 129)) | (1 << (TrinoSqlParser.KW_OPTION - 129)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 129)))) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & ((1 << (TrinoSqlParser.KW_OUTPUT - 161)) | (1 << (TrinoSqlParser.KW_OVER - 161)) | (1 << (TrinoSqlParser.KW_PARTITION - 161)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 161)) | (1 << (TrinoSqlParser.KW_PAST - 161)) | (1 << (TrinoSqlParser.KW_PATH - 161)) | (1 << (TrinoSqlParser.KW_PATTERN - 161)) | (1 << (TrinoSqlParser.KW_PER - 161)) | (1 << (TrinoSqlParser.KW_PERMUTE - 161)) | (1 << (TrinoSqlParser.KW_POSITION - 161)) | (1 << (TrinoSqlParser.KW_PRECEDING - 161)) | (1 << (TrinoSqlParser.KW_PRECISION - 161)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 161)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 161)) | (1 << (TrinoSqlParser.KW_RANGE - 161)) | (1 << (TrinoSqlParser.KW_READ - 161)) | (1 << (TrinoSqlParser.KW_REFRESH - 161)) | (1 << (TrinoSqlParser.KW_RENAME - 161)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 161)) | (1 << (TrinoSqlParser.KW_REPLACE - 161)) | (1 << (TrinoSqlParser.KW_RESET - 161)) | (1 << (TrinoSqlParser.KW_RESPECT - 161)) | (1 << (TrinoSqlParser.KW_RESTRICT - 161)) | (1 << (TrinoSqlParser.KW_REVOKE - 161)) | (1 << (TrinoSqlParser.KW_ROLE - 161)) | (1 << (TrinoSqlParser.KW_ROLES - 161)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 161)) | (1 << (TrinoSqlParser.KW_ROW - 161)))) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & ((1 << (TrinoSqlParser.KW_ROWS - 193)) | (1 << (TrinoSqlParser.KW_RUNNING - 193)) | (1 << (TrinoSqlParser.KW_SCHEMA - 193)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 193)) | (1 << (TrinoSqlParser.KW_SECOND - 193)) | (1 << (TrinoSqlParser.KW_SECURITY - 193)) | (1 << (TrinoSqlParser.KW_SEEK - 193)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 193)) | (1 << (TrinoSqlParser.KW_SESSION - 193)) | (1 << (TrinoSqlParser.KW_SET - 193)) | (1 << (TrinoSqlParser.KW_SETS - 193)) | (1 << (TrinoSqlParser.KW_SHOW - 193)) | (1 << (TrinoSqlParser.KW_SOME - 193)) | (1 << (TrinoSqlParser.KW_START - 193)) | (1 << (TrinoSqlParser.KW_STATS - 193)) | (1 << (TrinoSqlParser.KW_SUBSET - 193)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 193)) | (1 << (TrinoSqlParser.KW_SYSTEM - 193)) | (1 << (TrinoSqlParser.KW_TABLES - 193)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 193)) | (1 << (TrinoSqlParser.KW_TEXT - 193)) | (1 << (TrinoSqlParser.KW_TIES - 193)) | (1 << (TrinoSqlParser.KW_TIME - 193)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 193)) | (1 << (TrinoSqlParser.KW_TO - 193)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 193)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 193)) | (1 << (TrinoSqlParser.KW_TRUE - 193)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 193)))) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & ((1 << (TrinoSqlParser.KW_TYPE - 225)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 225)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 225)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 225)) | (1 << (TrinoSqlParser.KW_UPDATE - 225)) | (1 << (TrinoSqlParser.KW_USE - 225)) | (1 << (TrinoSqlParser.KW_USER - 225)) | (1 << (TrinoSqlParser.KW_VALIDATE - 225)) | (1 << (TrinoSqlParser.KW_VERBOSE - 225)) | (1 << (TrinoSqlParser.KW_VIEW - 225)) | (1 << (TrinoSqlParser.KW_WINDOW - 225)) | (1 << (TrinoSqlParser.KW_WITHOUT - 225)) | (1 << (TrinoSqlParser.KW_WORK - 225)) | (1 << (TrinoSqlParser.KW_WRITE - 225)) | (1 << (TrinoSqlParser.KW_YEAR - 225)) | (1 << (TrinoSqlParser.KW_ZONE - 225)) | (1 << (TrinoSqlParser.PLUS - 225)) | (1 << (TrinoSqlParser.MINUS - 225)))) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & ((1 << (TrinoSqlParser.QUESTION_MARK - 261)) | (1 << (TrinoSqlParser.STRING - 261)) | (1 << (TrinoSqlParser.UNICODE_STRING - 261)) | (1 << (TrinoSqlParser.BINARY_LITERAL - 261)) | (1 << (TrinoSqlParser.INTEGER_VALUE - 261)) | (1 << (TrinoSqlParser.DECIMAL_VALUE - 261)) | (1 << (TrinoSqlParser.DOUBLE_VALUE - 261)) | (1 << (TrinoSqlParser.IDENTIFIER - 261)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 261)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 261)))) !== 0)) { { - this.state = 1857; + this.state = 1895; this.expression(); - this.state = 1862; + this.state = 1900; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1858; - this.match(TrinoSqlParser.T__3); - this.state = 1859; + this.state = 1896; + this.match(TrinoSqlParser.T__2); + this.state = 1897; this.expression(); } } - this.state = 1864; + this.state = 1902; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1867; + this.state = 1905; this.match(TrinoSqlParser.T__7); } break; @@ -7714,7 +7767,7 @@ export class TrinoSqlParser extends Parser { _localctx = new ColumnReferenceContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1868; + this.state = 1906; this.identifier(); } break; @@ -7724,8 +7777,8 @@ export class TrinoSqlParser extends Parser { _localctx = new SpecialDateTimeFunctionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1869; - (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.CURRENT_DATE); + this.state = 1907; + (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_DATE); } break; @@ -7734,19 +7787,19 @@ export class TrinoSqlParser extends Parser { _localctx = new SpecialDateTimeFunctionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1870; - (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.CURRENT_TIME); - this.state = 1874; + this.state = 1908; + (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIME); + this.state = 1912; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 244, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 250, this._ctx) ) { case 1: { - this.state = 1871; - this.match(TrinoSqlParser.T__1); - this.state = 1872; + this.state = 1909; + this.match(TrinoSqlParser.T__0); + this.state = 1910; (_localctx as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1873; - this.match(TrinoSqlParser.T__2); + this.state = 1911; + this.match(TrinoSqlParser.T__1); } break; } @@ -7758,19 +7811,19 @@ export class TrinoSqlParser extends Parser { _localctx = new SpecialDateTimeFunctionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1876; - (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.CURRENT_TIMESTAMP); - this.state = 1880; + this.state = 1914; + (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIMESTAMP); + this.state = 1918; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 245, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 251, this._ctx) ) { case 1: { - this.state = 1877; - this.match(TrinoSqlParser.T__1); - this.state = 1878; + this.state = 1915; + this.match(TrinoSqlParser.T__0); + this.state = 1916; (_localctx as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1879; - this.match(TrinoSqlParser.T__2); + this.state = 1917; + this.match(TrinoSqlParser.T__1); } break; } @@ -7782,19 +7835,19 @@ export class TrinoSqlParser extends Parser { _localctx = new SpecialDateTimeFunctionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1882; - (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.LOCALTIME); - this.state = 1886; + this.state = 1920; + (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_LOCALTIME); + this.state = 1924; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 246, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 252, this._ctx) ) { case 1: { - this.state = 1883; - this.match(TrinoSqlParser.T__1); - this.state = 1884; + this.state = 1921; + this.match(TrinoSqlParser.T__0); + this.state = 1922; (_localctx as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1885; - this.match(TrinoSqlParser.T__2); + this.state = 1923; + this.match(TrinoSqlParser.T__1); } break; } @@ -7806,19 +7859,19 @@ export class TrinoSqlParser extends Parser { _localctx = new SpecialDateTimeFunctionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1888; - (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.LOCALTIMESTAMP); - this.state = 1892; + this.state = 1926; + (_localctx as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_LOCALTIMESTAMP); + this.state = 1930; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 247, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 253, this._ctx) ) { case 1: { - this.state = 1889; - this.match(TrinoSqlParser.T__1); - this.state = 1890; + this.state = 1927; + this.match(TrinoSqlParser.T__0); + this.state = 1928; (_localctx as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1891; - this.match(TrinoSqlParser.T__2); + this.state = 1929; + this.match(TrinoSqlParser.T__1); } break; } @@ -7830,8 +7883,8 @@ export class TrinoSqlParser extends Parser { _localctx = new CurrentUserContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1894; - (_localctx as CurrentUserContext)._name = this.match(TrinoSqlParser.CURRENT_USER); + this.state = 1932; + (_localctx as CurrentUserContext)._name = this.match(TrinoSqlParser.KW_CURRENT_USER); } break; @@ -7840,8 +7893,8 @@ export class TrinoSqlParser extends Parser { _localctx = new CurrentCatalogContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1895; - (_localctx as CurrentCatalogContext)._name = this.match(TrinoSqlParser.CURRENT_CATALOG); + this.state = 1933; + (_localctx as CurrentCatalogContext)._name = this.match(TrinoSqlParser.KW_CURRENT_CATALOG); } break; @@ -7850,8 +7903,8 @@ export class TrinoSqlParser extends Parser { _localctx = new CurrentSchemaContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1896; - (_localctx as CurrentSchemaContext)._name = this.match(TrinoSqlParser.CURRENT_SCHEMA); + this.state = 1934; + (_localctx as CurrentSchemaContext)._name = this.match(TrinoSqlParser.KW_CURRENT_SCHEMA); } break; @@ -7860,8 +7913,8 @@ export class TrinoSqlParser extends Parser { _localctx = new CurrentPathContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1897; - (_localctx as CurrentPathContext)._name = this.match(TrinoSqlParser.CURRENT_PATH); + this.state = 1935; + (_localctx as CurrentPathContext)._name = this.match(TrinoSqlParser.KW_CURRENT_PATH); } break; @@ -7870,30 +7923,30 @@ export class TrinoSqlParser extends Parser { _localctx = new SubstringContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1898; - this.match(TrinoSqlParser.SUBSTRING); - this.state = 1899; - this.match(TrinoSqlParser.T__1); - this.state = 1900; + this.state = 1936; + this.match(TrinoSqlParser.KW_SUBSTRING); + this.state = 1937; + this.match(TrinoSqlParser.T__0); + this.state = 1938; this.valueExpression(0); - this.state = 1901; - this.match(TrinoSqlParser.FROM); - this.state = 1902; + this.state = 1939; + this.match(TrinoSqlParser.KW_FROM); + this.state = 1940; this.valueExpression(0); - this.state = 1905; + this.state = 1943; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.FOR) { + if (_la === TrinoSqlParser.KW_FOR) { { - this.state = 1903; - this.match(TrinoSqlParser.FOR); - this.state = 1904; + this.state = 1941; + this.match(TrinoSqlParser.KW_FOR); + this.state = 1942; this.valueExpression(0); } } - this.state = 1907; - this.match(TrinoSqlParser.T__2); + this.state = 1945; + this.match(TrinoSqlParser.T__1); } break; @@ -7902,26 +7955,26 @@ export class TrinoSqlParser extends Parser { _localctx = new NormalizeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1909; - this.match(TrinoSqlParser.NORMALIZE); - this.state = 1910; - this.match(TrinoSqlParser.T__1); - this.state = 1911; + this.state = 1947; + this.match(TrinoSqlParser.KW_NORMALIZE); + this.state = 1948; + this.match(TrinoSqlParser.T__0); + this.state = 1949; this.valueExpression(0); - this.state = 1914; + this.state = 1952; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.T__3) { + if (_la === TrinoSqlParser.T__2) { { - this.state = 1912; - this.match(TrinoSqlParser.T__3); - this.state = 1913; + this.state = 1950; + this.match(TrinoSqlParser.T__2); + this.state = 1951; this.normalForm(); } } - this.state = 1916; - this.match(TrinoSqlParser.T__2); + this.state = 1954; + this.match(TrinoSqlParser.T__1); } break; @@ -7930,18 +7983,18 @@ export class TrinoSqlParser extends Parser { _localctx = new ExtractContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1918; - this.match(TrinoSqlParser.EXTRACT); - this.state = 1919; - this.match(TrinoSqlParser.T__1); - this.state = 1920; + this.state = 1956; + this.match(TrinoSqlParser.KW_EXTRACT); + this.state = 1957; + this.match(TrinoSqlParser.T__0); + this.state = 1958; this.identifier(); - this.state = 1921; - this.match(TrinoSqlParser.FROM); - this.state = 1922; + this.state = 1959; + this.match(TrinoSqlParser.KW_FROM); + this.state = 1960; this.valueExpression(0); - this.state = 1923; - this.match(TrinoSqlParser.T__2); + this.state = 1961; + this.match(TrinoSqlParser.T__1); } break; @@ -7950,12 +8003,12 @@ export class TrinoSqlParser extends Parser { _localctx = new ParenthesizedExpressionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1925; - this.match(TrinoSqlParser.T__1); - this.state = 1926; + this.state = 1963; + this.match(TrinoSqlParser.T__0); + this.state = 1964; this.expression(); - this.state = 1927; - this.match(TrinoSqlParser.T__2); + this.state = 1965; + this.match(TrinoSqlParser.T__1); } break; @@ -7964,45 +8017,45 @@ export class TrinoSqlParser extends Parser { _localctx = new GroupingOperationContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 1929; - this.match(TrinoSqlParser.GROUPING); - this.state = 1930; - this.match(TrinoSqlParser.T__1); - this.state = 1939; + this.state = 1967; + this.match(TrinoSqlParser.KW_GROUPING); + this.state = 1968; + this.match(TrinoSqlParser.T__0); + this.state = 1977; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.ADD - 17)) | (1 << (TrinoSqlParser.ADMIN - 17)) | (1 << (TrinoSqlParser.AFTER - 17)) | (1 << (TrinoSqlParser.ALL - 17)) | (1 << (TrinoSqlParser.ANALYZE - 17)) | (1 << (TrinoSqlParser.ANY - 17)) | (1 << (TrinoSqlParser.ARRAY - 17)) | (1 << (TrinoSqlParser.ASC - 17)) | (1 << (TrinoSqlParser.AT - 17)) | (1 << (TrinoSqlParser.AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.BERNOULLI - 17)) | (1 << (TrinoSqlParser.CALL - 17)) | (1 << (TrinoSqlParser.CASCADE - 17)) | (1 << (TrinoSqlParser.CATALOGS - 17)) | (1 << (TrinoSqlParser.COLUMN - 17)) | (1 << (TrinoSqlParser.COLUMNS - 17)) | (1 << (TrinoSqlParser.COMMENT - 17)) | (1 << (TrinoSqlParser.COMMIT - 17)) | (1 << (TrinoSqlParser.COMMITTED - 17)) | (1 << (TrinoSqlParser.CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.DATA - 56)) | (1 << (TrinoSqlParser.DATE - 56)) | (1 << (TrinoSqlParser.DAY - 56)) | (1 << (TrinoSqlParser.DEFAULT - 56)) | (1 << (TrinoSqlParser.DEFINER - 56)) | (1 << (TrinoSqlParser.DESC - 56)) | (1 << (TrinoSqlParser.DEFINE - 56)) | (1 << (TrinoSqlParser.DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.DOUBLE - 56)) | (1 << (TrinoSqlParser.EMPTY - 56)) | (1 << (TrinoSqlParser.EXCLUDING - 56)) | (1 << (TrinoSqlParser.EXPLAIN - 56)) | (1 << (TrinoSqlParser.FETCH - 56)) | (1 << (TrinoSqlParser.FILTER - 56)) | (1 << (TrinoSqlParser.FINAL - 56)) | (1 << (TrinoSqlParser.FIRST - 56)) | (1 << (TrinoSqlParser.FOLLOWING - 56)) | (1 << (TrinoSqlParser.FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.FUNCTIONS - 90)) | (1 << (TrinoSqlParser.GRANT - 90)) | (1 << (TrinoSqlParser.GRANTED - 90)) | (1 << (TrinoSqlParser.GRANTS - 90)) | (1 << (TrinoSqlParser.DENY - 90)) | (1 << (TrinoSqlParser.GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.GROUPS - 90)) | (1 << (TrinoSqlParser.HOUR - 90)) | (1 << (TrinoSqlParser.IF - 90)) | (1 << (TrinoSqlParser.IGNORE - 90)) | (1 << (TrinoSqlParser.INCLUDING - 90)) | (1 << (TrinoSqlParser.INITIAL - 90)) | (1 << (TrinoSqlParser.INPUT - 90)) | (1 << (TrinoSqlParser.INTERVAL - 90)) | (1 << (TrinoSqlParser.INVOKER - 90)) | (1 << (TrinoSqlParser.IO - 90)) | (1 << (TrinoSqlParser.ISOLATION - 90)) | (1 << (TrinoSqlParser.JSON - 90)) | (1 << (TrinoSqlParser.LAST - 90)) | (1 << (TrinoSqlParser.LATERAL - 90)) | (1 << (TrinoSqlParser.LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.LIMIT - 123)) | (1 << (TrinoSqlParser.LOCAL - 123)) | (1 << (TrinoSqlParser.LOGICAL - 123)) | (1 << (TrinoSqlParser.MAP - 123)) | (1 << (TrinoSqlParser.MATCH - 123)) | (1 << (TrinoSqlParser.MATCHED - 123)) | (1 << (TrinoSqlParser.MATCHES - 123)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.MATERIALIZED - 123)) | (1 << (TrinoSqlParser.MEASURES - 123)) | (1 << (TrinoSqlParser.MERGE - 123)) | (1 << (TrinoSqlParser.MINUTE - 123)) | (1 << (TrinoSqlParser.MONTH - 123)) | (1 << (TrinoSqlParser.NEXT - 123)) | (1 << (TrinoSqlParser.NFC - 123)) | (1 << (TrinoSqlParser.NFD - 123)) | (1 << (TrinoSqlParser.NFKC - 123)) | (1 << (TrinoSqlParser.NFKD - 123)) | (1 << (TrinoSqlParser.NO - 123)) | (1 << (TrinoSqlParser.NONE - 123)) | (1 << (TrinoSqlParser.NULLIF - 123)) | (1 << (TrinoSqlParser.NULLS - 123)) | (1 << (TrinoSqlParser.OFFSET - 123)) | (1 << (TrinoSqlParser.OMIT - 123)) | (1 << (TrinoSqlParser.ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.ONLY - 155)) | (1 << (TrinoSqlParser.OPTION - 155)) | (1 << (TrinoSqlParser.ORDINALITY - 155)) | (1 << (TrinoSqlParser.OUTPUT - 155)) | (1 << (TrinoSqlParser.OVER - 155)) | (1 << (TrinoSqlParser.PARTITION - 155)) | (1 << (TrinoSqlParser.PARTITIONS - 155)) | (1 << (TrinoSqlParser.PAST - 155)) | (1 << (TrinoSqlParser.PATH - 155)) | (1 << (TrinoSqlParser.PATTERN - 155)) | (1 << (TrinoSqlParser.PER - 155)) | (1 << (TrinoSqlParser.PERMUTE - 155)) | (1 << (TrinoSqlParser.POSITION - 155)) | (1 << (TrinoSqlParser.PRECEDING - 155)) | (1 << (TrinoSqlParser.PRECISION - 155)) | (1 << (TrinoSqlParser.PRIVILEGES - 155)) | (1 << (TrinoSqlParser.PROPERTIES - 155)) | (1 << (TrinoSqlParser.RANGE - 155)) | (1 << (TrinoSqlParser.READ - 155)) | (1 << (TrinoSqlParser.REFRESH - 155)) | (1 << (TrinoSqlParser.RENAME - 155)) | (1 << (TrinoSqlParser.REPEATABLE - 155)) | (1 << (TrinoSqlParser.REPLACE - 155)) | (1 << (TrinoSqlParser.RESET - 155)) | (1 << (TrinoSqlParser.RESPECT - 155)) | (1 << (TrinoSqlParser.RESTRICT - 155)) | (1 << (TrinoSqlParser.REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.ROLE - 188)) | (1 << (TrinoSqlParser.ROLES - 188)) | (1 << (TrinoSqlParser.ROLLBACK - 188)) | (1 << (TrinoSqlParser.ROW - 188)) | (1 << (TrinoSqlParser.ROWS - 188)) | (1 << (TrinoSqlParser.RUNNING - 188)) | (1 << (TrinoSqlParser.SCHEMA - 188)) | (1 << (TrinoSqlParser.SCHEMAS - 188)) | (1 << (TrinoSqlParser.SECOND - 188)) | (1 << (TrinoSqlParser.SECURITY - 188)) | (1 << (TrinoSqlParser.SEEK - 188)) | (1 << (TrinoSqlParser.SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.SESSION - 188)) | (1 << (TrinoSqlParser.SET - 188)) | (1 << (TrinoSqlParser.SETS - 188)) | (1 << (TrinoSqlParser.SHOW - 188)) | (1 << (TrinoSqlParser.SOME - 188)) | (1 << (TrinoSqlParser.START - 188)) | (1 << (TrinoSqlParser.STATS - 188)) | (1 << (TrinoSqlParser.SUBSET - 188)) | (1 << (TrinoSqlParser.SUBSTRING - 188)) | (1 << (TrinoSqlParser.SYSTEM - 188)) | (1 << (TrinoSqlParser.TABLES - 188)) | (1 << (TrinoSqlParser.TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.TEXT - 188)) | (1 << (TrinoSqlParser.TIES - 188)) | (1 << (TrinoSqlParser.TIME - 188)) | (1 << (TrinoSqlParser.TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.TO - 220)) | (1 << (TrinoSqlParser.TRANSACTION - 220)) | (1 << (TrinoSqlParser.TRUNCATE - 220)) | (1 << (TrinoSqlParser.TRY_CAST - 220)) | (1 << (TrinoSqlParser.TYPE - 220)) | (1 << (TrinoSqlParser.UNBOUNDED - 220)) | (1 << (TrinoSqlParser.UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.UNMATCHED - 220)) | (1 << (TrinoSqlParser.UPDATE - 220)) | (1 << (TrinoSqlParser.USE - 220)) | (1 << (TrinoSqlParser.USER - 220)) | (1 << (TrinoSqlParser.VALIDATE - 220)) | (1 << (TrinoSqlParser.VERBOSE - 220)) | (1 << (TrinoSqlParser.VIEW - 220)) | (1 << (TrinoSqlParser.WINDOW - 220)) | (1 << (TrinoSqlParser.WITHOUT - 220)) | (1 << (TrinoSqlParser.WORK - 220)) | (1 << (TrinoSqlParser.WRITE - 220)) | (1 << (TrinoSqlParser.YEAR - 220)) | (1 << (TrinoSqlParser.ZONE - 220)))) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & ((1 << (TrinoSqlParser.IDENTIFIER - 268)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 268)))) !== 0)) { + if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.KW_ADD - 17)) | (1 << (TrinoSqlParser.KW_ADMIN - 17)) | (1 << (TrinoSqlParser.KW_AFTER - 17)) | (1 << (TrinoSqlParser.KW_ALL - 17)) | (1 << (TrinoSqlParser.KW_ANALYZE - 17)) | (1 << (TrinoSqlParser.KW_ANY - 17)) | (1 << (TrinoSqlParser.KW_ARRAY - 17)) | (1 << (TrinoSqlParser.KW_ASC - 17)) | (1 << (TrinoSqlParser.KW_AT - 17)) | (1 << (TrinoSqlParser.KW_AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.KW_BERNOULLI - 17)) | (1 << (TrinoSqlParser.KW_CALL - 17)) | (1 << (TrinoSqlParser.KW_CASCADE - 17)) | (1 << (TrinoSqlParser.KW_CATALOGS - 17)) | (1 << (TrinoSqlParser.KW_COLUMN - 17)) | (1 << (TrinoSqlParser.KW_COLUMNS - 17)) | (1 << (TrinoSqlParser.KW_COMMENT - 17)) | (1 << (TrinoSqlParser.KW_COMMIT - 17)) | (1 << (TrinoSqlParser.KW_COMMITTED - 17)) | (1 << (TrinoSqlParser.KW_CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.KW_DATA - 56)) | (1 << (TrinoSqlParser.KW_DATE - 56)) | (1 << (TrinoSqlParser.KW_DAY - 56)) | (1 << (TrinoSqlParser.KW_DEFAULT - 56)) | (1 << (TrinoSqlParser.KW_DEFINER - 56)) | (1 << (TrinoSqlParser.KW_DESC - 56)) | (1 << (TrinoSqlParser.KW_DEFINE - 56)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.KW_DOUBLE - 56)) | (1 << (TrinoSqlParser.KW_EMPTY - 56)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 56)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 56)) | (1 << (TrinoSqlParser.KW_FETCH - 56)) | (1 << (TrinoSqlParser.KW_FILTER - 56)) | (1 << (TrinoSqlParser.KW_FINAL - 56)) | (1 << (TrinoSqlParser.KW_FIRST - 56)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 56)) | (1 << (TrinoSqlParser.KW_FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.KW_FUNCTIONS - 90)) | (1 << (TrinoSqlParser.KW_GRANT - 90)) | (1 << (TrinoSqlParser.KW_GRANTED - 90)) | (1 << (TrinoSqlParser.KW_GRANTS - 90)) | (1 << (TrinoSqlParser.KW_DENY - 90)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.KW_GROUPS - 90)) | (1 << (TrinoSqlParser.KW_HOUR - 90)) | (1 << (TrinoSqlParser.KW_IF - 90)) | (1 << (TrinoSqlParser.KW_IGNORE - 90)) | (1 << (TrinoSqlParser.KW_INCLUDING - 90)) | (1 << (TrinoSqlParser.KW_INITIAL - 90)) | (1 << (TrinoSqlParser.KW_INPUT - 90)) | (1 << (TrinoSqlParser.KW_INTERVAL - 90)) | (1 << (TrinoSqlParser.KW_INVOKER - 90)) | (1 << (TrinoSqlParser.KW_IO - 90)) | (1 << (TrinoSqlParser.KW_ISOLATION - 90)) | (1 << (TrinoSqlParser.KW_JSON - 90)) | (1 << (TrinoSqlParser.KW_LAST - 90)) | (1 << (TrinoSqlParser.KW_LATERAL - 90)) | (1 << (TrinoSqlParser.KW_LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.KW_LIMIT - 123)) | (1 << (TrinoSqlParser.KW_LOCAL - 123)) | (1 << (TrinoSqlParser.KW_LOGICAL - 123)) | (1 << (TrinoSqlParser.KW_MAP - 123)) | (1 << (TrinoSqlParser.KW_MATCH - 123)) | (1 << (TrinoSqlParser.KW_MATCHED - 123)) | (1 << (TrinoSqlParser.KW_MATCHES - 123)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 123)) | (1 << (TrinoSqlParser.KW_MEASURES - 123)) | (1 << (TrinoSqlParser.KW_MERGE - 123)) | (1 << (TrinoSqlParser.KW_MINUTE - 123)) | (1 << (TrinoSqlParser.KW_MONTH - 123)) | (1 << (TrinoSqlParser.KW_NEXT - 123)) | (1 << (TrinoSqlParser.KW_NFC - 123)) | (1 << (TrinoSqlParser.KW_NFD - 123)) | (1 << (TrinoSqlParser.KW_NFKC - 123)) | (1 << (TrinoSqlParser.KW_NFKD - 123)) | (1 << (TrinoSqlParser.KW_NO - 123)) | (1 << (TrinoSqlParser.KW_NONE - 123)) | (1 << (TrinoSqlParser.KW_NULLIF - 123)) | (1 << (TrinoSqlParser.KW_NULLS - 123)) | (1 << (TrinoSqlParser.KW_OFFSET - 123)) | (1 << (TrinoSqlParser.KW_OMIT - 123)) | (1 << (TrinoSqlParser.KW_ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.KW_ONLY - 155)) | (1 << (TrinoSqlParser.KW_OPTION - 155)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 155)) | (1 << (TrinoSqlParser.KW_OUTPUT - 155)) | (1 << (TrinoSqlParser.KW_OVER - 155)) | (1 << (TrinoSqlParser.KW_PARTITION - 155)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 155)) | (1 << (TrinoSqlParser.KW_PAST - 155)) | (1 << (TrinoSqlParser.KW_PATH - 155)) | (1 << (TrinoSqlParser.KW_PATTERN - 155)) | (1 << (TrinoSqlParser.KW_PER - 155)) | (1 << (TrinoSqlParser.KW_PERMUTE - 155)) | (1 << (TrinoSqlParser.KW_POSITION - 155)) | (1 << (TrinoSqlParser.KW_PRECEDING - 155)) | (1 << (TrinoSqlParser.KW_PRECISION - 155)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 155)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 155)) | (1 << (TrinoSqlParser.KW_RANGE - 155)) | (1 << (TrinoSqlParser.KW_READ - 155)) | (1 << (TrinoSqlParser.KW_REFRESH - 155)) | (1 << (TrinoSqlParser.KW_RENAME - 155)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 155)) | (1 << (TrinoSqlParser.KW_REPLACE - 155)) | (1 << (TrinoSqlParser.KW_RESET - 155)) | (1 << (TrinoSqlParser.KW_RESPECT - 155)) | (1 << (TrinoSqlParser.KW_RESTRICT - 155)) | (1 << (TrinoSqlParser.KW_REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.KW_ROLE - 188)) | (1 << (TrinoSqlParser.KW_ROLES - 188)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 188)) | (1 << (TrinoSqlParser.KW_ROW - 188)) | (1 << (TrinoSqlParser.KW_ROWS - 188)) | (1 << (TrinoSqlParser.KW_RUNNING - 188)) | (1 << (TrinoSqlParser.KW_SCHEMA - 188)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 188)) | (1 << (TrinoSqlParser.KW_SECOND - 188)) | (1 << (TrinoSqlParser.KW_SECURITY - 188)) | (1 << (TrinoSqlParser.KW_SEEK - 188)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.KW_SESSION - 188)) | (1 << (TrinoSqlParser.KW_SET - 188)) | (1 << (TrinoSqlParser.KW_SETS - 188)) | (1 << (TrinoSqlParser.KW_SHOW - 188)) | (1 << (TrinoSqlParser.KW_SOME - 188)) | (1 << (TrinoSqlParser.KW_START - 188)) | (1 << (TrinoSqlParser.KW_STATS - 188)) | (1 << (TrinoSqlParser.KW_SUBSET - 188)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 188)) | (1 << (TrinoSqlParser.KW_SYSTEM - 188)) | (1 << (TrinoSqlParser.KW_TABLES - 188)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.KW_TEXT - 188)) | (1 << (TrinoSqlParser.KW_TIES - 188)) | (1 << (TrinoSqlParser.KW_TIME - 188)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.KW_TO - 220)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 220)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 220)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 220)) | (1 << (TrinoSqlParser.KW_TYPE - 220)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 220)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 220)) | (1 << (TrinoSqlParser.KW_UPDATE - 220)) | (1 << (TrinoSqlParser.KW_USE - 220)) | (1 << (TrinoSqlParser.KW_USER - 220)) | (1 << (TrinoSqlParser.KW_VALIDATE - 220)) | (1 << (TrinoSqlParser.KW_VERBOSE - 220)) | (1 << (TrinoSqlParser.KW_VIEW - 220)) | (1 << (TrinoSqlParser.KW_WINDOW - 220)) | (1 << (TrinoSqlParser.KW_WITHOUT - 220)) | (1 << (TrinoSqlParser.KW_WORK - 220)) | (1 << (TrinoSqlParser.KW_WRITE - 220)) | (1 << (TrinoSqlParser.KW_YEAR - 220)) | (1 << (TrinoSqlParser.KW_ZONE - 220)))) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & ((1 << (TrinoSqlParser.IDENTIFIER - 268)) | (1 << (TrinoSqlParser.DIGIT_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.QUOTED_IDENTIFIER - 268)) | (1 << (TrinoSqlParser.BACKQUOTED_IDENTIFIER - 268)))) !== 0)) { { - this.state = 1931; + this.state = 1969; this.qualifiedName(); - this.state = 1936; + this.state = 1974; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 1932; - this.match(TrinoSqlParser.T__3); - this.state = 1933; + this.state = 1970; + this.match(TrinoSqlParser.T__2); + this.state = 1971; this.qualifiedName(); } } - this.state = 1938; + this.state = 1976; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1941; - this.match(TrinoSqlParser.T__2); + this.state = 1979; + this.match(TrinoSqlParser.T__1); } break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 1954; + this.state = 1992; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 254, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 260, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -8010,23 +8063,23 @@ export class TrinoSqlParser extends Parser { } _prevctx = _localctx; { - this.state = 1952; + this.state = 1990; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 253, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 259, this._ctx) ) { case 1: { _localctx = new SubscriptContext(new PrimaryExpressionContext(_parentctx, _parentState)); (_localctx as SubscriptContext)._value = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 1944; + this.state = 1982; if (!(this.precpred(this._ctx, 17))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 17)"); } - this.state = 1945; + this.state = 1983; this.match(TrinoSqlParser.T__6); - this.state = 1946; + this.state = 1984; (_localctx as SubscriptContext)._index = this.valueExpression(0); - this.state = 1947; + this.state = 1985; this.match(TrinoSqlParser.T__7); } break; @@ -8036,22 +8089,22 @@ export class TrinoSqlParser extends Parser { _localctx = new DereferenceContext(new PrimaryExpressionContext(_parentctx, _parentState)); (_localctx as DereferenceContext)._base = _prevctx; this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 1949; + this.state = 1987; if (!(this.precpred(this._ctx, 15))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 15)"); } - this.state = 1950; - this.match(TrinoSqlParser.T__0); - this.state = 1951; + this.state = 1988; + this.match(TrinoSqlParser.T__3); + this.state = 1989; (_localctx as DereferenceContext)._fieldName = this.identifier(); } break; } } } - this.state = 1956; + this.state = 1994; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 254, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 260, this._ctx); } } } @@ -8077,9 +8130,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1957; + this.state = 1995; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FINAL || _la === TrinoSqlParser.RUNNING)) { + if (!(_la === TrinoSqlParser.KW_FINAL || _la === TrinoSqlParser.KW_RUNNING)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -8110,25 +8163,25 @@ export class TrinoSqlParser extends Parser { let _localctx: NullTreatmentContext = new NullTreatmentContext(this._ctx, this.state); this.enterRule(_localctx, 106, TrinoSqlParser.RULE_nullTreatment); try { - this.state = 1963; + this.state = 2001; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.IGNORE: + case TrinoSqlParser.KW_IGNORE: this.enterOuterAlt(_localctx, 1); { - this.state = 1959; - this.match(TrinoSqlParser.IGNORE); - this.state = 1960; - this.match(TrinoSqlParser.NULLS); + this.state = 1997; + this.match(TrinoSqlParser.KW_IGNORE); + this.state = 1998; + this.match(TrinoSqlParser.KW_NULLS); } break; - case TrinoSqlParser.RESPECT: + case TrinoSqlParser.KW_RESPECT: this.enterOuterAlt(_localctx, 2); { - this.state = 1961; - this.match(TrinoSqlParser.RESPECT); - this.state = 1962; - this.match(TrinoSqlParser.NULLS); + this.state = 1999; + this.match(TrinoSqlParser.KW_RESPECT); + this.state = 2000; + this.match(TrinoSqlParser.KW_NULLS); } break; default: @@ -8154,14 +8207,14 @@ export class TrinoSqlParser extends Parser { let _localctx: StringContext = new StringContext(this._ctx, this.state); this.enterRule(_localctx, 108, TrinoSqlParser.RULE_string); try { - this.state = 1971; + this.state = 2009; this._errHandler.sync(this); switch (this._input.LA(1)) { case TrinoSqlParser.STRING: _localctx = new BasicStringLiteralContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1965; + this.state = 2003; this.match(TrinoSqlParser.STRING); } break; @@ -8169,16 +8222,16 @@ export class TrinoSqlParser extends Parser { _localctx = new UnicodeStringLiteralContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1966; + this.state = 2004; this.match(TrinoSqlParser.UNICODE_STRING); - this.state = 1969; + this.state = 2007; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 256, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 262, this._ctx) ) { case 1: { - this.state = 1967; - this.match(TrinoSqlParser.UESCAPE); - this.state = 1968; + this.state = 2005; + this.match(TrinoSqlParser.KW_UESCAPE); + this.state = 2006; this.match(TrinoSqlParser.STRING); } break; @@ -8208,18 +8261,18 @@ export class TrinoSqlParser extends Parser { let _localctx: TimeZoneSpecifierContext = new TimeZoneSpecifierContext(this._ctx, this.state); this.enterRule(_localctx, 110, TrinoSqlParser.RULE_timeZoneSpecifier); try { - this.state = 1979; + this.state = 2017; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 258, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 264, this._ctx) ) { case 1: _localctx = new TimeZoneIntervalContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 1973; - this.match(TrinoSqlParser.TIME); - this.state = 1974; - this.match(TrinoSqlParser.ZONE); - this.state = 1975; + this.state = 2011; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2012; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 2013; this.interval(); } break; @@ -8228,11 +8281,11 @@ export class TrinoSqlParser extends Parser { _localctx = new TimeZoneStringContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 1976; - this.match(TrinoSqlParser.TIME); - this.state = 1977; - this.match(TrinoSqlParser.ZONE); - this.state = 1978; + this.state = 2014; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2015; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 2016; this.string(); } break; @@ -8260,7 +8313,7 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1981; + this.state = 2019; _la = this._input.LA(1); if (!(((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & ((1 << (TrinoSqlParser.EQ - 249)) | (1 << (TrinoSqlParser.NEQ - 249)) | (1 << (TrinoSqlParser.LT - 249)) | (1 << (TrinoSqlParser.LTE - 249)) | (1 << (TrinoSqlParser.GT - 249)) | (1 << (TrinoSqlParser.GTE - 249)))) !== 0))) { this._errHandler.recoverInline(this); @@ -8296,9 +8349,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1983; + this.state = 2021; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.ALL || _la === TrinoSqlParser.ANY || _la === TrinoSqlParser.SOME)) { + if (!(_la === TrinoSqlParser.KW_ALL || _la === TrinoSqlParser.KW_ANY || _la === TrinoSqlParser.KW_SOME)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -8332,9 +8385,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1985; + this.state = 2023; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FALSE || _la === TrinoSqlParser.TRUE)) { + if (!(_la === TrinoSqlParser.KW_FALSE || _la === TrinoSqlParser.KW_TRUE)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -8368,14 +8421,14 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1987; - this.match(TrinoSqlParser.INTERVAL); - this.state = 1989; + this.state = 2025; + this.match(TrinoSqlParser.KW_INTERVAL); + this.state = 2027; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.PLUS || _la === TrinoSqlParser.MINUS) { { - this.state = 1988; + this.state = 2026; _localctx._sign = this._input.LT(1); _la = this._input.LA(1); if (!(_la === TrinoSqlParser.PLUS || _la === TrinoSqlParser.MINUS)) { @@ -8391,18 +8444,18 @@ export class TrinoSqlParser extends Parser { } } - this.state = 1991; + this.state = 2029; this.string(); - this.state = 1992; + this.state = 2030; _localctx._from = this.intervalField(); - this.state = 1995; + this.state = 2033; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 260, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 266, this._ctx) ) { case 1: { - this.state = 1993; - this.match(TrinoSqlParser.TO); - this.state = 1994; + this.state = 2031; + this.match(TrinoSqlParser.KW_TO); + this.state = 2032; _localctx._to = this.intervalField(); } break; @@ -8431,9 +8484,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1997; + this.state = 2035; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.DAY || _la === TrinoSqlParser.HOUR || _la === TrinoSqlParser.MINUTE || _la === TrinoSqlParser.MONTH || _la === TrinoSqlParser.SECOND || _la === TrinoSqlParser.YEAR)) { + if (!(_la === TrinoSqlParser.KW_DAY || _la === TrinoSqlParser.KW_HOUR || _la === TrinoSqlParser.KW_MINUTE || _la === TrinoSqlParser.KW_MONTH || _la === TrinoSqlParser.KW_SECOND || _la === TrinoSqlParser.KW_YEAR)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -8467,9 +8520,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 1999; + this.state = 2037; _la = this._input.LA(1); - if (!(((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & ((1 << (TrinoSqlParser.NFC - 140)) | (1 << (TrinoSqlParser.NFD - 140)) | (1 << (TrinoSqlParser.NFKC - 140)) | (1 << (TrinoSqlParser.NFKD - 140)))) !== 0))) { + if (!(((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & ((1 << (TrinoSqlParser.KW_NFC - 140)) | (1 << (TrinoSqlParser.KW_NFD - 140)) | (1 << (TrinoSqlParser.KW_NFKC - 140)) | (1 << (TrinoSqlParser.KW_NFKD - 140)))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -8515,39 +8568,39 @@ export class TrinoSqlParser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 2092; + this.state = 2130; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 271, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 277, this._ctx) ) { case 1: { _localctx = new RowTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2002; - this.match(TrinoSqlParser.ROW); - this.state = 2003; - this.match(TrinoSqlParser.T__1); - this.state = 2004; + this.state = 2040; + this.match(TrinoSqlParser.KW_ROW); + this.state = 2041; + this.match(TrinoSqlParser.T__0); + this.state = 2042; this.rowField(); - this.state = 2009; + this.state = 2047; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2005; - this.match(TrinoSqlParser.T__3); - this.state = 2006; + this.state = 2043; + this.match(TrinoSqlParser.T__2); + this.state = 2044; this.rowField(); } } - this.state = 2011; + this.state = 2049; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2012; - this.match(TrinoSqlParser.T__2); + this.state = 2050; + this.match(TrinoSqlParser.T__1); } break; @@ -8556,18 +8609,18 @@ export class TrinoSqlParser extends Parser { _localctx = new IntervalTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2014; - this.match(TrinoSqlParser.INTERVAL); - this.state = 2015; + this.state = 2052; + this.match(TrinoSqlParser.KW_INTERVAL); + this.state = 2053; (_localctx as IntervalTypeContext)._from = this.intervalField(); - this.state = 2018; + this.state = 2056; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 262, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 268, this._ctx) ) { case 1: { - this.state = 2016; - this.match(TrinoSqlParser.TO); - this.state = 2017; + this.state = 2054; + this.match(TrinoSqlParser.KW_TO); + this.state = 2055; (_localctx as IntervalTypeContext)._to = this.intervalField(); } break; @@ -8580,33 +8633,33 @@ export class TrinoSqlParser extends Parser { _localctx = new DateTimeTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2020; - (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.TIMESTAMP); - this.state = 2025; + this.state = 2058; + (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); + this.state = 2063; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 263, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 269, this._ctx) ) { case 1: { - this.state = 2021; - this.match(TrinoSqlParser.T__1); - this.state = 2022; + this.state = 2059; + this.match(TrinoSqlParser.T__0); + this.state = 2060; (_localctx as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2023; - this.match(TrinoSqlParser.T__2); + this.state = 2061; + this.match(TrinoSqlParser.T__1); } break; } - this.state = 2030; + this.state = 2068; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 264, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 270, this._ctx) ) { case 1: { - this.state = 2027; - this.match(TrinoSqlParser.WITHOUT); - this.state = 2028; - this.match(TrinoSqlParser.TIME); - this.state = 2029; - this.match(TrinoSqlParser.ZONE); + this.state = 2065; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2066; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2067; + this.match(TrinoSqlParser.KW_ZONE); } break; } @@ -8618,28 +8671,28 @@ export class TrinoSqlParser extends Parser { _localctx = new DateTimeTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2032; - (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.TIMESTAMP); - this.state = 2037; + this.state = 2070; + (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); + this.state = 2075; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.T__1) { + if (_la === TrinoSqlParser.T__0) { { - this.state = 2033; - this.match(TrinoSqlParser.T__1); - this.state = 2034; + this.state = 2071; + this.match(TrinoSqlParser.T__0); + this.state = 2072; (_localctx as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2035; - this.match(TrinoSqlParser.T__2); + this.state = 2073; + this.match(TrinoSqlParser.T__1); } } - this.state = 2039; - this.match(TrinoSqlParser.WITH); - this.state = 2040; - this.match(TrinoSqlParser.TIME); - this.state = 2041; - this.match(TrinoSqlParser.ZONE); + this.state = 2077; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2078; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2079; + this.match(TrinoSqlParser.KW_ZONE); } break; @@ -8648,33 +8701,33 @@ export class TrinoSqlParser extends Parser { _localctx = new DateTimeTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2042; - (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.TIME); - this.state = 2047; + this.state = 2080; + (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); + this.state = 2085; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 266, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 272, this._ctx) ) { case 1: { - this.state = 2043; - this.match(TrinoSqlParser.T__1); - this.state = 2044; + this.state = 2081; + this.match(TrinoSqlParser.T__0); + this.state = 2082; (_localctx as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2045; - this.match(TrinoSqlParser.T__2); + this.state = 2083; + this.match(TrinoSqlParser.T__1); } break; } - this.state = 2052; + this.state = 2090; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 267, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 273, this._ctx) ) { case 1: { - this.state = 2049; - this.match(TrinoSqlParser.WITHOUT); - this.state = 2050; - this.match(TrinoSqlParser.TIME); - this.state = 2051; - this.match(TrinoSqlParser.ZONE); + this.state = 2087; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2088; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2089; + this.match(TrinoSqlParser.KW_ZONE); } break; } @@ -8686,28 +8739,28 @@ export class TrinoSqlParser extends Parser { _localctx = new DateTimeTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2054; - (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.TIME); - this.state = 2059; + this.state = 2092; + (_localctx as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); + this.state = 2097; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.T__1) { + if (_la === TrinoSqlParser.T__0) { { - this.state = 2055; - this.match(TrinoSqlParser.T__1); - this.state = 2056; + this.state = 2093; + this.match(TrinoSqlParser.T__0); + this.state = 2094; (_localctx as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2057; - this.match(TrinoSqlParser.T__2); + this.state = 2095; + this.match(TrinoSqlParser.T__1); } } - this.state = 2061; - this.match(TrinoSqlParser.WITH); - this.state = 2062; - this.match(TrinoSqlParser.TIME); - this.state = 2063; - this.match(TrinoSqlParser.ZONE); + this.state = 2099; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2100; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2101; + this.match(TrinoSqlParser.KW_ZONE); } break; @@ -8716,10 +8769,10 @@ export class TrinoSqlParser extends Parser { _localctx = new DoublePrecisionTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2064; - this.match(TrinoSqlParser.DOUBLE); - this.state = 2065; - this.match(TrinoSqlParser.PRECISION); + this.state = 2102; + this.match(TrinoSqlParser.KW_DOUBLE); + this.state = 2103; + this.match(TrinoSqlParser.KW_PRECISION); } break; @@ -8728,13 +8781,13 @@ export class TrinoSqlParser extends Parser { _localctx = new LegacyArrayTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2066; - this.match(TrinoSqlParser.ARRAY); - this.state = 2067; + this.state = 2104; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 2105; this.match(TrinoSqlParser.LT); - this.state = 2068; + this.state = 2106; this.type(0); - this.state = 2069; + this.state = 2107; this.match(TrinoSqlParser.GT); } break; @@ -8744,17 +8797,17 @@ export class TrinoSqlParser extends Parser { _localctx = new LegacyMapTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2071; - this.match(TrinoSqlParser.MAP); - this.state = 2072; + this.state = 2109; + this.match(TrinoSqlParser.KW_MAP); + this.state = 2110; this.match(TrinoSqlParser.LT); - this.state = 2073; + this.state = 2111; (_localctx as LegacyMapTypeContext)._keyType = this.type(0); - this.state = 2074; - this.match(TrinoSqlParser.T__3); - this.state = 2075; + this.state = 2112; + this.match(TrinoSqlParser.T__2); + this.state = 2113; (_localctx as LegacyMapTypeContext)._valueType = this.type(0); - this.state = 2076; + this.state = 2114; this.match(TrinoSqlParser.GT); } break; @@ -8764,35 +8817,35 @@ export class TrinoSqlParser extends Parser { _localctx = new GenericTypeContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 2078; + this.state = 2116; this.identifier(); - this.state = 2090; + this.state = 2128; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 270, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 276, this._ctx) ) { case 1: { - this.state = 2079; - this.match(TrinoSqlParser.T__1); - this.state = 2080; + this.state = 2117; + this.match(TrinoSqlParser.T__0); + this.state = 2118; this.typeParameter(); - this.state = 2085; + this.state = 2123; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2081; - this.match(TrinoSqlParser.T__3); - this.state = 2082; + this.state = 2119; + this.match(TrinoSqlParser.T__2); + this.state = 2120; this.typeParameter(); } } - this.state = 2087; + this.state = 2125; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2088; - this.match(TrinoSqlParser.T__2); + this.state = 2126; + this.match(TrinoSqlParser.T__1); } break; } @@ -8800,9 +8853,9 @@ export class TrinoSqlParser extends Parser { break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 2103; + this.state = 2141; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 273, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 279, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -8813,22 +8866,22 @@ export class TrinoSqlParser extends Parser { { _localctx = new ArrayTypeContext(new TypeContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_type); - this.state = 2094; + this.state = 2132; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 2095; - this.match(TrinoSqlParser.ARRAY); - this.state = 2099; + this.state = 2133; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 2137; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 272, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 278, this._ctx) ) { case 1: { - this.state = 2096; + this.state = 2134; this.match(TrinoSqlParser.T__6); - this.state = 2097; + this.state = 2135; this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2098; + this.state = 2136; this.match(TrinoSqlParser.T__7); } break; @@ -8836,9 +8889,9 @@ export class TrinoSqlParser extends Parser { } } } - this.state = 2105; + this.state = 2143; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 273, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 279, this._ctx); } } } @@ -8861,13 +8914,13 @@ export class TrinoSqlParser extends Parser { let _localctx: RowFieldContext = new RowFieldContext(this._ctx, this.state); this.enterRule(_localctx, 126, TrinoSqlParser.RULE_rowField); try { - this.state = 2110; + this.state = 2148; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 274, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 280, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 2106; + this.state = 2144; this.type(0); } break; @@ -8875,9 +8928,9 @@ export class TrinoSqlParser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 2107; + this.state = 2145; this.identifier(); - this.state = 2108; + this.state = 2146; this.type(0); } break; @@ -8902,182 +8955,182 @@ export class TrinoSqlParser extends Parser { let _localctx: TypeParameterContext = new TypeParameterContext(this._ctx, this.state); this.enterRule(_localctx, 128, TrinoSqlParser.RULE_typeParameter); try { - this.state = 2114; + this.state = 2152; this._errHandler.sync(this); switch (this._input.LA(1)) { case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(_localctx, 1); { - this.state = 2112; + this.state = 2150; this.match(TrinoSqlParser.INTEGER_VALUE); } break; - case TrinoSqlParser.ADD: - case TrinoSqlParser.ADMIN: - case TrinoSqlParser.AFTER: - case TrinoSqlParser.ALL: - case TrinoSqlParser.ANALYZE: - case TrinoSqlParser.ANY: - case TrinoSqlParser.ARRAY: - case TrinoSqlParser.ASC: - case TrinoSqlParser.AT: - case TrinoSqlParser.AUTHORIZATION: - case TrinoSqlParser.BERNOULLI: - case TrinoSqlParser.CALL: - case TrinoSqlParser.CASCADE: - case TrinoSqlParser.CATALOGS: - case TrinoSqlParser.COLUMN: - case TrinoSqlParser.COLUMNS: - case TrinoSqlParser.COMMENT: - case TrinoSqlParser.COMMIT: - case TrinoSqlParser.COMMITTED: - case TrinoSqlParser.CURRENT: - case TrinoSqlParser.DATA: - case TrinoSqlParser.DATE: - case TrinoSqlParser.DAY: - case TrinoSqlParser.DEFAULT: - case TrinoSqlParser.DEFINER: - case TrinoSqlParser.DESC: - case TrinoSqlParser.DEFINE: - case TrinoSqlParser.DISTRIBUTED: - case TrinoSqlParser.DOUBLE: - case TrinoSqlParser.EMPTY: - case TrinoSqlParser.EXCLUDING: - case TrinoSqlParser.EXPLAIN: - case TrinoSqlParser.FETCH: - case TrinoSqlParser.FILTER: - case TrinoSqlParser.FINAL: - case TrinoSqlParser.FIRST: - case TrinoSqlParser.FOLLOWING: - case TrinoSqlParser.FORMAT: - case TrinoSqlParser.FUNCTIONS: - case TrinoSqlParser.GRANT: - case TrinoSqlParser.GRANTED: - case TrinoSqlParser.GRANTS: - case TrinoSqlParser.DENY: - case TrinoSqlParser.GRAPHVIZ: - case TrinoSqlParser.GROUPS: - case TrinoSqlParser.HOUR: - case TrinoSqlParser.IF: - case TrinoSqlParser.IGNORE: - case TrinoSqlParser.INCLUDING: - case TrinoSqlParser.INITIAL: - case TrinoSqlParser.INPUT: - case TrinoSqlParser.INTERVAL: - case TrinoSqlParser.INVOKER: - case TrinoSqlParser.IO: - case TrinoSqlParser.ISOLATION: - case TrinoSqlParser.JSON: - case TrinoSqlParser.LAST: - case TrinoSqlParser.LATERAL: - case TrinoSqlParser.LEVEL: - case TrinoSqlParser.LIMIT: - case TrinoSqlParser.LOCAL: - case TrinoSqlParser.LOGICAL: - case TrinoSqlParser.MAP: - case TrinoSqlParser.MATCH: - case TrinoSqlParser.MATCHED: - case TrinoSqlParser.MATCHES: - case TrinoSqlParser.MATCH_RECOGNIZE: - case TrinoSqlParser.MATERIALIZED: - case TrinoSqlParser.MEASURES: - case TrinoSqlParser.MERGE: - case TrinoSqlParser.MINUTE: - case TrinoSqlParser.MONTH: - case TrinoSqlParser.NEXT: - case TrinoSqlParser.NFC: - case TrinoSqlParser.NFD: - case TrinoSqlParser.NFKC: - case TrinoSqlParser.NFKD: - case TrinoSqlParser.NO: - case TrinoSqlParser.NONE: - case TrinoSqlParser.NULLIF: - case TrinoSqlParser.NULLS: - case TrinoSqlParser.OFFSET: - case TrinoSqlParser.OMIT: - case TrinoSqlParser.ONE: - case TrinoSqlParser.ONLY: - case TrinoSqlParser.OPTION: - case TrinoSqlParser.ORDINALITY: - case TrinoSqlParser.OUTPUT: - case TrinoSqlParser.OVER: - case TrinoSqlParser.PARTITION: - case TrinoSqlParser.PARTITIONS: - case TrinoSqlParser.PAST: - case TrinoSqlParser.PATH: - case TrinoSqlParser.PATTERN: - case TrinoSqlParser.PER: - case TrinoSqlParser.PERMUTE: - case TrinoSqlParser.POSITION: - case TrinoSqlParser.PRECEDING: - case TrinoSqlParser.PRECISION: - case TrinoSqlParser.PRIVILEGES: - case TrinoSqlParser.PROPERTIES: - case TrinoSqlParser.RANGE: - case TrinoSqlParser.READ: - case TrinoSqlParser.REFRESH: - case TrinoSqlParser.RENAME: - case TrinoSqlParser.REPEATABLE: - case TrinoSqlParser.REPLACE: - case TrinoSqlParser.RESET: - case TrinoSqlParser.RESPECT: - case TrinoSqlParser.RESTRICT: - case TrinoSqlParser.REVOKE: - case TrinoSqlParser.ROLE: - case TrinoSqlParser.ROLES: - case TrinoSqlParser.ROLLBACK: - case TrinoSqlParser.ROW: - case TrinoSqlParser.ROWS: - case TrinoSqlParser.RUNNING: - case TrinoSqlParser.SCHEMA: - case TrinoSqlParser.SCHEMAS: - case TrinoSqlParser.SECOND: - case TrinoSqlParser.SECURITY: - case TrinoSqlParser.SEEK: - case TrinoSqlParser.SERIALIZABLE: - case TrinoSqlParser.SESSION: - case TrinoSqlParser.SET: - case TrinoSqlParser.SETS: - case TrinoSqlParser.SHOW: - case TrinoSqlParser.SOME: - case TrinoSqlParser.START: - case TrinoSqlParser.STATS: - case TrinoSqlParser.SUBSET: - case TrinoSqlParser.SUBSTRING: - case TrinoSqlParser.SYSTEM: - case TrinoSqlParser.TABLES: - case TrinoSqlParser.TABLESAMPLE: - case TrinoSqlParser.TEXT: - case TrinoSqlParser.TIES: - case TrinoSqlParser.TIME: - case TrinoSqlParser.TIMESTAMP: - case TrinoSqlParser.TO: - case TrinoSqlParser.TRANSACTION: - case TrinoSqlParser.TRUNCATE: - case TrinoSqlParser.TRY_CAST: - case TrinoSqlParser.TYPE: - case TrinoSqlParser.UNBOUNDED: - case TrinoSqlParser.UNCOMMITTED: - case TrinoSqlParser.UNMATCHED: - case TrinoSqlParser.UPDATE: - case TrinoSqlParser.USE: - case TrinoSqlParser.USER: - case TrinoSqlParser.VALIDATE: - case TrinoSqlParser.VERBOSE: - case TrinoSqlParser.VIEW: - case TrinoSqlParser.WINDOW: - case TrinoSqlParser.WITHOUT: - case TrinoSqlParser.WORK: - case TrinoSqlParser.WRITE: - case TrinoSqlParser.YEAR: - case TrinoSqlParser.ZONE: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: case TrinoSqlParser.IDENTIFIER: case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(_localctx, 2); { - this.state = 2113; + this.state = 2151; this.type(0); } break; @@ -9106,13 +9159,13 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2116; - this.match(TrinoSqlParser.WHEN); - this.state = 2117; + this.state = 2154; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2155; _localctx._condition = this.expression(); - this.state = 2118; - this.match(TrinoSqlParser.THEN); - this.state = 2119; + this.state = 2156; + this.match(TrinoSqlParser.KW_THEN); + this.state = 2157; _localctx._result = this.expression(); } } @@ -9137,16 +9190,16 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2121; - this.match(TrinoSqlParser.FILTER); - this.state = 2122; - this.match(TrinoSqlParser.T__1); - this.state = 2123; - this.match(TrinoSqlParser.WHERE); - this.state = 2124; + this.state = 2159; + this.match(TrinoSqlParser.KW_FILTER); + this.state = 2160; + this.match(TrinoSqlParser.T__0); + this.state = 2161; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 2162; this.booleanExpression(0); - this.state = 2125; - this.match(TrinoSqlParser.T__2); + this.state = 2163; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -9169,62 +9222,62 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 134, TrinoSqlParser.RULE_mergeCase); let _la: number; try { - this.state = 2191; + this.state = 2229; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 283, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 289, this._ctx) ) { case 1: _localctx = new MergeUpdateContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2127; - this.match(TrinoSqlParser.WHEN); - this.state = 2128; - this.match(TrinoSqlParser.MATCHED); - this.state = 2131; + this.state = 2165; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2166; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 2169; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AND) { + if (_la === TrinoSqlParser.KW_AND) { { - this.state = 2129; - this.match(TrinoSqlParser.AND); - this.state = 2130; + this.state = 2167; + this.match(TrinoSqlParser.KW_AND); + this.state = 2168; (_localctx as MergeUpdateContext)._condition = this.expression(); } } - this.state = 2133; - this.match(TrinoSqlParser.THEN); - this.state = 2134; - this.match(TrinoSqlParser.UPDATE); - this.state = 2135; - this.match(TrinoSqlParser.SET); - this.state = 2136; + this.state = 2171; + this.match(TrinoSqlParser.KW_THEN); + this.state = 2172; + this.match(TrinoSqlParser.KW_UPDATE); + this.state = 2173; + this.match(TrinoSqlParser.KW_SET); + this.state = 2174; (_localctx as MergeUpdateContext)._identifier = this.identifier(); (_localctx as MergeUpdateContext)._targets.push((_localctx as MergeUpdateContext)._identifier); - this.state = 2137; + this.state = 2175; this.match(TrinoSqlParser.EQ); - this.state = 2138; + this.state = 2176; (_localctx as MergeUpdateContext)._expression = this.expression(); (_localctx as MergeUpdateContext)._values.push((_localctx as MergeUpdateContext)._expression); - this.state = 2146; + this.state = 2184; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2139; - this.match(TrinoSqlParser.T__3); - this.state = 2140; + this.state = 2177; + this.match(TrinoSqlParser.T__2); + this.state = 2178; (_localctx as MergeUpdateContext)._identifier = this.identifier(); (_localctx as MergeUpdateContext)._targets.push((_localctx as MergeUpdateContext)._identifier); - this.state = 2141; + this.state = 2179; this.match(TrinoSqlParser.EQ); - this.state = 2142; + this.state = 2180; (_localctx as MergeUpdateContext)._expression = this.expression(); (_localctx as MergeUpdateContext)._values.push((_localctx as MergeUpdateContext)._expression); } } - this.state = 2148; + this.state = 2186; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -9235,26 +9288,26 @@ export class TrinoSqlParser extends Parser { _localctx = new MergeDeleteContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2149; - this.match(TrinoSqlParser.WHEN); - this.state = 2150; - this.match(TrinoSqlParser.MATCHED); - this.state = 2153; + this.state = 2187; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2188; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 2191; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AND) { + if (_la === TrinoSqlParser.KW_AND) { { - this.state = 2151; - this.match(TrinoSqlParser.AND); - this.state = 2152; + this.state = 2189; + this.match(TrinoSqlParser.KW_AND); + this.state = 2190; (_localctx as MergeDeleteContext)._condition = this.expression(); } } - this.state = 2155; - this.match(TrinoSqlParser.THEN); - this.state = 2156; - this.match(TrinoSqlParser.DELETE); + this.state = 2193; + this.match(TrinoSqlParser.KW_THEN); + this.state = 2194; + this.match(TrinoSqlParser.KW_DELETE); } break; @@ -9262,86 +9315,86 @@ export class TrinoSqlParser extends Parser { _localctx = new MergeInsertContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2157; - this.match(TrinoSqlParser.WHEN); - this.state = 2158; - this.match(TrinoSqlParser.NOT); - this.state = 2159; - this.match(TrinoSqlParser.MATCHED); - this.state = 2162; + this.state = 2195; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2196; + this.match(TrinoSqlParser.KW_NOT); + this.state = 2197; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 2200; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AND) { + if (_la === TrinoSqlParser.KW_AND) { { - this.state = 2160; - this.match(TrinoSqlParser.AND); - this.state = 2161; + this.state = 2198; + this.match(TrinoSqlParser.KW_AND); + this.state = 2199; (_localctx as MergeInsertContext)._condition = this.expression(); } } - this.state = 2164; - this.match(TrinoSqlParser.THEN); - this.state = 2165; - this.match(TrinoSqlParser.INSERT); - this.state = 2177; + this.state = 2202; + this.match(TrinoSqlParser.KW_THEN); + this.state = 2203; + this.match(TrinoSqlParser.KW_INSERT); + this.state = 2215; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.T__1) { + if (_la === TrinoSqlParser.T__0) { { - this.state = 2166; - this.match(TrinoSqlParser.T__1); - this.state = 2167; + this.state = 2204; + this.match(TrinoSqlParser.T__0); + this.state = 2205; (_localctx as MergeInsertContext)._identifier = this.identifier(); (_localctx as MergeInsertContext)._targets.push((_localctx as MergeInsertContext)._identifier); - this.state = 2172; + this.state = 2210; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2168; - this.match(TrinoSqlParser.T__3); - this.state = 2169; + this.state = 2206; + this.match(TrinoSqlParser.T__2); + this.state = 2207; (_localctx as MergeInsertContext)._identifier = this.identifier(); (_localctx as MergeInsertContext)._targets.push((_localctx as MergeInsertContext)._identifier); } } - this.state = 2174; + this.state = 2212; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2175; - this.match(TrinoSqlParser.T__2); + this.state = 2213; + this.match(TrinoSqlParser.T__1); } } - this.state = 2179; - this.match(TrinoSqlParser.VALUES); - this.state = 2180; - this.match(TrinoSqlParser.T__1); - this.state = 2181; + this.state = 2217; + this.match(TrinoSqlParser.KW_VALUES); + this.state = 2218; + this.match(TrinoSqlParser.T__0); + this.state = 2219; (_localctx as MergeInsertContext)._expression = this.expression(); (_localctx as MergeInsertContext)._values.push((_localctx as MergeInsertContext)._expression); - this.state = 2186; + this.state = 2224; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2182; - this.match(TrinoSqlParser.T__3); - this.state = 2183; + this.state = 2220; + this.match(TrinoSqlParser.T__2); + this.state = 2221; (_localctx as MergeInsertContext)._expression = this.expression(); (_localctx as MergeInsertContext)._values.push((_localctx as MergeInsertContext)._expression); } } - this.state = 2188; + this.state = 2226; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2189; - this.match(TrinoSqlParser.T__2); + this.state = 2227; + this.match(TrinoSqlParser.T__1); } break; } @@ -9367,187 +9420,187 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2193; - this.match(TrinoSqlParser.OVER); - this.state = 2199; + this.state = 2231; + this.match(TrinoSqlParser.KW_OVER); + this.state = 2237; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ADD: - case TrinoSqlParser.ADMIN: - case TrinoSqlParser.AFTER: - case TrinoSqlParser.ALL: - case TrinoSqlParser.ANALYZE: - case TrinoSqlParser.ANY: - case TrinoSqlParser.ARRAY: - case TrinoSqlParser.ASC: - case TrinoSqlParser.AT: - case TrinoSqlParser.AUTHORIZATION: - case TrinoSqlParser.BERNOULLI: - case TrinoSqlParser.CALL: - case TrinoSqlParser.CASCADE: - case TrinoSqlParser.CATALOGS: - case TrinoSqlParser.COLUMN: - case TrinoSqlParser.COLUMNS: - case TrinoSqlParser.COMMENT: - case TrinoSqlParser.COMMIT: - case TrinoSqlParser.COMMITTED: - case TrinoSqlParser.CURRENT: - case TrinoSqlParser.DATA: - case TrinoSqlParser.DATE: - case TrinoSqlParser.DAY: - case TrinoSqlParser.DEFAULT: - case TrinoSqlParser.DEFINER: - case TrinoSqlParser.DESC: - case TrinoSqlParser.DEFINE: - case TrinoSqlParser.DISTRIBUTED: - case TrinoSqlParser.DOUBLE: - case TrinoSqlParser.EMPTY: - case TrinoSqlParser.EXCLUDING: - case TrinoSqlParser.EXPLAIN: - case TrinoSqlParser.FETCH: - case TrinoSqlParser.FILTER: - case TrinoSqlParser.FINAL: - case TrinoSqlParser.FIRST: - case TrinoSqlParser.FOLLOWING: - case TrinoSqlParser.FORMAT: - case TrinoSqlParser.FUNCTIONS: - case TrinoSqlParser.GRANT: - case TrinoSqlParser.GRANTED: - case TrinoSqlParser.GRANTS: - case TrinoSqlParser.DENY: - case TrinoSqlParser.GRAPHVIZ: - case TrinoSqlParser.GROUPS: - case TrinoSqlParser.HOUR: - case TrinoSqlParser.IF: - case TrinoSqlParser.IGNORE: - case TrinoSqlParser.INCLUDING: - case TrinoSqlParser.INITIAL: - case TrinoSqlParser.INPUT: - case TrinoSqlParser.INTERVAL: - case TrinoSqlParser.INVOKER: - case TrinoSqlParser.IO: - case TrinoSqlParser.ISOLATION: - case TrinoSqlParser.JSON: - case TrinoSqlParser.LAST: - case TrinoSqlParser.LATERAL: - case TrinoSqlParser.LEVEL: - case TrinoSqlParser.LIMIT: - case TrinoSqlParser.LOCAL: - case TrinoSqlParser.LOGICAL: - case TrinoSqlParser.MAP: - case TrinoSqlParser.MATCH: - case TrinoSqlParser.MATCHED: - case TrinoSqlParser.MATCHES: - case TrinoSqlParser.MATCH_RECOGNIZE: - case TrinoSqlParser.MATERIALIZED: - case TrinoSqlParser.MEASURES: - case TrinoSqlParser.MERGE: - case TrinoSqlParser.MINUTE: - case TrinoSqlParser.MONTH: - case TrinoSqlParser.NEXT: - case TrinoSqlParser.NFC: - case TrinoSqlParser.NFD: - case TrinoSqlParser.NFKC: - case TrinoSqlParser.NFKD: - case TrinoSqlParser.NO: - case TrinoSqlParser.NONE: - case TrinoSqlParser.NULLIF: - case TrinoSqlParser.NULLS: - case TrinoSqlParser.OFFSET: - case TrinoSqlParser.OMIT: - case TrinoSqlParser.ONE: - case TrinoSqlParser.ONLY: - case TrinoSqlParser.OPTION: - case TrinoSqlParser.ORDINALITY: - case TrinoSqlParser.OUTPUT: - case TrinoSqlParser.OVER: - case TrinoSqlParser.PARTITION: - case TrinoSqlParser.PARTITIONS: - case TrinoSqlParser.PAST: - case TrinoSqlParser.PATH: - case TrinoSqlParser.PATTERN: - case TrinoSqlParser.PER: - case TrinoSqlParser.PERMUTE: - case TrinoSqlParser.POSITION: - case TrinoSqlParser.PRECEDING: - case TrinoSqlParser.PRECISION: - case TrinoSqlParser.PRIVILEGES: - case TrinoSqlParser.PROPERTIES: - case TrinoSqlParser.RANGE: - case TrinoSqlParser.READ: - case TrinoSqlParser.REFRESH: - case TrinoSqlParser.RENAME: - case TrinoSqlParser.REPEATABLE: - case TrinoSqlParser.REPLACE: - case TrinoSqlParser.RESET: - case TrinoSqlParser.RESPECT: - case TrinoSqlParser.RESTRICT: - case TrinoSqlParser.REVOKE: - case TrinoSqlParser.ROLE: - case TrinoSqlParser.ROLES: - case TrinoSqlParser.ROLLBACK: - case TrinoSqlParser.ROW: - case TrinoSqlParser.ROWS: - case TrinoSqlParser.RUNNING: - case TrinoSqlParser.SCHEMA: - case TrinoSqlParser.SCHEMAS: - case TrinoSqlParser.SECOND: - case TrinoSqlParser.SECURITY: - case TrinoSqlParser.SEEK: - case TrinoSqlParser.SERIALIZABLE: - case TrinoSqlParser.SESSION: - case TrinoSqlParser.SET: - case TrinoSqlParser.SETS: - case TrinoSqlParser.SHOW: - case TrinoSqlParser.SOME: - case TrinoSqlParser.START: - case TrinoSqlParser.STATS: - case TrinoSqlParser.SUBSET: - case TrinoSqlParser.SUBSTRING: - case TrinoSqlParser.SYSTEM: - case TrinoSqlParser.TABLES: - case TrinoSqlParser.TABLESAMPLE: - case TrinoSqlParser.TEXT: - case TrinoSqlParser.TIES: - case TrinoSqlParser.TIME: - case TrinoSqlParser.TIMESTAMP: - case TrinoSqlParser.TO: - case TrinoSqlParser.TRANSACTION: - case TrinoSqlParser.TRUNCATE: - case TrinoSqlParser.TRY_CAST: - case TrinoSqlParser.TYPE: - case TrinoSqlParser.UNBOUNDED: - case TrinoSqlParser.UNCOMMITTED: - case TrinoSqlParser.UNMATCHED: - case TrinoSqlParser.UPDATE: - case TrinoSqlParser.USE: - case TrinoSqlParser.USER: - case TrinoSqlParser.VALIDATE: - case TrinoSqlParser.VERBOSE: - case TrinoSqlParser.VIEW: - case TrinoSqlParser.WINDOW: - case TrinoSqlParser.WITHOUT: - case TrinoSqlParser.WORK: - case TrinoSqlParser.WRITE: - case TrinoSqlParser.YEAR: - case TrinoSqlParser.ZONE: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: case TrinoSqlParser.IDENTIFIER: case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: { - this.state = 2194; + this.state = 2232; _localctx._windowName = this.identifier(); } break; - case TrinoSqlParser.T__1: + case TrinoSqlParser.T__0: { - this.state = 2195; - this.match(TrinoSqlParser.T__1); - this.state = 2196; + this.state = 2233; + this.match(TrinoSqlParser.T__0); + this.state = 2234; this.windowSpecification(); - this.state = 2197; - this.match(TrinoSqlParser.T__2); + this.state = 2235; + this.match(TrinoSqlParser.T__1); } break; default: @@ -9577,58 +9630,58 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2210; + this.state = 2248; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.MEASURES) { + if (_la === TrinoSqlParser.KW_MEASURES) { { - this.state = 2201; - this.match(TrinoSqlParser.MEASURES); - this.state = 2202; + this.state = 2239; + this.match(TrinoSqlParser.KW_MEASURES); + this.state = 2240; this.measureDefinition(); - this.state = 2207; + this.state = 2245; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2203; - this.match(TrinoSqlParser.T__3); - this.state = 2204; + this.state = 2241; + this.match(TrinoSqlParser.T__2); + this.state = 2242; this.measureDefinition(); } } - this.state = 2209; + this.state = 2247; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 2212; + this.state = 2250; this.frameExtent(); - this.state = 2216; + this.state = 2254; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.AFTER) { + if (_la === TrinoSqlParser.KW_AFTER) { { - this.state = 2213; - this.match(TrinoSqlParser.AFTER); - this.state = 2214; - this.match(TrinoSqlParser.MATCH); - this.state = 2215; + this.state = 2251; + this.match(TrinoSqlParser.KW_AFTER); + this.state = 2252; + this.match(TrinoSqlParser.KW_MATCH); + this.state = 2253; this.skipTo(); } } - this.state = 2219; + this.state = 2257; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.INITIAL || _la === TrinoSqlParser.SEEK) { + if (_la === TrinoSqlParser.KW_INITIAL || _la === TrinoSqlParser.KW_SEEK) { { - this.state = 2218; + this.state = 2256; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.INITIAL || _la === TrinoSqlParser.SEEK)) { + if (!(_la === TrinoSqlParser.KW_INITIAL || _la === TrinoSqlParser.KW_SEEK)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -9641,72 +9694,72 @@ export class TrinoSqlParser extends Parser { } } - this.state = 2226; + this.state = 2264; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.PATTERN) { + if (_la === TrinoSqlParser.KW_PATTERN) { { - this.state = 2221; - this.match(TrinoSqlParser.PATTERN); - this.state = 2222; - this.match(TrinoSqlParser.T__1); - this.state = 2223; + this.state = 2259; + this.match(TrinoSqlParser.KW_PATTERN); + this.state = 2260; + this.match(TrinoSqlParser.T__0); + this.state = 2261; this.rowPattern(0); - this.state = 2224; - this.match(TrinoSqlParser.T__2); + this.state = 2262; + this.match(TrinoSqlParser.T__1); } } - this.state = 2237; + this.state = 2275; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.SUBSET) { + if (_la === TrinoSqlParser.KW_SUBSET) { { - this.state = 2228; - this.match(TrinoSqlParser.SUBSET); - this.state = 2229; + this.state = 2266; + this.match(TrinoSqlParser.KW_SUBSET); + this.state = 2267; this.subsetDefinition(); - this.state = 2234; + this.state = 2272; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2230; - this.match(TrinoSqlParser.T__3); - this.state = 2231; + this.state = 2268; + this.match(TrinoSqlParser.T__2); + this.state = 2269; this.subsetDefinition(); } } - this.state = 2236; + this.state = 2274; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 2248; + this.state = 2286; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === TrinoSqlParser.DEFINE) { + if (_la === TrinoSqlParser.KW_DEFINE) { { - this.state = 2239; - this.match(TrinoSqlParser.DEFINE); - this.state = 2240; + this.state = 2277; + this.match(TrinoSqlParser.KW_DEFINE); + this.state = 2278; this.variableDefinition(); - this.state = 2245; + this.state = 2283; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2241; - this.match(TrinoSqlParser.T__3); - this.state = 2242; + this.state = 2279; + this.match(TrinoSqlParser.T__2); + this.state = 2280; this.variableDefinition(); } } - this.state = 2247; + this.state = 2285; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -9734,15 +9787,15 @@ export class TrinoSqlParser extends Parser { let _localctx: FrameExtentContext = new FrameExtentContext(this._ctx, this.state); this.enterRule(_localctx, 140, TrinoSqlParser.RULE_frameExtent); try { - this.state = 2274; + this.state = 2312; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 294, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 300, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 2250; - _localctx._frameType = this.match(TrinoSqlParser.RANGE); - this.state = 2251; + this.state = 2288; + _localctx._frameType = this.match(TrinoSqlParser.KW_RANGE); + this.state = 2289; _localctx._frameStart = this.frameBound(); } break; @@ -9750,9 +9803,9 @@ export class TrinoSqlParser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 2252; - _localctx._frameType = this.match(TrinoSqlParser.ROWS); - this.state = 2253; + this.state = 2290; + _localctx._frameType = this.match(TrinoSqlParser.KW_ROWS); + this.state = 2291; _localctx._frameStart = this.frameBound(); } break; @@ -9760,9 +9813,9 @@ export class TrinoSqlParser extends Parser { case 3: this.enterOuterAlt(_localctx, 3); { - this.state = 2254; - _localctx._frameType = this.match(TrinoSqlParser.GROUPS); - this.state = 2255; + this.state = 2292; + _localctx._frameType = this.match(TrinoSqlParser.KW_GROUPS); + this.state = 2293; _localctx._frameStart = this.frameBound(); } break; @@ -9770,15 +9823,15 @@ export class TrinoSqlParser extends Parser { case 4: this.enterOuterAlt(_localctx, 4); { - this.state = 2256; - _localctx._frameType = this.match(TrinoSqlParser.RANGE); - this.state = 2257; - this.match(TrinoSqlParser.BETWEEN); - this.state = 2258; + this.state = 2294; + _localctx._frameType = this.match(TrinoSqlParser.KW_RANGE); + this.state = 2295; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 2296; _localctx._frameStart = this.frameBound(); - this.state = 2259; - this.match(TrinoSqlParser.AND); - this.state = 2260; + this.state = 2297; + this.match(TrinoSqlParser.KW_AND); + this.state = 2298; _localctx._end = this.frameBound(); } break; @@ -9786,15 +9839,15 @@ export class TrinoSqlParser extends Parser { case 5: this.enterOuterAlt(_localctx, 5); { - this.state = 2262; - _localctx._frameType = this.match(TrinoSqlParser.ROWS); - this.state = 2263; - this.match(TrinoSqlParser.BETWEEN); - this.state = 2264; + this.state = 2300; + _localctx._frameType = this.match(TrinoSqlParser.KW_ROWS); + this.state = 2301; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 2302; _localctx._frameStart = this.frameBound(); - this.state = 2265; - this.match(TrinoSqlParser.AND); - this.state = 2266; + this.state = 2303; + this.match(TrinoSqlParser.KW_AND); + this.state = 2304; _localctx._end = this.frameBound(); } break; @@ -9802,15 +9855,15 @@ export class TrinoSqlParser extends Parser { case 6: this.enterOuterAlt(_localctx, 6); { - this.state = 2268; - _localctx._frameType = this.match(TrinoSqlParser.GROUPS); - this.state = 2269; - this.match(TrinoSqlParser.BETWEEN); - this.state = 2270; + this.state = 2306; + _localctx._frameType = this.match(TrinoSqlParser.KW_GROUPS); + this.state = 2307; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 2308; _localctx._frameStart = this.frameBound(); - this.state = 2271; - this.match(TrinoSqlParser.AND); - this.state = 2272; + this.state = 2309; + this.match(TrinoSqlParser.KW_AND); + this.state = 2310; _localctx._end = this.frameBound(); } break; @@ -9836,17 +9889,17 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 142, TrinoSqlParser.RULE_frameBound); let _la: number; try { - this.state = 2285; + this.state = 2323; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 295, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 301, this._ctx) ) { case 1: _localctx = new UnboundedFrameContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2276; - this.match(TrinoSqlParser.UNBOUNDED); - this.state = 2277; - (_localctx as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.PRECEDING); + this.state = 2314; + this.match(TrinoSqlParser.KW_UNBOUNDED); + this.state = 2315; + (_localctx as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_PRECEDING); } break; @@ -9854,10 +9907,10 @@ export class TrinoSqlParser extends Parser { _localctx = new UnboundedFrameContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2278; - this.match(TrinoSqlParser.UNBOUNDED); - this.state = 2279; - (_localctx as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.FOLLOWING); + this.state = 2316; + this.match(TrinoSqlParser.KW_UNBOUNDED); + this.state = 2317; + (_localctx as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_FOLLOWING); } break; @@ -9865,10 +9918,10 @@ export class TrinoSqlParser extends Parser { _localctx = new CurrentRowBoundContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2280; - this.match(TrinoSqlParser.CURRENT); - this.state = 2281; - this.match(TrinoSqlParser.ROW); + this.state = 2318; + this.match(TrinoSqlParser.KW_CURRENT); + this.state = 2319; + this.match(TrinoSqlParser.KW_ROW); } break; @@ -9876,12 +9929,12 @@ export class TrinoSqlParser extends Parser { _localctx = new BoundedFrameContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 2282; + this.state = 2320; this.expression(); - this.state = 2283; + this.state = 2321; (_localctx as BoundedFrameContext)._boundType = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.FOLLOWING || _la === TrinoSqlParser.PRECEDING)) { + if (!(_la === TrinoSqlParser.KW_FOLLOWING || _la === TrinoSqlParser.KW_PRECEDING)) { (_localctx as BoundedFrameContext)._boundType = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -9933,23 +9986,23 @@ export class TrinoSqlParser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 2288; + this.state = 2326; this.patternPrimary(); - this.state = 2290; + this.state = 2328; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 296, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 302, this._ctx) ) { case 1: { - this.state = 2289; + this.state = 2327; this.patternQuantifier(); } break; } } this._ctx._stop = this._input.tryLT(-1); - this.state = 2299; + this.state = 2337; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 298, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 304, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -9957,18 +10010,18 @@ export class TrinoSqlParser extends Parser { } _prevctx = _localctx; { - this.state = 2297; + this.state = 2335; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 297, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 303, this._ctx) ) { case 1: { _localctx = new PatternConcatenationContext(new RowPatternContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 2292; + this.state = 2330; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 2293; + this.state = 2331; this.rowPattern(3); } break; @@ -9977,22 +10030,22 @@ export class TrinoSqlParser extends Parser { { _localctx = new PatternAlternationContext(new RowPatternContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 2294; + this.state = 2332; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 2295; + this.state = 2333; this.match(TrinoSqlParser.T__8); - this.state = 2296; + this.state = 2334; this.rowPattern(2); } break; } } } - this.state = 2301; + this.state = 2339; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 298, this._ctx); + _alt = this.interpreter.adaptivePredict(this._input, 304, this._ctx); } } } @@ -10016,14 +10069,14 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 146, TrinoSqlParser.RULE_patternPrimary); let _la: number; try { - this.state = 2327; + this.state = 2365; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 300, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 306, this._ctx) ) { case 1: _localctx = new PatternVariableContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2302; + this.state = 2340; this.identifier(); } break; @@ -10032,10 +10085,10 @@ export class TrinoSqlParser extends Parser { _localctx = new EmptyPatternContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2303; + this.state = 2341; + this.match(TrinoSqlParser.T__0); + this.state = 2342; this.match(TrinoSqlParser.T__1); - this.state = 2304; - this.match(TrinoSqlParser.T__2); } break; @@ -10043,30 +10096,30 @@ export class TrinoSqlParser extends Parser { _localctx = new PatternPermutationContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2305; - this.match(TrinoSqlParser.PERMUTE); - this.state = 2306; - this.match(TrinoSqlParser.T__1); - this.state = 2307; + this.state = 2343; + this.match(TrinoSqlParser.KW_PERMUTE); + this.state = 2344; + this.match(TrinoSqlParser.T__0); + this.state = 2345; this.rowPattern(0); - this.state = 2312; + this.state = 2350; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2308; - this.match(TrinoSqlParser.T__3); - this.state = 2309; + this.state = 2346; + this.match(TrinoSqlParser.T__2); + this.state = 2347; this.rowPattern(0); } } - this.state = 2314; + this.state = 2352; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2315; - this.match(TrinoSqlParser.T__2); + this.state = 2353; + this.match(TrinoSqlParser.T__1); } break; @@ -10074,12 +10127,12 @@ export class TrinoSqlParser extends Parser { _localctx = new GroupedPatternContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 2317; - this.match(TrinoSqlParser.T__1); - this.state = 2318; + this.state = 2355; + this.match(TrinoSqlParser.T__0); + this.state = 2356; this.rowPattern(0); - this.state = 2319; - this.match(TrinoSqlParser.T__2); + this.state = 2357; + this.match(TrinoSqlParser.T__1); } break; @@ -10087,7 +10140,7 @@ export class TrinoSqlParser extends Parser { _localctx = new PartitionStartAnchorContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 2321; + this.state = 2359; this.match(TrinoSqlParser.T__9); } break; @@ -10096,7 +10149,7 @@ export class TrinoSqlParser extends Parser { _localctx = new PartitionEndAnchorContext(_localctx); this.enterOuterAlt(_localctx, 6); { - this.state = 2322; + this.state = 2360; this.match(TrinoSqlParser.T__10); } break; @@ -10105,11 +10158,11 @@ export class TrinoSqlParser extends Parser { _localctx = new ExcludedPatternContext(_localctx); this.enterOuterAlt(_localctx, 7); { - this.state = 2323; + this.state = 2361; this.match(TrinoSqlParser.T__11); - this.state = 2324; + this.state = 2362; this.rowPattern(0); - this.state = 2325; + this.state = 2363; this.match(TrinoSqlParser.T__12); } break; @@ -10135,21 +10188,21 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 148, TrinoSqlParser.RULE_patternQuantifier); let _la: number; try { - this.state = 2359; + this.state = 2397; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 308, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 314, this._ctx) ) { case 1: _localctx = new ZeroOrMoreQuantifierContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2329; + this.state = 2367; this.match(TrinoSqlParser.ASTERISK); - this.state = 2331; + this.state = 2369; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 301, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 307, this._ctx) ) { case 1: { - this.state = 2330; + this.state = 2368; (_localctx as ZeroOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -10161,14 +10214,14 @@ export class TrinoSqlParser extends Parser { _localctx = new OneOrMoreQuantifierContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2333; + this.state = 2371; this.match(TrinoSqlParser.PLUS); - this.state = 2335; + this.state = 2373; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 302, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 308, this._ctx) ) { case 1: { - this.state = 2334; + this.state = 2372; (_localctx as OneOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -10180,14 +10233,14 @@ export class TrinoSqlParser extends Parser { _localctx = new ZeroOrOneQuantifierContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2337; + this.state = 2375; this.match(TrinoSqlParser.QUESTION_MARK); - this.state = 2339; + this.state = 2377; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 303, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 309, this._ctx) ) { case 1: { - this.state = 2338; + this.state = 2376; (_localctx as ZeroOrOneQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -10199,18 +10252,18 @@ export class TrinoSqlParser extends Parser { _localctx = new RangeQuantifierContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 2341; + this.state = 2379; this.match(TrinoSqlParser.T__13); - this.state = 2342; + this.state = 2380; (_localctx as RangeQuantifierContext)._exactly = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2343; + this.state = 2381; this.match(TrinoSqlParser.T__14); - this.state = 2345; + this.state = 2383; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 304, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 310, this._ctx) ) { case 1: { - this.state = 2344; + this.state = 2382; (_localctx as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -10222,38 +10275,38 @@ export class TrinoSqlParser extends Parser { _localctx = new RangeQuantifierContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 2347; + this.state = 2385; this.match(TrinoSqlParser.T__13); - this.state = 2349; + this.state = 2387; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.INTEGER_VALUE) { { - this.state = 2348; + this.state = 2386; (_localctx as RangeQuantifierContext)._atLeast = this.match(TrinoSqlParser.INTEGER_VALUE); } } - this.state = 2351; - this.match(TrinoSqlParser.T__3); - this.state = 2353; + this.state = 2389; + this.match(TrinoSqlParser.T__2); + this.state = 2391; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.INTEGER_VALUE) { { - this.state = 2352; + this.state = 2390; (_localctx as RangeQuantifierContext)._atMost = this.match(TrinoSqlParser.INTEGER_VALUE); } } - this.state = 2355; + this.state = 2393; this.match(TrinoSqlParser.T__14); - this.state = 2357; + this.state = 2395; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 307, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 313, this._ctx) ) { case 1: { - this.state = 2356; + this.state = 2394; (_localctx as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -10283,11 +10336,11 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2361; + this.state = 2399; this.identifier(); - this.state = 2362; + this.state = 2400; this.match(TrinoSqlParser.EQ); - this.state = 2363; + this.state = 2401; this.expression(); } } @@ -10311,19 +10364,19 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 152, TrinoSqlParser.RULE_explainOption); let _la: number; try { - this.state = 2369; + this.state = 2407; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.FORMAT: + case TrinoSqlParser.KW_FORMAT: _localctx = new ExplainFormatContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2365; - this.match(TrinoSqlParser.FORMAT); - this.state = 2366; + this.state = 2403; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2404; (_localctx as ExplainFormatContext)._value = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.GRAPHVIZ || _la === TrinoSqlParser.JSON || _la === TrinoSqlParser.TEXT)) { + if (!(_la === TrinoSqlParser.KW_GRAPHVIZ || _la === TrinoSqlParser.KW_JSON || _la === TrinoSqlParser.KW_TEXT)) { (_localctx as ExplainFormatContext)._value = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -10335,16 +10388,16 @@ export class TrinoSqlParser extends Parser { } } break; - case TrinoSqlParser.TYPE: + case TrinoSqlParser.KW_TYPE: _localctx = new ExplainTypeContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2367; - this.match(TrinoSqlParser.TYPE); - this.state = 2368; + this.state = 2405; + this.match(TrinoSqlParser.KW_TYPE); + this.state = 2406; (_localctx as ExplainTypeContext)._value = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.DISTRIBUTED || _la === TrinoSqlParser.IO || _la === TrinoSqlParser.LOGICAL || _la === TrinoSqlParser.VALIDATE)) { + if (!(_la === TrinoSqlParser.KW_DISTRIBUTED || _la === TrinoSqlParser.KW_IO || _la === TrinoSqlParser.KW_LOGICAL || _la === TrinoSqlParser.KW_VALIDATE)) { (_localctx as ExplainTypeContext)._value = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -10380,31 +10433,31 @@ export class TrinoSqlParser extends Parser { this.enterRule(_localctx, 154, TrinoSqlParser.RULE_transactionMode); let _la: number; try { - this.state = 2376; + this.state = 2414; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ISOLATION: + case TrinoSqlParser.KW_ISOLATION: _localctx = new IsolationLevelContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2371; - this.match(TrinoSqlParser.ISOLATION); - this.state = 2372; - this.match(TrinoSqlParser.LEVEL); - this.state = 2373; + this.state = 2409; + this.match(TrinoSqlParser.KW_ISOLATION); + this.state = 2410; + this.match(TrinoSqlParser.KW_LEVEL); + this.state = 2411; this.levelOfIsolation(); } break; - case TrinoSqlParser.READ: + case TrinoSqlParser.KW_READ: _localctx = new TransactionAccessModeContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2374; - this.match(TrinoSqlParser.READ); - this.state = 2375; + this.state = 2412; + this.match(TrinoSqlParser.KW_READ); + this.state = 2413; (_localctx as TransactionAccessModeContext)._accessMode = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.ONLY || _la === TrinoSqlParser.WRITE)) { + if (!(_la === TrinoSqlParser.KW_ONLY || _la === TrinoSqlParser.KW_WRITE)) { (_localctx as TransactionAccessModeContext)._accessMode = this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -10439,17 +10492,17 @@ export class TrinoSqlParser extends Parser { let _localctx: LevelOfIsolationContext = new LevelOfIsolationContext(this._ctx, this.state); this.enterRule(_localctx, 156, TrinoSqlParser.RULE_levelOfIsolation); try { - this.state = 2385; + this.state = 2423; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 311, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 317, this._ctx) ) { case 1: _localctx = new ReadUncommittedContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2378; - this.match(TrinoSqlParser.READ); - this.state = 2379; - this.match(TrinoSqlParser.UNCOMMITTED); + this.state = 2416; + this.match(TrinoSqlParser.KW_READ); + this.state = 2417; + this.match(TrinoSqlParser.KW_UNCOMMITTED); } break; @@ -10457,10 +10510,10 @@ export class TrinoSqlParser extends Parser { _localctx = new ReadCommittedContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2380; - this.match(TrinoSqlParser.READ); - this.state = 2381; - this.match(TrinoSqlParser.COMMITTED); + this.state = 2418; + this.match(TrinoSqlParser.KW_READ); + this.state = 2419; + this.match(TrinoSqlParser.KW_COMMITTED); } break; @@ -10468,10 +10521,10 @@ export class TrinoSqlParser extends Parser { _localctx = new RepeatableReadContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2382; - this.match(TrinoSqlParser.REPEATABLE); - this.state = 2383; - this.match(TrinoSqlParser.READ); + this.state = 2420; + this.match(TrinoSqlParser.KW_REPEATABLE); + this.state = 2421; + this.match(TrinoSqlParser.KW_READ); } break; @@ -10479,8 +10532,8 @@ export class TrinoSqlParser extends Parser { _localctx = new SerializableContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 2384; - this.match(TrinoSqlParser.SERIALIZABLE); + this.state = 2422; + this.match(TrinoSqlParser.KW_SERIALIZABLE); } break; } @@ -10504,14 +10557,14 @@ export class TrinoSqlParser extends Parser { let _localctx: CallArgumentContext = new CallArgumentContext(this._ctx, this.state); this.enterRule(_localctx, 158, TrinoSqlParser.RULE_callArgument); try { - this.state = 2392; + this.state = 2430; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 312, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 318, this._ctx) ) { case 1: _localctx = new PositionalArgumentContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2387; + this.state = 2425; this.expression(); } break; @@ -10520,11 +10573,11 @@ export class TrinoSqlParser extends Parser { _localctx = new NamedArgumentContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2388; + this.state = 2426; this.identifier(); - this.state = 2389; + this.state = 2427; this.match(TrinoSqlParser.T__15); - this.state = 2390; + this.state = 2428; this.expression(); } break; @@ -10549,18 +10602,18 @@ export class TrinoSqlParser extends Parser { let _localctx: PathElementContext = new PathElementContext(this._ctx, this.state); this.enterRule(_localctx, 160, TrinoSqlParser.RULE_pathElement); try { - this.state = 2399; + this.state = 2437; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 313, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 319, this._ctx) ) { case 1: _localctx = new QualifiedArgumentContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2394; + this.state = 2432; this.identifier(); - this.state = 2395; - this.match(TrinoSqlParser.T__0); - this.state = 2396; + this.state = 2433; + this.match(TrinoSqlParser.T__3); + this.state = 2434; this.identifier(); } break; @@ -10569,7 +10622,7 @@ export class TrinoSqlParser extends Parser { _localctx = new UnqualifiedArgumentContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2398; + this.state = 2436; this.identifier(); } break; @@ -10597,21 +10650,21 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2401; + this.state = 2439; this.pathElement(); - this.state = 2406; + this.state = 2444; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2402; - this.match(TrinoSqlParser.T__3); - this.state = 2403; + this.state = 2440; + this.match(TrinoSqlParser.T__2); + this.state = 2441; this.pathElement(); } } - this.state = 2408; + this.state = 2446; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -10639,9 +10692,9 @@ export class TrinoSqlParser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 2409; + this.state = 2447; _la = this._input.LA(1); - if (!(_la === TrinoSqlParser.DELETE || _la === TrinoSqlParser.INSERT || _la === TrinoSqlParser.SELECT || _la === TrinoSqlParser.UPDATE)) { + if (!(_la === TrinoSqlParser.KW_DELETE || _la === TrinoSqlParser.KW_INSERT || _la === TrinoSqlParser.KW_SELECT || _la === TrinoSqlParser.KW_UPDATE)) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -10668,32 +10721,455 @@ export class TrinoSqlParser extends Parser { return _localctx; } // @RuleVersion(0) - public qualifiedName(): QualifiedNameContext { - let _localctx: QualifiedNameContext = new QualifiedNameContext(this._ctx, this.state); - this.enterRule(_localctx, 166, TrinoSqlParser.RULE_qualifiedName); + public tableOrViewName(): TableOrViewNameContext { + let _localctx: TableOrViewNameContext = new TableOrViewNameContext(this._ctx, this.state); + this.enterRule(_localctx, 166, TrinoSqlParser.RULE_tableOrViewName); + try { + this.state = 2451; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 321, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 2449; + this.tableName(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 2450; + this.viewName(); + } + 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 tableName(): TableNameContext { + let _localctx: TableNameContext = new TableNameContext(this._ctx, this.state); + this.enterRule(_localctx, 168, TrinoSqlParser.RULE_tableName); try { - let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 2411; - this.identifier(); - this.state = 2416; + this.state = 2453; + this.tablePath(); + } + } + 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 tableNameCreate(): TableNameCreateContext { + let _localctx: TableNameCreateContext = new TableNameCreateContext(this._ctx, this.state); + this.enterRule(_localctx, 170, TrinoSqlParser.RULE_tableNameCreate); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2455; + this.tablePath(); + } + } + 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 viewName(): ViewNameContext { + let _localctx: ViewNameContext = new ViewNameContext(this._ctx, this.state); + this.enterRule(_localctx, 172, TrinoSqlParser.RULE_viewName); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2457; + this.viewPath(); + } + } + 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 viewNameCreate(): ViewNameCreateContext { + let _localctx: ViewNameCreateContext = new ViewNameCreateContext(this._ctx, this.state); + this.enterRule(_localctx, 174, TrinoSqlParser.RULE_viewNameCreate); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2459; + this.viewPath(); + } + } + 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 tablePath(): TablePathContext { + let _localctx: TablePathContext = new TablePathContext(this._ctx, this.state); + this.enterRule(_localctx, 176, TrinoSqlParser.RULE_tablePath); + try { + this.state = 2472; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 315, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 2412; - this.match(TrinoSqlParser.T__0); - this.state = 2413; - this.identifier(); - } - } + switch ( this.interpreter.adaptivePredict(this._input, 322, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 2461; + _localctx._table = this.identifier(); } - this.state = 2418; + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 2462; + _localctx._schema = this.identifier(); + this.state = 2463; + this.match(TrinoSqlParser.T__3); + this.state = 2464; + _localctx._table = this.identifier(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 2466; + _localctx._catalog = this.identifier(); + this.state = 2467; + this.match(TrinoSqlParser.T__3); + this.state = 2468; + _localctx._schema = this.identifier(); + this.state = 2469; + this.match(TrinoSqlParser.T__3); + this.state = 2470; + _localctx._table = this.identifier(); + } + 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 viewPath(): ViewPathContext { + let _localctx: ViewPathContext = new ViewPathContext(this._ctx, this.state); + this.enterRule(_localctx, 178, TrinoSqlParser.RULE_viewPath); + try { + this.state = 2485; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 323, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 2474; + _localctx._view = this.identifier(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 2475; + _localctx._schema = this.identifier(); + this.state = 2476; + this.match(TrinoSqlParser.T__3); + this.state = 2477; + _localctx._view = this.identifier(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 2479; + _localctx._catalog = this.identifier(); + this.state = 2480; + this.match(TrinoSqlParser.T__3); + this.state = 2481; + _localctx._schema = this.identifier(); + this.state = 2482; + this.match(TrinoSqlParser.T__3); + this.state = 2483; + _localctx._view = this.identifier(); + } + 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 schemaName(): SchemaNameContext { + let _localctx: SchemaNameContext = new SchemaNameContext(this._ctx, this.state); + this.enterRule(_localctx, 180, TrinoSqlParser.RULE_schemaName); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2487; + this.schemaPath(); + } + } + 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 schemaNameCreate(): SchemaNameCreateContext { + let _localctx: SchemaNameCreateContext = new SchemaNameCreateContext(this._ctx, this.state); + this.enterRule(_localctx, 182, TrinoSqlParser.RULE_schemaNameCreate); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2489; + this.schemaPath(); + } + } + 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 schemaPath(): SchemaPathContext { + let _localctx: SchemaPathContext = new SchemaPathContext(this._ctx, this.state); + this.enterRule(_localctx, 184, TrinoSqlParser.RULE_schemaPath); + try { + this.state = 2496; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 324, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 2491; + _localctx._schema = this.identifier(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 2492; + _localctx._catalog = this.identifier(); + this.state = 2493; + this.match(TrinoSqlParser.T__3); + this.state = 2494; + _localctx._schema = this.identifier(); + } + 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 catalogName(): CatalogNameContext { + let _localctx: CatalogNameContext = new CatalogNameContext(this._ctx, this.state); + this.enterRule(_localctx, 186, TrinoSqlParser.RULE_catalogName); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2498; + _localctx._catalog = this.identifier(); + } + } + 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 catalogNameCreate(): CatalogNameCreateContext { + let _localctx: CatalogNameCreateContext = new CatalogNameCreateContext(this._ctx, this.state); + this.enterRule(_localctx, 188, TrinoSqlParser.RULE_catalogNameCreate); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2500; + _localctx._catalog = this.identifier(); + } + } + 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 functionName(): FunctionNameContext { + let _localctx: FunctionNameContext = new FunctionNameContext(this._ctx, this.state); + this.enterRule(_localctx, 190, TrinoSqlParser.RULE_functionName); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2502; + 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 qualifiedName(): QualifiedNameContext { + let _localctx: QualifiedNameContext = new QualifiedNameContext(this._ctx, this.state); + this.enterRule(_localctx, 192, TrinoSqlParser.RULE_qualifiedName); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 2504; + this.identifier(); + this.state = 2509; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === TrinoSqlParser.T__3) { + { + { + this.state = 2505; + this.match(TrinoSqlParser.T__3); + this.state = 2506; + this.identifier(); + } + } + this.state = 2511; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 315, this._ctx); + _la = this._input.LA(1); } } } @@ -10714,170 +11190,170 @@ export class TrinoSqlParser extends Parser { // @RuleVersion(0) public grantor(): GrantorContext { let _localctx: GrantorContext = new GrantorContext(this._ctx, this.state); - this.enterRule(_localctx, 168, TrinoSqlParser.RULE_grantor); + this.enterRule(_localctx, 194, TrinoSqlParser.RULE_grantor); try { - this.state = 2422; + this.state = 2515; this._errHandler.sync(this); switch (this._input.LA(1)) { - case TrinoSqlParser.ADD: - case TrinoSqlParser.ADMIN: - case TrinoSqlParser.AFTER: - case TrinoSqlParser.ALL: - case TrinoSqlParser.ANALYZE: - case TrinoSqlParser.ANY: - case TrinoSqlParser.ARRAY: - case TrinoSqlParser.ASC: - case TrinoSqlParser.AT: - case TrinoSqlParser.AUTHORIZATION: - case TrinoSqlParser.BERNOULLI: - case TrinoSqlParser.CALL: - case TrinoSqlParser.CASCADE: - case TrinoSqlParser.CATALOGS: - case TrinoSqlParser.COLUMN: - case TrinoSqlParser.COLUMNS: - case TrinoSqlParser.COMMENT: - case TrinoSqlParser.COMMIT: - case TrinoSqlParser.COMMITTED: - case TrinoSqlParser.CURRENT: - case TrinoSqlParser.DATA: - case TrinoSqlParser.DATE: - case TrinoSqlParser.DAY: - case TrinoSqlParser.DEFAULT: - case TrinoSqlParser.DEFINER: - case TrinoSqlParser.DESC: - case TrinoSqlParser.DEFINE: - case TrinoSqlParser.DISTRIBUTED: - case TrinoSqlParser.DOUBLE: - case TrinoSqlParser.EMPTY: - case TrinoSqlParser.EXCLUDING: - case TrinoSqlParser.EXPLAIN: - case TrinoSqlParser.FETCH: - case TrinoSqlParser.FILTER: - case TrinoSqlParser.FINAL: - case TrinoSqlParser.FIRST: - case TrinoSqlParser.FOLLOWING: - case TrinoSqlParser.FORMAT: - case TrinoSqlParser.FUNCTIONS: - case TrinoSqlParser.GRANT: - case TrinoSqlParser.GRANTED: - case TrinoSqlParser.GRANTS: - case TrinoSqlParser.DENY: - case TrinoSqlParser.GRAPHVIZ: - case TrinoSqlParser.GROUPS: - case TrinoSqlParser.HOUR: - case TrinoSqlParser.IF: - case TrinoSqlParser.IGNORE: - case TrinoSqlParser.INCLUDING: - case TrinoSqlParser.INITIAL: - case TrinoSqlParser.INPUT: - case TrinoSqlParser.INTERVAL: - case TrinoSqlParser.INVOKER: - case TrinoSqlParser.IO: - case TrinoSqlParser.ISOLATION: - case TrinoSqlParser.JSON: - case TrinoSqlParser.LAST: - case TrinoSqlParser.LATERAL: - case TrinoSqlParser.LEVEL: - case TrinoSqlParser.LIMIT: - case TrinoSqlParser.LOCAL: - case TrinoSqlParser.LOGICAL: - case TrinoSqlParser.MAP: - case TrinoSqlParser.MATCH: - case TrinoSqlParser.MATCHED: - case TrinoSqlParser.MATCHES: - case TrinoSqlParser.MATCH_RECOGNIZE: - case TrinoSqlParser.MATERIALIZED: - case TrinoSqlParser.MEASURES: - case TrinoSqlParser.MERGE: - case TrinoSqlParser.MINUTE: - case TrinoSqlParser.MONTH: - case TrinoSqlParser.NEXT: - case TrinoSqlParser.NFC: - case TrinoSqlParser.NFD: - case TrinoSqlParser.NFKC: - case TrinoSqlParser.NFKD: - case TrinoSqlParser.NO: - case TrinoSqlParser.NONE: - case TrinoSqlParser.NULLIF: - case TrinoSqlParser.NULLS: - case TrinoSqlParser.OFFSET: - case TrinoSqlParser.OMIT: - case TrinoSqlParser.ONE: - case TrinoSqlParser.ONLY: - case TrinoSqlParser.OPTION: - case TrinoSqlParser.ORDINALITY: - case TrinoSqlParser.OUTPUT: - case TrinoSqlParser.OVER: - case TrinoSqlParser.PARTITION: - case TrinoSqlParser.PARTITIONS: - case TrinoSqlParser.PAST: - case TrinoSqlParser.PATH: - case TrinoSqlParser.PATTERN: - case TrinoSqlParser.PER: - case TrinoSqlParser.PERMUTE: - case TrinoSqlParser.POSITION: - case TrinoSqlParser.PRECEDING: - case TrinoSqlParser.PRECISION: - case TrinoSqlParser.PRIVILEGES: - case TrinoSqlParser.PROPERTIES: - case TrinoSqlParser.RANGE: - case TrinoSqlParser.READ: - case TrinoSqlParser.REFRESH: - case TrinoSqlParser.RENAME: - case TrinoSqlParser.REPEATABLE: - case TrinoSqlParser.REPLACE: - case TrinoSqlParser.RESET: - case TrinoSqlParser.RESPECT: - case TrinoSqlParser.RESTRICT: - case TrinoSqlParser.REVOKE: - case TrinoSqlParser.ROLE: - case TrinoSqlParser.ROLES: - case TrinoSqlParser.ROLLBACK: - case TrinoSqlParser.ROW: - case TrinoSqlParser.ROWS: - case TrinoSqlParser.RUNNING: - case TrinoSqlParser.SCHEMA: - case TrinoSqlParser.SCHEMAS: - case TrinoSqlParser.SECOND: - case TrinoSqlParser.SECURITY: - case TrinoSqlParser.SEEK: - case TrinoSqlParser.SERIALIZABLE: - case TrinoSqlParser.SESSION: - case TrinoSqlParser.SET: - case TrinoSqlParser.SETS: - case TrinoSqlParser.SHOW: - case TrinoSqlParser.SOME: - case TrinoSqlParser.START: - case TrinoSqlParser.STATS: - case TrinoSqlParser.SUBSET: - case TrinoSqlParser.SUBSTRING: - case TrinoSqlParser.SYSTEM: - case TrinoSqlParser.TABLES: - case TrinoSqlParser.TABLESAMPLE: - case TrinoSqlParser.TEXT: - case TrinoSqlParser.TIES: - case TrinoSqlParser.TIME: - case TrinoSqlParser.TIMESTAMP: - case TrinoSqlParser.TO: - case TrinoSqlParser.TRANSACTION: - case TrinoSqlParser.TRUNCATE: - case TrinoSqlParser.TRY_CAST: - case TrinoSqlParser.TYPE: - case TrinoSqlParser.UNBOUNDED: - case TrinoSqlParser.UNCOMMITTED: - case TrinoSqlParser.UNMATCHED: - case TrinoSqlParser.UPDATE: - case TrinoSqlParser.USE: - case TrinoSqlParser.USER: - case TrinoSqlParser.VALIDATE: - case TrinoSqlParser.VERBOSE: - case TrinoSqlParser.VIEW: - case TrinoSqlParser.WINDOW: - case TrinoSqlParser.WITHOUT: - case TrinoSqlParser.WORK: - case TrinoSqlParser.WRITE: - case TrinoSqlParser.YEAR: - case TrinoSqlParser.ZONE: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: case TrinoSqlParser.IDENTIFIER: case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: @@ -10885,24 +11361,24 @@ export class TrinoSqlParser extends Parser { _localctx = new SpecifiedPrincipalContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2419; + this.state = 2512; this.principal(); } break; - case TrinoSqlParser.CURRENT_USER: + case TrinoSqlParser.KW_CURRENT_USER: _localctx = new CurrentUserGrantorContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2420; - this.match(TrinoSqlParser.CURRENT_USER); + this.state = 2513; + this.match(TrinoSqlParser.KW_CURRENT_USER); } break; - case TrinoSqlParser.CURRENT_ROLE: + case TrinoSqlParser.KW_CURRENT_ROLE: _localctx = new CurrentRoleGrantorContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2421; - this.match(TrinoSqlParser.CURRENT_ROLE); + this.state = 2514; + this.match(TrinoSqlParser.KW_CURRENT_ROLE); } break; default: @@ -10926,16 +11402,16 @@ export class TrinoSqlParser extends Parser { // @RuleVersion(0) public principal(): PrincipalContext { let _localctx: PrincipalContext = new PrincipalContext(this._ctx, this.state); - this.enterRule(_localctx, 170, TrinoSqlParser.RULE_principal); + this.enterRule(_localctx, 196, TrinoSqlParser.RULE_principal); try { - this.state = 2429; + this.state = 2522; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 317, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 327, this._ctx) ) { case 1: _localctx = new UnspecifiedPrincipalContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2424; + this.state = 2517; this.identifier(); } break; @@ -10944,9 +11420,9 @@ export class TrinoSqlParser extends Parser { _localctx = new UserPrincipalContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2425; - this.match(TrinoSqlParser.USER); - this.state = 2426; + this.state = 2518; + this.match(TrinoSqlParser.KW_USER); + this.state = 2519; this.identifier(); } break; @@ -10955,9 +11431,9 @@ export class TrinoSqlParser extends Parser { _localctx = new RolePrincipalContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2427; - this.match(TrinoSqlParser.ROLE); - this.state = 2428; + this.state = 2520; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 2521; this.identifier(); } break; @@ -10980,26 +11456,26 @@ export class TrinoSqlParser extends Parser { // @RuleVersion(0) public roles(): RolesContext { let _localctx: RolesContext = new RolesContext(this._ctx, this.state); - this.enterRule(_localctx, 172, TrinoSqlParser.RULE_roles); + this.enterRule(_localctx, 198, TrinoSqlParser.RULE_roles); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 2431; + this.state = 2524; this.identifier(); - this.state = 2436; + this.state = 2529; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === TrinoSqlParser.T__3) { + while (_la === TrinoSqlParser.T__2) { { { - this.state = 2432; - this.match(TrinoSqlParser.T__3); - this.state = 2433; + this.state = 2525; + this.match(TrinoSqlParser.T__2); + this.state = 2526; this.identifier(); } } - this.state = 2438; + this.state = 2531; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -11022,16 +11498,16 @@ export class TrinoSqlParser extends Parser { // @RuleVersion(0) public identifier(): IdentifierContext { let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state); - this.enterRule(_localctx, 174, TrinoSqlParser.RULE_identifier); + this.enterRule(_localctx, 200, TrinoSqlParser.RULE_identifier); try { - this.state = 2444; + this.state = 2537; this._errHandler.sync(this); switch (this._input.LA(1)) { case TrinoSqlParser.IDENTIFIER: _localctx = new UnquotedIdentifierContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2439; + this.state = 2532; this.match(TrinoSqlParser.IDENTIFIER); } break; @@ -11039,173 +11515,173 @@ export class TrinoSqlParser extends Parser { _localctx = new QuotedIdentifierContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2440; + this.state = 2533; this.match(TrinoSqlParser.QUOTED_IDENTIFIER); } break; - case TrinoSqlParser.ADD: - case TrinoSqlParser.ADMIN: - case TrinoSqlParser.AFTER: - case TrinoSqlParser.ALL: - case TrinoSqlParser.ANALYZE: - case TrinoSqlParser.ANY: - case TrinoSqlParser.ARRAY: - case TrinoSqlParser.ASC: - case TrinoSqlParser.AT: - case TrinoSqlParser.AUTHORIZATION: - case TrinoSqlParser.BERNOULLI: - case TrinoSqlParser.CALL: - case TrinoSqlParser.CASCADE: - case TrinoSqlParser.CATALOGS: - case TrinoSqlParser.COLUMN: - case TrinoSqlParser.COLUMNS: - case TrinoSqlParser.COMMENT: - case TrinoSqlParser.COMMIT: - case TrinoSqlParser.COMMITTED: - case TrinoSqlParser.CURRENT: - case TrinoSqlParser.DATA: - case TrinoSqlParser.DATE: - case TrinoSqlParser.DAY: - case TrinoSqlParser.DEFAULT: - case TrinoSqlParser.DEFINER: - case TrinoSqlParser.DESC: - case TrinoSqlParser.DEFINE: - case TrinoSqlParser.DISTRIBUTED: - case TrinoSqlParser.DOUBLE: - case TrinoSqlParser.EMPTY: - case TrinoSqlParser.EXCLUDING: - case TrinoSqlParser.EXPLAIN: - case TrinoSqlParser.FETCH: - case TrinoSqlParser.FILTER: - case TrinoSqlParser.FINAL: - case TrinoSqlParser.FIRST: - case TrinoSqlParser.FOLLOWING: - case TrinoSqlParser.FORMAT: - case TrinoSqlParser.FUNCTIONS: - case TrinoSqlParser.GRANT: - case TrinoSqlParser.GRANTED: - case TrinoSqlParser.GRANTS: - case TrinoSqlParser.DENY: - case TrinoSqlParser.GRAPHVIZ: - case TrinoSqlParser.GROUPS: - case TrinoSqlParser.HOUR: - case TrinoSqlParser.IF: - case TrinoSqlParser.IGNORE: - case TrinoSqlParser.INCLUDING: - case TrinoSqlParser.INITIAL: - case TrinoSqlParser.INPUT: - case TrinoSqlParser.INTERVAL: - case TrinoSqlParser.INVOKER: - case TrinoSqlParser.IO: - case TrinoSqlParser.ISOLATION: - case TrinoSqlParser.JSON: - case TrinoSqlParser.LAST: - case TrinoSqlParser.LATERAL: - case TrinoSqlParser.LEVEL: - case TrinoSqlParser.LIMIT: - case TrinoSqlParser.LOCAL: - case TrinoSqlParser.LOGICAL: - case TrinoSqlParser.MAP: - case TrinoSqlParser.MATCH: - case TrinoSqlParser.MATCHED: - case TrinoSqlParser.MATCHES: - case TrinoSqlParser.MATCH_RECOGNIZE: - case TrinoSqlParser.MATERIALIZED: - case TrinoSqlParser.MEASURES: - case TrinoSqlParser.MERGE: - case TrinoSqlParser.MINUTE: - case TrinoSqlParser.MONTH: - case TrinoSqlParser.NEXT: - case TrinoSqlParser.NFC: - case TrinoSqlParser.NFD: - case TrinoSqlParser.NFKC: - case TrinoSqlParser.NFKD: - case TrinoSqlParser.NO: - case TrinoSqlParser.NONE: - case TrinoSqlParser.NULLIF: - case TrinoSqlParser.NULLS: - case TrinoSqlParser.OFFSET: - case TrinoSqlParser.OMIT: - case TrinoSqlParser.ONE: - case TrinoSqlParser.ONLY: - case TrinoSqlParser.OPTION: - case TrinoSqlParser.ORDINALITY: - case TrinoSqlParser.OUTPUT: - case TrinoSqlParser.OVER: - case TrinoSqlParser.PARTITION: - case TrinoSqlParser.PARTITIONS: - case TrinoSqlParser.PAST: - case TrinoSqlParser.PATH: - case TrinoSqlParser.PATTERN: - case TrinoSqlParser.PER: - case TrinoSqlParser.PERMUTE: - case TrinoSqlParser.POSITION: - case TrinoSqlParser.PRECEDING: - case TrinoSqlParser.PRECISION: - case TrinoSqlParser.PRIVILEGES: - case TrinoSqlParser.PROPERTIES: - case TrinoSqlParser.RANGE: - case TrinoSqlParser.READ: - case TrinoSqlParser.REFRESH: - case TrinoSqlParser.RENAME: - case TrinoSqlParser.REPEATABLE: - case TrinoSqlParser.REPLACE: - case TrinoSqlParser.RESET: - case TrinoSqlParser.RESPECT: - case TrinoSqlParser.RESTRICT: - case TrinoSqlParser.REVOKE: - case TrinoSqlParser.ROLE: - case TrinoSqlParser.ROLES: - case TrinoSqlParser.ROLLBACK: - case TrinoSqlParser.ROW: - case TrinoSqlParser.ROWS: - case TrinoSqlParser.RUNNING: - case TrinoSqlParser.SCHEMA: - case TrinoSqlParser.SCHEMAS: - case TrinoSqlParser.SECOND: - case TrinoSqlParser.SECURITY: - case TrinoSqlParser.SEEK: - case TrinoSqlParser.SERIALIZABLE: - case TrinoSqlParser.SESSION: - case TrinoSqlParser.SET: - case TrinoSqlParser.SETS: - case TrinoSqlParser.SHOW: - case TrinoSqlParser.SOME: - case TrinoSqlParser.START: - case TrinoSqlParser.STATS: - case TrinoSqlParser.SUBSET: - case TrinoSqlParser.SUBSTRING: - case TrinoSqlParser.SYSTEM: - case TrinoSqlParser.TABLES: - case TrinoSqlParser.TABLESAMPLE: - case TrinoSqlParser.TEXT: - case TrinoSqlParser.TIES: - case TrinoSqlParser.TIME: - case TrinoSqlParser.TIMESTAMP: - case TrinoSqlParser.TO: - case TrinoSqlParser.TRANSACTION: - case TrinoSqlParser.TRUNCATE: - case TrinoSqlParser.TRY_CAST: - case TrinoSqlParser.TYPE: - case TrinoSqlParser.UNBOUNDED: - case TrinoSqlParser.UNCOMMITTED: - case TrinoSqlParser.UNMATCHED: - case TrinoSqlParser.UPDATE: - case TrinoSqlParser.USE: - case TrinoSqlParser.USER: - case TrinoSqlParser.VALIDATE: - case TrinoSqlParser.VERBOSE: - case TrinoSqlParser.VIEW: - case TrinoSqlParser.WINDOW: - case TrinoSqlParser.WITHOUT: - case TrinoSqlParser.WORK: - case TrinoSqlParser.WRITE: - case TrinoSqlParser.YEAR: - case TrinoSqlParser.ZONE: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: _localctx = new UnquotedIdentifierContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2441; + this.state = 2534; this.nonReserved(); } break; @@ -11213,7 +11689,7 @@ export class TrinoSqlParser extends Parser { _localctx = new BackQuotedIdentifierContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 2442; + this.state = 2535; this.match(TrinoSqlParser.BACKQUOTED_IDENTIFIER); } break; @@ -11221,7 +11697,7 @@ export class TrinoSqlParser extends Parser { _localctx = new DigitIdentifierContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 2443; + this.state = 2536; this.match(TrinoSqlParser.DIGIT_IDENTIFIER); } break; @@ -11246,27 +11722,27 @@ export class TrinoSqlParser extends Parser { // @RuleVersion(0) public number(): NumberContext { let _localctx: NumberContext = new NumberContext(this._ctx, this.state); - this.enterRule(_localctx, 176, TrinoSqlParser.RULE_number); + this.enterRule(_localctx, 202, TrinoSqlParser.RULE_number); let _la: number; try { - this.state = 2458; + this.state = 2551; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 323, this._ctx) ) { + switch ( this.interpreter.adaptivePredict(this._input, 333, this._ctx) ) { case 1: _localctx = new DecimalLiteralContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 2447; + this.state = 2540; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.MINUS) { { - this.state = 2446; + this.state = 2539; this.match(TrinoSqlParser.MINUS); } } - this.state = 2449; + this.state = 2542; this.match(TrinoSqlParser.DECIMAL_VALUE); } break; @@ -11275,17 +11751,17 @@ export class TrinoSqlParser extends Parser { _localctx = new DoubleLiteralContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 2451; + this.state = 2544; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.MINUS) { { - this.state = 2450; + this.state = 2543; this.match(TrinoSqlParser.MINUS); } } - this.state = 2453; + this.state = 2546; this.match(TrinoSqlParser.DOUBLE_VALUE); } break; @@ -11294,17 +11770,17 @@ export class TrinoSqlParser extends Parser { _localctx = new IntegerLiteralContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 2455; + this.state = 2548; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === TrinoSqlParser.MINUS) { { - this.state = 2454; + this.state = 2547; this.match(TrinoSqlParser.MINUS); } } - this.state = 2457; + this.state = 2550; this.match(TrinoSqlParser.INTEGER_VALUE); } break; @@ -11327,14 +11803,14 @@ export class TrinoSqlParser extends Parser { // @RuleVersion(0) public nonReserved(): NonReservedContext { let _localctx: NonReservedContext = new NonReservedContext(this._ctx, this.state); - this.enterRule(_localctx, 178, TrinoSqlParser.RULE_nonReserved); + this.enterRule(_localctx, 204, TrinoSqlParser.RULE_nonReserved); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 2460; + this.state = 2553; _la = this._input.LA(1); - if (!(((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.ADD - 17)) | (1 << (TrinoSqlParser.ADMIN - 17)) | (1 << (TrinoSqlParser.AFTER - 17)) | (1 << (TrinoSqlParser.ALL - 17)) | (1 << (TrinoSqlParser.ANALYZE - 17)) | (1 << (TrinoSqlParser.ANY - 17)) | (1 << (TrinoSqlParser.ARRAY - 17)) | (1 << (TrinoSqlParser.ASC - 17)) | (1 << (TrinoSqlParser.AT - 17)) | (1 << (TrinoSqlParser.AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.BERNOULLI - 17)) | (1 << (TrinoSqlParser.CALL - 17)) | (1 << (TrinoSqlParser.CASCADE - 17)) | (1 << (TrinoSqlParser.CATALOGS - 17)) | (1 << (TrinoSqlParser.COLUMN - 17)) | (1 << (TrinoSqlParser.COLUMNS - 17)) | (1 << (TrinoSqlParser.COMMENT - 17)) | (1 << (TrinoSqlParser.COMMIT - 17)) | (1 << (TrinoSqlParser.COMMITTED - 17)) | (1 << (TrinoSqlParser.CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.DATA - 56)) | (1 << (TrinoSqlParser.DATE - 56)) | (1 << (TrinoSqlParser.DAY - 56)) | (1 << (TrinoSqlParser.DEFAULT - 56)) | (1 << (TrinoSqlParser.DEFINER - 56)) | (1 << (TrinoSqlParser.DESC - 56)) | (1 << (TrinoSqlParser.DEFINE - 56)) | (1 << (TrinoSqlParser.DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.DOUBLE - 56)) | (1 << (TrinoSqlParser.EMPTY - 56)) | (1 << (TrinoSqlParser.EXCLUDING - 56)) | (1 << (TrinoSqlParser.EXPLAIN - 56)) | (1 << (TrinoSqlParser.FETCH - 56)) | (1 << (TrinoSqlParser.FILTER - 56)) | (1 << (TrinoSqlParser.FINAL - 56)) | (1 << (TrinoSqlParser.FIRST - 56)) | (1 << (TrinoSqlParser.FOLLOWING - 56)) | (1 << (TrinoSqlParser.FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.FUNCTIONS - 90)) | (1 << (TrinoSqlParser.GRANT - 90)) | (1 << (TrinoSqlParser.GRANTED - 90)) | (1 << (TrinoSqlParser.GRANTS - 90)) | (1 << (TrinoSqlParser.DENY - 90)) | (1 << (TrinoSqlParser.GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.GROUPS - 90)) | (1 << (TrinoSqlParser.HOUR - 90)) | (1 << (TrinoSqlParser.IF - 90)) | (1 << (TrinoSqlParser.IGNORE - 90)) | (1 << (TrinoSqlParser.INCLUDING - 90)) | (1 << (TrinoSqlParser.INITIAL - 90)) | (1 << (TrinoSqlParser.INPUT - 90)) | (1 << (TrinoSqlParser.INTERVAL - 90)) | (1 << (TrinoSqlParser.INVOKER - 90)) | (1 << (TrinoSqlParser.IO - 90)) | (1 << (TrinoSqlParser.ISOLATION - 90)) | (1 << (TrinoSqlParser.JSON - 90)) | (1 << (TrinoSqlParser.LAST - 90)) | (1 << (TrinoSqlParser.LATERAL - 90)) | (1 << (TrinoSqlParser.LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.LIMIT - 123)) | (1 << (TrinoSqlParser.LOCAL - 123)) | (1 << (TrinoSqlParser.LOGICAL - 123)) | (1 << (TrinoSqlParser.MAP - 123)) | (1 << (TrinoSqlParser.MATCH - 123)) | (1 << (TrinoSqlParser.MATCHED - 123)) | (1 << (TrinoSqlParser.MATCHES - 123)) | (1 << (TrinoSqlParser.MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.MATERIALIZED - 123)) | (1 << (TrinoSqlParser.MEASURES - 123)) | (1 << (TrinoSqlParser.MERGE - 123)) | (1 << (TrinoSqlParser.MINUTE - 123)) | (1 << (TrinoSqlParser.MONTH - 123)) | (1 << (TrinoSqlParser.NEXT - 123)) | (1 << (TrinoSqlParser.NFC - 123)) | (1 << (TrinoSqlParser.NFD - 123)) | (1 << (TrinoSqlParser.NFKC - 123)) | (1 << (TrinoSqlParser.NFKD - 123)) | (1 << (TrinoSqlParser.NO - 123)) | (1 << (TrinoSqlParser.NONE - 123)) | (1 << (TrinoSqlParser.NULLIF - 123)) | (1 << (TrinoSqlParser.NULLS - 123)) | (1 << (TrinoSqlParser.OFFSET - 123)) | (1 << (TrinoSqlParser.OMIT - 123)) | (1 << (TrinoSqlParser.ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.ONLY - 155)) | (1 << (TrinoSqlParser.OPTION - 155)) | (1 << (TrinoSqlParser.ORDINALITY - 155)) | (1 << (TrinoSqlParser.OUTPUT - 155)) | (1 << (TrinoSqlParser.OVER - 155)) | (1 << (TrinoSqlParser.PARTITION - 155)) | (1 << (TrinoSqlParser.PARTITIONS - 155)) | (1 << (TrinoSqlParser.PAST - 155)) | (1 << (TrinoSqlParser.PATH - 155)) | (1 << (TrinoSqlParser.PATTERN - 155)) | (1 << (TrinoSqlParser.PER - 155)) | (1 << (TrinoSqlParser.PERMUTE - 155)) | (1 << (TrinoSqlParser.POSITION - 155)) | (1 << (TrinoSqlParser.PRECEDING - 155)) | (1 << (TrinoSqlParser.PRECISION - 155)) | (1 << (TrinoSqlParser.PRIVILEGES - 155)) | (1 << (TrinoSqlParser.PROPERTIES - 155)) | (1 << (TrinoSqlParser.RANGE - 155)) | (1 << (TrinoSqlParser.READ - 155)) | (1 << (TrinoSqlParser.REFRESH - 155)) | (1 << (TrinoSqlParser.RENAME - 155)) | (1 << (TrinoSqlParser.REPEATABLE - 155)) | (1 << (TrinoSqlParser.REPLACE - 155)) | (1 << (TrinoSqlParser.RESET - 155)) | (1 << (TrinoSqlParser.RESPECT - 155)) | (1 << (TrinoSqlParser.RESTRICT - 155)) | (1 << (TrinoSqlParser.REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.ROLE - 188)) | (1 << (TrinoSqlParser.ROLES - 188)) | (1 << (TrinoSqlParser.ROLLBACK - 188)) | (1 << (TrinoSqlParser.ROW - 188)) | (1 << (TrinoSqlParser.ROWS - 188)) | (1 << (TrinoSqlParser.RUNNING - 188)) | (1 << (TrinoSqlParser.SCHEMA - 188)) | (1 << (TrinoSqlParser.SCHEMAS - 188)) | (1 << (TrinoSqlParser.SECOND - 188)) | (1 << (TrinoSqlParser.SECURITY - 188)) | (1 << (TrinoSqlParser.SEEK - 188)) | (1 << (TrinoSqlParser.SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.SESSION - 188)) | (1 << (TrinoSqlParser.SET - 188)) | (1 << (TrinoSqlParser.SETS - 188)) | (1 << (TrinoSqlParser.SHOW - 188)) | (1 << (TrinoSqlParser.SOME - 188)) | (1 << (TrinoSqlParser.START - 188)) | (1 << (TrinoSqlParser.STATS - 188)) | (1 << (TrinoSqlParser.SUBSET - 188)) | (1 << (TrinoSqlParser.SUBSTRING - 188)) | (1 << (TrinoSqlParser.SYSTEM - 188)) | (1 << (TrinoSqlParser.TABLES - 188)) | (1 << (TrinoSqlParser.TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.TEXT - 188)) | (1 << (TrinoSqlParser.TIES - 188)) | (1 << (TrinoSqlParser.TIME - 188)) | (1 << (TrinoSqlParser.TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.TO - 220)) | (1 << (TrinoSqlParser.TRANSACTION - 220)) | (1 << (TrinoSqlParser.TRUNCATE - 220)) | (1 << (TrinoSqlParser.TRY_CAST - 220)) | (1 << (TrinoSqlParser.TYPE - 220)) | (1 << (TrinoSqlParser.UNBOUNDED - 220)) | (1 << (TrinoSqlParser.UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.UNMATCHED - 220)) | (1 << (TrinoSqlParser.UPDATE - 220)) | (1 << (TrinoSqlParser.USE - 220)) | (1 << (TrinoSqlParser.USER - 220)) | (1 << (TrinoSqlParser.VALIDATE - 220)) | (1 << (TrinoSqlParser.VERBOSE - 220)) | (1 << (TrinoSqlParser.VIEW - 220)) | (1 << (TrinoSqlParser.WINDOW - 220)) | (1 << (TrinoSqlParser.WITHOUT - 220)) | (1 << (TrinoSqlParser.WORK - 220)) | (1 << (TrinoSqlParser.WRITE - 220)) | (1 << (TrinoSqlParser.YEAR - 220)) | (1 << (TrinoSqlParser.ZONE - 220)))) !== 0))) { + if (!(((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & ((1 << (TrinoSqlParser.KW_ADD - 17)) | (1 << (TrinoSqlParser.KW_ADMIN - 17)) | (1 << (TrinoSqlParser.KW_AFTER - 17)) | (1 << (TrinoSqlParser.KW_ALL - 17)) | (1 << (TrinoSqlParser.KW_ANALYZE - 17)) | (1 << (TrinoSqlParser.KW_ANY - 17)) | (1 << (TrinoSqlParser.KW_ARRAY - 17)) | (1 << (TrinoSqlParser.KW_ASC - 17)) | (1 << (TrinoSqlParser.KW_AT - 17)) | (1 << (TrinoSqlParser.KW_AUTHORIZATION - 17)) | (1 << (TrinoSqlParser.KW_BERNOULLI - 17)) | (1 << (TrinoSqlParser.KW_CALL - 17)) | (1 << (TrinoSqlParser.KW_CASCADE - 17)) | (1 << (TrinoSqlParser.KW_CATALOGS - 17)) | (1 << (TrinoSqlParser.KW_COLUMN - 17)) | (1 << (TrinoSqlParser.KW_COLUMNS - 17)) | (1 << (TrinoSqlParser.KW_COMMENT - 17)) | (1 << (TrinoSqlParser.KW_COMMIT - 17)) | (1 << (TrinoSqlParser.KW_COMMITTED - 17)) | (1 << (TrinoSqlParser.KW_CURRENT - 17)))) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & ((1 << (TrinoSqlParser.KW_DATA - 56)) | (1 << (TrinoSqlParser.KW_DATE - 56)) | (1 << (TrinoSqlParser.KW_DAY - 56)) | (1 << (TrinoSqlParser.KW_DEFAULT - 56)) | (1 << (TrinoSqlParser.KW_DEFINER - 56)) | (1 << (TrinoSqlParser.KW_DESC - 56)) | (1 << (TrinoSqlParser.KW_DEFINE - 56)) | (1 << (TrinoSqlParser.KW_DISTRIBUTED - 56)) | (1 << (TrinoSqlParser.KW_DOUBLE - 56)) | (1 << (TrinoSqlParser.KW_EMPTY - 56)) | (1 << (TrinoSqlParser.KW_EXCLUDING - 56)) | (1 << (TrinoSqlParser.KW_EXPLAIN - 56)) | (1 << (TrinoSqlParser.KW_FETCH - 56)) | (1 << (TrinoSqlParser.KW_FILTER - 56)) | (1 << (TrinoSqlParser.KW_FINAL - 56)) | (1 << (TrinoSqlParser.KW_FIRST - 56)) | (1 << (TrinoSqlParser.KW_FOLLOWING - 56)) | (1 << (TrinoSqlParser.KW_FORMAT - 56)))) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & ((1 << (TrinoSqlParser.KW_FUNCTIONS - 90)) | (1 << (TrinoSqlParser.KW_GRANT - 90)) | (1 << (TrinoSqlParser.KW_GRANTED - 90)) | (1 << (TrinoSqlParser.KW_GRANTS - 90)) | (1 << (TrinoSqlParser.KW_DENY - 90)) | (1 << (TrinoSqlParser.KW_GRAPHVIZ - 90)) | (1 << (TrinoSqlParser.KW_GROUPS - 90)) | (1 << (TrinoSqlParser.KW_HOUR - 90)) | (1 << (TrinoSqlParser.KW_IF - 90)) | (1 << (TrinoSqlParser.KW_IGNORE - 90)) | (1 << (TrinoSqlParser.KW_INCLUDING - 90)) | (1 << (TrinoSqlParser.KW_INITIAL - 90)) | (1 << (TrinoSqlParser.KW_INPUT - 90)) | (1 << (TrinoSqlParser.KW_INTERVAL - 90)) | (1 << (TrinoSqlParser.KW_INVOKER - 90)) | (1 << (TrinoSqlParser.KW_IO - 90)) | (1 << (TrinoSqlParser.KW_ISOLATION - 90)) | (1 << (TrinoSqlParser.KW_JSON - 90)) | (1 << (TrinoSqlParser.KW_LAST - 90)) | (1 << (TrinoSqlParser.KW_LATERAL - 90)) | (1 << (TrinoSqlParser.KW_LEVEL - 90)))) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & ((1 << (TrinoSqlParser.KW_LIMIT - 123)) | (1 << (TrinoSqlParser.KW_LOCAL - 123)) | (1 << (TrinoSqlParser.KW_LOGICAL - 123)) | (1 << (TrinoSqlParser.KW_MAP - 123)) | (1 << (TrinoSqlParser.KW_MATCH - 123)) | (1 << (TrinoSqlParser.KW_MATCHED - 123)) | (1 << (TrinoSqlParser.KW_MATCHES - 123)) | (1 << (TrinoSqlParser.KW_MATCH_RECOGNIZE - 123)) | (1 << (TrinoSqlParser.KW_MATERIALIZED - 123)) | (1 << (TrinoSqlParser.KW_MEASURES - 123)) | (1 << (TrinoSqlParser.KW_MERGE - 123)) | (1 << (TrinoSqlParser.KW_MINUTE - 123)) | (1 << (TrinoSqlParser.KW_MONTH - 123)) | (1 << (TrinoSqlParser.KW_NEXT - 123)) | (1 << (TrinoSqlParser.KW_NFC - 123)) | (1 << (TrinoSqlParser.KW_NFD - 123)) | (1 << (TrinoSqlParser.KW_NFKC - 123)) | (1 << (TrinoSqlParser.KW_NFKD - 123)) | (1 << (TrinoSqlParser.KW_NO - 123)) | (1 << (TrinoSqlParser.KW_NONE - 123)) | (1 << (TrinoSqlParser.KW_NULLIF - 123)) | (1 << (TrinoSqlParser.KW_NULLS - 123)) | (1 << (TrinoSqlParser.KW_OFFSET - 123)) | (1 << (TrinoSqlParser.KW_OMIT - 123)) | (1 << (TrinoSqlParser.KW_ONE - 123)))) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & ((1 << (TrinoSqlParser.KW_ONLY - 155)) | (1 << (TrinoSqlParser.KW_OPTION - 155)) | (1 << (TrinoSqlParser.KW_ORDINALITY - 155)) | (1 << (TrinoSqlParser.KW_OUTPUT - 155)) | (1 << (TrinoSqlParser.KW_OVER - 155)) | (1 << (TrinoSqlParser.KW_PARTITION - 155)) | (1 << (TrinoSqlParser.KW_PARTITIONS - 155)) | (1 << (TrinoSqlParser.KW_PAST - 155)) | (1 << (TrinoSqlParser.KW_PATH - 155)) | (1 << (TrinoSqlParser.KW_PATTERN - 155)) | (1 << (TrinoSqlParser.KW_PER - 155)) | (1 << (TrinoSqlParser.KW_PERMUTE - 155)) | (1 << (TrinoSqlParser.KW_POSITION - 155)) | (1 << (TrinoSqlParser.KW_PRECEDING - 155)) | (1 << (TrinoSqlParser.KW_PRECISION - 155)) | (1 << (TrinoSqlParser.KW_PRIVILEGES - 155)) | (1 << (TrinoSqlParser.KW_PROPERTIES - 155)) | (1 << (TrinoSqlParser.KW_RANGE - 155)) | (1 << (TrinoSqlParser.KW_READ - 155)) | (1 << (TrinoSqlParser.KW_REFRESH - 155)) | (1 << (TrinoSqlParser.KW_RENAME - 155)) | (1 << (TrinoSqlParser.KW_REPEATABLE - 155)) | (1 << (TrinoSqlParser.KW_REPLACE - 155)) | (1 << (TrinoSqlParser.KW_RESET - 155)) | (1 << (TrinoSqlParser.KW_RESPECT - 155)) | (1 << (TrinoSqlParser.KW_RESTRICT - 155)) | (1 << (TrinoSqlParser.KW_REVOKE - 155)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (TrinoSqlParser.KW_ROLE - 188)) | (1 << (TrinoSqlParser.KW_ROLES - 188)) | (1 << (TrinoSqlParser.KW_ROLLBACK - 188)) | (1 << (TrinoSqlParser.KW_ROW - 188)) | (1 << (TrinoSqlParser.KW_ROWS - 188)) | (1 << (TrinoSqlParser.KW_RUNNING - 188)) | (1 << (TrinoSqlParser.KW_SCHEMA - 188)) | (1 << (TrinoSqlParser.KW_SCHEMAS - 188)) | (1 << (TrinoSqlParser.KW_SECOND - 188)) | (1 << (TrinoSqlParser.KW_SECURITY - 188)) | (1 << (TrinoSqlParser.KW_SEEK - 188)) | (1 << (TrinoSqlParser.KW_SERIALIZABLE - 188)) | (1 << (TrinoSqlParser.KW_SESSION - 188)) | (1 << (TrinoSqlParser.KW_SET - 188)) | (1 << (TrinoSqlParser.KW_SETS - 188)) | (1 << (TrinoSqlParser.KW_SHOW - 188)) | (1 << (TrinoSqlParser.KW_SOME - 188)) | (1 << (TrinoSqlParser.KW_START - 188)) | (1 << (TrinoSqlParser.KW_STATS - 188)) | (1 << (TrinoSqlParser.KW_SUBSET - 188)) | (1 << (TrinoSqlParser.KW_SUBSTRING - 188)) | (1 << (TrinoSqlParser.KW_SYSTEM - 188)) | (1 << (TrinoSqlParser.KW_TABLES - 188)) | (1 << (TrinoSqlParser.KW_TABLESAMPLE - 188)) | (1 << (TrinoSqlParser.KW_TEXT - 188)) | (1 << (TrinoSqlParser.KW_TIES - 188)) | (1 << (TrinoSqlParser.KW_TIME - 188)) | (1 << (TrinoSqlParser.KW_TIMESTAMP - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (TrinoSqlParser.KW_TO - 220)) | (1 << (TrinoSqlParser.KW_TRANSACTION - 220)) | (1 << (TrinoSqlParser.KW_TRUNCATE - 220)) | (1 << (TrinoSqlParser.KW_TRY_CAST - 220)) | (1 << (TrinoSqlParser.KW_TYPE - 220)) | (1 << (TrinoSqlParser.KW_UNBOUNDED - 220)) | (1 << (TrinoSqlParser.KW_UNCOMMITTED - 220)) | (1 << (TrinoSqlParser.KW_UNMATCHED - 220)) | (1 << (TrinoSqlParser.KW_UPDATE - 220)) | (1 << (TrinoSqlParser.KW_USE - 220)) | (1 << (TrinoSqlParser.KW_USER - 220)) | (1 << (TrinoSqlParser.KW_VALIDATE - 220)) | (1 << (TrinoSqlParser.KW_VERBOSE - 220)) | (1 << (TrinoSqlParser.KW_VIEW - 220)) | (1 << (TrinoSqlParser.KW_WINDOW - 220)) | (1 << (TrinoSqlParser.KW_WITHOUT - 220)) | (1 << (TrinoSqlParser.KW_WORK - 220)) | (1 << (TrinoSqlParser.KW_WRITE - 220)) | (1 << (TrinoSqlParser.KW_YEAR - 220)) | (1 << (TrinoSqlParser.KW_ZONE - 220)))) !== 0))) { this._errHandler.recoverInline(this); } else { if (this._input.LA(1) === Token.EOF) { @@ -11459,7 +11935,7 @@ export class TrinoSqlParser extends Parser { private static readonly _serializedATNSegments: number = 5; private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\u0117\u09A1\x04" + + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\u0117\u09FE\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" + @@ -11472,1345 +11948,1392 @@ export class TrinoSqlParser extends Parser { "=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" + "F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" + "O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" + - "X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x03\x02\x07\x02\xB8\n\x02\f\x02\x0E\x02\xBB" + - "\v\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x05\x03" + - "\xC4\n\x03\x03\x04\x03\x04\x05\x04\xC8\n\x04\x03\x05\x03\x05\x05\x05\xCC" + - "\n\x05\x03\x06\x03\x06\x05\x06\xD0\n\x06\x03\x07\x03\x07\x05\x07\xD4\n" + - "\x07\x03\b\x03\b\x05\b\xD8\n\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\x05\t\xE7\n\t\x03\t\x03\t\x03\t" + - "\x05\t\xEC\n\t\x03\t\x03\t\x05\t\xF0\n\t\x03\t\x03\t\x03\t\x03\t\x05\t" + - "\xF6\n\t\x03\t\x03\t\x05\t\xFA\n\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\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x05\t\u010F\n\t\x03\t\x03\t\x05\t\u0113\n\t\x03\t\x03\t\x05\t" + - "\u0117\n\t\x03\t\x03\t\x05\t\u011B\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x05\t\u0123\n\t\x03\t\x03\t\x05\t\u0127\n\t\x03\t\x05\t\u012A\n\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0131\n\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x07\t\u0138\n\t\f\t\x0E\t\u013B\v\t\x03\t\x03\t\x03\t\x05\t\u0140\n" + - "\t\x03\t\x03\t\x05\t\u0144\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u014A\n\t" + - "\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0151\n\t\x03\t\x03\t\x03\t\x03\t" + - "\x03\t\x03\t\x03\t\x05\t\u015A\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t" + - "\x03\t\x05\t\u0163\n\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\x05\t\u0171\n\t\x03\t\x03\t\x03\t\x03\t\x03\t" + - "\x03\t\x03\t\x05\t\u017A\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0180\n\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0187\n\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x05\t\u0191\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05" + - "\t\u0198\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01A0\n\t\x03\t" + - "\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01A8\n\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\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u01C3\n" + - "\t\f\t\x0E\t\u01C6\v\t\x05\t\u01C8\n\t\x03\t\x05\t\u01CB\n\t\x03\t\x03" + - "\t\x05\t\u01CF\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01D5\n\t\x03\t\x03\t" + - "\x03\t\x05\t\u01DA\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01E1\n\t\x03" + - "\t\x03\t\x03\t\x05\t\u01E6\n\t\x03\t\x03\t\x05\t\u01EA\n\t\x03\t\x03\t" + - "\x03\t\x03\t\x03\t\x03\t\x05\t\u01F2\n\t\x03\t\x03\t\x03\t\x03\t\x05\t" + - "\u01F8\n\t\x03\t\x03\t\x05\t\u01FC\n\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\x05\t\u020A\n\t\x03\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x05\t\u0212\n\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\t\x03\t\x03\t\x03\t\x05" + - "\t\u0225\n\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\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07" + - "\t\u023C\n\t\f\t\x0E\t\u023F\v\t\x05\t\u0241\n\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u024B\n\t\x03\t\x03\t\x05\t\u024F\n\t" + - "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u025A\n\t" + - "\f\t\x0E\t\u025D\v\t\x03\t\x03\t\x03\t\x05\t\u0262\n\t\x03\t\x03\t\x03" + - "\t\x05\t\u0267\n\t\x03\t\x03\t\x05\t\u026B\n\t\x03\t\x03\t\x03\t\x03\t" + - "\x05\t\u0271\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u0278\n\t\f\t\x0E" + - "\t\u027B\v\t\x03\t\x03\t\x03\t\x05\t\u0280\n\t\x03\t\x03\t\x05\t\u0284" + - "\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u028B\n\t\x03\t\x03\t\x05\t\u028F" + - "\n\t\x03\t\x03\t\x03\t\x03\t\x07\t\u0295\n\t\f\t\x0E\t\u0298\v\t\x03\t" + - "\x03\t\x05\t\u029C\n\t\x03\t\x03\t\x05\t\u02A0\n\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x03\t\x05\t\u02A8\n\t\x03\t\x03\t\x03\t\x03\t\x07\t\u02AE\n\t" + - "\f\t\x0E\t\u02B1\v\t\x03\t\x03\t\x05\t\u02B5\n\t\x03\t\x03\t\x05\t\u02B9" + - "\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u02C3\n\t\x03" + - "\t\x03\t\x03\t\x07\t\u02C8\n\t\f\t\x0E\t\u02CB\v\t\x03\t\x03\t\x05\t\u02CF" + - "\n\t\x03\t\x03\t\x05\t\u02D3\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x05\t\u02DD\n\t\x03\t\x05\t\u02E0\n\t\x03\t\x03\t\x05\t\u02E4" + - "\n\t\x03\t\x05\t\u02E7\n\t\x03\t\x03\t\x03\t\x03\t\x07\t\u02ED\n\t\f\t" + - "\x0E\t\u02F0\v\t\x03\t\x03\t\x05\t\u02F4\n\t\x03\t\x03\t\x03\t\x03\t\x03" + + "X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" + + "`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x03" + + "\x02\x07\x02\xD2\n\x02\f\x02\x0E\x02\xD5\v\x02\x03\x02\x03\x02\x03\x03" + + "\x03\x03\x03\x03\x03\x03\x03\x03\x05\x03\xDE\n\x03\x03\x04\x03\x04\x05" + + "\x04\xE2\n\x04\x03\x05\x03\x05\x05\x05\xE6\n\x05\x03\x06\x03\x06\x05\x06" + + "\xEA\n\x06\x03\x07\x03\x07\x05\x07\xEE\n\x07\x03\b\x03\b\x05\b\xF2\n\b" + + "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\xFC\n\t\x03\t\x03" + + "\t\x03\t\x05\t\u0101\n\t\x03\t\x03\t\x05\t\u0105\n\t\x03\t\x03\t\x03\t" + + "\x03\t\x05\t\u010B\n\t\x03\t\x03\t\x05\t\u010F\n\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\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u030C\n\t\x03\t\x03\t\x03\t\x03" + - "\t\x05\t\u0312\n\t\x05\t\u0314\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u031A" + - "\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0320\n\t\x05\t\u0322\n\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u032A\n\t\x05\t\u032C\n\t\x03\t\x03\t" + - "\x03\t\x03\t\x05\t\u0332\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0338\n\t\x05" + - "\t\u033A\n\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\x05\t\u0349\n\t\x03\t\x03\t\x03\t\x05\t\u034E\n\t" + - "\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0355\n\t\x03\t\x03\t\x03\t\x03\t" + - "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0361\n\t\x05\t\u0363\n\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u036B\n\t\x05\t\u036D\n\t\x03\t" + + "\t\x03\t\x03\t\x03\t\x05\t\u0124\n\t\x03\t\x03\t\x05\t\u0128\n\t\x03\t" + + "\x03\t\x05\t\u012C\n\t\x03\t\x03\t\x05\t\u0130\n\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x05\t\u0138\n\t\x03\t\x03\t\x05\t\u013C\n\t\x03\t\x05\t" + + "\u013F\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0146\n\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x07\t\u014D\n\t\f\t\x0E\t\u0150\v\t\x03\t\x03\t\x03\t\x05" + + "\t\u0155\n\t\x03\t\x03\t\x05\t\u0159\n\t\x03\t\x03\t\x03\t\x03\t\x05\t" + + "\u015F\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0166\n\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u016F\n\t\x03\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x05\t\u0178\n\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\x05\t\u0186\n\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\t\x05\t\u018F\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0195" + + "\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u019C\n\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01A6\n\t\x03\t\x03\t\x03\t\x03\t\x03" + + "\t\x05\t\u01AD\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01B5\n\t" + + "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01BD\n\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\t\x03" + - "\t\x03\t\x07\t\u037D\n\t\f\t\x0E\t\u0380\v\t\x05\t\u0382\n\t\x03\t\x03" + - "\t\x05\t\u0386\n\t\x03\t\x03\t\x05\t\u038A\n\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\t\x07\t\u039A" + - "\n\t\f\t\x0E\t\u039D\v\t\x05\t\u039F\n\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\t\x05\t\u03AF\n\t" + - "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u03B7\n\t\f\t\x0E\t\u03BA\v" + - "\t\x03\t\x03\t\x05\t\u03BE\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u03C4\n\t" + - "\x03\t\x05\t\u03C7\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x06\t\u03CE\n\t\r" + - "\t\x0E\t\u03CF\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x05\t\u03DC\n\t\x03\n\x05\n\u03DF\n\n\x03\n\x03\n\x03\v\x03\v\x05\v" + - "\u03E5\n\v\x03\v\x03\v\x03\v\x07\v\u03EA\n\v\f\v\x0E\v\u03ED\v\v\x03\f" + - "\x03\f\x05\f\u03F1\n\f\x03\r\x03\r\x03\r\x03\r\x05\r\u03F7\n\r\x03\r\x03" + - "\r\x05\r\u03FB\n\r\x03\r\x03\r\x05\r\u03FF\n\r\x03\x0E\x03\x0E\x03\x0E" + - "\x03\x0E\x05\x0E\u0405\n\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03" + - "\x10\x03\x10\x07\x10\u040E\n\x10\f\x10\x0E\x10\u0411\v\x10\x03\x11\x03" + - "\x11\x03\x11\x03\x11\x03\x12\x03\x12\x05\x12\u0419\n\x12\x03\x13\x03\x13" + - "\x03\x13\x03\x13\x03\x13\x03\x13\x07\x13\u0421\n\x13\f\x13\x0E\x13\u0424" + - "\v\x13\x05\x13\u0426\n\x13\x03\x13\x03\x13\x03\x13\x05\x13\u042B\n\x13" + - "\x05\x13\u042D\n\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x05\x13\u0434" + - "\n\x13\x03\x13\x03\x13\x03\x13\x03\x13\x05\x13\u043A\n\x13\x05\x13\u043C" + - "\n\x13\x03\x14\x03\x14\x05\x14\u0440\n\x14\x03\x15\x03\x15\x03\x16\x03" + - "\x16\x03\x16\x03\x16\x03\x16\x03\x16\x05\x16\u044A\n\x16\x03\x16\x03\x16" + - "\x03\x16\x03\x16\x05\x16\u0450\n\x16\x03\x16\x07\x16\u0453\n\x16\f\x16" + - "\x0E\x16\u0456\v\x16\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03" + - "\x17\x07\x17\u045F\n\x17\f\x17\x0E\x17\u0462\v\x17\x03\x17\x03\x17\x03" + - "\x17\x03\x17\x05\x17\u0468\n\x17\x03\x18\x03\x18\x05\x18\u046C\n\x18\x03" + - "\x18\x03\x18\x05\x18\u0470\n\x18\x03\x19\x03\x19\x05\x19\u0474\n\x19\x03" + - "\x19\x03\x19\x03\x19\x07\x19\u0479\n\x19\f\x19\x0E\x19\u047C\v\x19\x03" + - "\x19\x03\x19\x03\x19\x03\x19\x07\x19\u0482\n\x19\f\x19\x0E\x19\u0485\v" + - "\x19\x05\x19\u0487\n\x19\x03\x19\x03\x19\x05\x19\u048B\n\x19\x03\x19\x03" + - "\x19\x03\x19\x05\x19\u0490\n\x19\x03\x19\x03\x19\x05\x19\u0494\n\x19\x03" + - "\x19\x03\x19\x03\x19\x03\x19\x07\x19\u049A\n\x19\f\x19\x0E\x19\u049D\v" + - "\x19\x05\x19\u049F\n\x19\x03\x1A\x05\x1A\u04A2\n\x1A\x03\x1A\x03\x1A\x03" + - "\x1A\x07\x1A\u04A7\n\x1A\f\x1A\x0E\x1A\u04AA\v\x1A\x03\x1B\x03\x1B\x03" + - "\x1B\x03\x1B\x03\x1B\x03\x1B\x07\x1B\u04B2\n\x1B\f\x1B\x0E\x1B\u04B5\v" + - "\x1B\x05\x1B\u04B7\n\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B" + - "\x07\x1B\u04BF\n\x1B\f\x1B\x0E\x1B\u04C2\v\x1B\x05\x1B\u04C4\n\x1B\x03" + - "\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x07\x1B\u04CD\n\x1B" + - "\f\x1B\x0E\x1B\u04D0\v\x1B\x03\x1B\x03\x1B\x05\x1B\u04D4\n\x1B\x03\x1C" + - "\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u04DA\n\x1C\f\x1C\x0E\x1C\u04DD\v\x1C" + - "\x05\x1C\u04DF\n\x1C\x03\x1C\x03\x1C\x05\x1C\u04E3\n\x1C\x03\x1D\x03\x1D" + - "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x05\x1E\u04EC\n\x1E\x03\x1E\x03" + - "\x1E\x03\x1E\x03\x1E\x03\x1E\x07\x1E\u04F3\n\x1E\f\x1E\x0E\x1E\u04F6\v" + - "\x1E\x05\x1E\u04F8\n\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x07\x1E" + - "\u04FF\n\x1E\f\x1E\x0E\x1E\u0502\v\x1E\x05\x1E\u0504\n\x1E\x03\x1E\x05" + - "\x1E\u0507\n\x1E\x03\x1F\x03\x1F\x05\x1F\u050B\n\x1F\x03\x1F\x03\x1F\x03" + - "\x1F\x03\x1F\x03\x1F\x03 \x03 \x03!\x03!\x05!\u0516\n!\x03!\x05!\u0519" + - "\n!\x03!\x03!\x03!\x03!\x03!\x05!\u0520\n!\x03!\x05!\u0523\n!\x03\"\x03" + - "\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03" + - "\"\x03\"\x03\"\x03\"\x05\"\u0536\n\"\x07\"\u0538\n\"\f\"\x0E\"\u053B\v" + - "\"\x03#\x05#\u053E\n#\x03#\x03#\x05#\u0542\n#\x03#\x03#\x05#\u0546\n#" + - "\x03#\x03#\x05#\u054A\n#\x05#\u054C\n#\x03$\x03$\x03$\x03$\x03$\x03$\x03" + - "$\x07$\u0555\n$\f$\x0E$\u0558\v$\x03$\x03$\x05$\u055C\n$\x03%\x03%\x03" + - "%\x03%\x03%\x03%\x03%\x05%\u0565\n%\x03&\x03&\x03\'\x03\'\x03\'\x03\'" + - "\x03\'\x03\'\x03\'\x03\'\x07\'\u0571\n\'\f\'\x0E\'\u0574\v\'\x05\'\u0576" + - "\n\'\x03\'\x03\'\x03\'\x03\'\x03\'\x07\'\u057D\n\'\f\'\x0E\'\u0580\v\'" + - "\x05\'\u0582\n\'\x03\'\x03\'\x03\'\x03\'\x07\'\u0588\n\'\f\'\x0E\'\u058B" + - "\v\'\x05\'\u058D\n\'\x03\'\x05\'\u0590\n\'\x03\'\x03\'\x03\'\x05\'\u0595" + - "\n\'\x03\'\x05\'\u0598\n\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03" + - "\'\x07\'\u05A2\n\'\f\'\x0E\'\u05A5\v\'\x05\'\u05A7\n\'\x03\'\x03\'\x03" + - "\'\x03\'\x07\'\u05AD\n\'\f\'\x0E\'\u05B0\v\'\x03\'\x03\'\x05\'\u05B4\n" + - "\'\x03\'\x03\'\x05\'\u05B8\n\'\x05\'\u05BA\n\'\x05\'\u05BC\n\'\x03(\x03" + - "(\x03(\x03(\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x05)\u05CB\n" + - ")\x05)\u05CD\n)\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x05*\u05D8" + - "\n*\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03" + - "+\x03+\x03+\x03+\x03+\x03+\x05+\u05ED\n+\x03,\x03,\x03,\x03,\x03,\x03" + - ",\x07,\u05F5\n,\f,\x0E,\u05F8\v,\x03,\x03,\x03-\x03-\x03-\x03-\x03.\x03" + - ".\x05.\u0602\n.\x03.\x03.\x05.\u0606\n.\x05.\u0608\n.\x03/\x03/\x03/\x03" + - "/\x07/\u060E\n/\f/\x0E/\u0611\v/\x03/\x03/\x030\x030\x030\x030\x030\x03" + - "0\x030\x030\x030\x030\x070\u061F\n0\f0\x0E0\u0622\v0\x030\x030\x030\x05" + - "0\u0627\n0\x030\x030\x030\x030\x030\x030\x030\x030\x030\x050\u0632\n0" + - "\x031\x031\x032\x032\x032\x052\u0639\n2\x032\x032\x052\u063D\n2\x032\x03" + - "2\x032\x032\x032\x032\x072\u0645\n2\f2\x0E2\u0648\v2\x033\x033\x033\x03" + - "3\x033\x033\x033\x033\x033\x033\x053\u0654\n3\x033\x033\x033\x033\x03" + - "3\x033\x053\u065C\n3\x033\x033\x033\x033\x033\x073\u0663\n3\f3\x0E3\u0666" + - "\v3\x033\x033\x033\x053\u066B\n3\x033\x033\x033\x033\x033\x033\x053\u0673" + - "\n3\x033\x033\x033\x033\x053\u0679\n3\x033\x033\x053\u067D\n3\x033\x03" + - "3\x033\x053\u0682\n3\x033\x033\x033\x053\u0687\n3\x034\x034\x034\x034" + - "\x054\u068D\n4\x034\x034\x034\x034\x034\x034\x034\x034\x034\x034\x034" + - "\x034\x074\u069B\n4\f4\x0E4\u069E\v4\x035\x035\x035\x035\x035\x035\x03" + + "\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u01D8" + + "\n\t\f\t\x0E\t\u01DB\v\t\x05\t\u01DD\n\t\x03\t\x05\t\u01E0\n\t\x03\t\x03" + + "\t\x05\t\u01E4\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01EA\n\t\x03\t\x03\t" + + "\x03\t\x05\t\u01EF\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u01F6\n\t\x03" + + "\t\x03\t\x03\t\x05\t\u01FB\n\t\x03\t\x03\t\x05\t\u01FF\n\t\x03\t\x03\t" + + "\x03\t\x03\t\x03\t\x03\t\x05\t\u0207\n\t\x03\t\x03\t\x03\t\x03\t\x05\t" + + "\u020D\n\t\x03\t\x03\t\x05\t\u0211\n\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\x05\t\u021F\n\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\t\x05\t\u0227\n\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\t\x03\t\x03\t\x03\t\x05" + + "\t\u023A\n\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\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07" + + "\t\u0251\n\t\f\t\x0E\t\u0254\v\t\x05\t\u0256\n\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0260\n\t\x03\t\x03\t\x05\t\u0264\n\t" + + "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u026F\n\t" + + "\f\t\x0E\t\u0272\v\t\x03\t\x03\t\x03\t\x05\t\u0277\n\t\x03\t\x03\t\x03" + + "\t\x05\t\u027C\n\t\x03\t\x03\t\x05\t\u0280\n\t\x03\t\x03\t\x03\t\x03\t" + + "\x05\t\u0286\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t\u028D\n\t\f\t\x0E" + + "\t\u0290\v\t\x03\t\x03\t\x03\t\x05\t\u0295\n\t\x03\t\x03\t\x05\t\u0299" + + "\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u02A0\n\t\x03\t\x03\t\x05\t\u02A4" + + "\n\t\x03\t\x03\t\x03\t\x03\t\x07\t\u02AA\n\t\f\t\x0E\t\u02AD\v\t\x03\t" + + "\x03\t\x05\t\u02B1\n\t\x03\t\x03\t\x05\t\u02B5\n\t\x03\t\x03\t\x05\t\u02B9" + + "\n\t\x03\t\x05\t\u02BC\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u02C3\n" + + "\t\x03\t\x03\t\x03\t\x03\t\x07\t\u02C9\n\t\f\t\x0E\t\u02CC\v\t\x03\t\x03" + + "\t\x05\t\u02D0\n\t\x03\t\x03\t\x05\t\u02D4\n\t\x03\t\x03\t\x05\t\u02D8" + + "\n\t\x03\t\x05\t\u02DB\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05" + + "\t\u02E4\n\t\x03\t\x03\t\x03\t\x07\t\u02E9\n\t\f\t\x0E\t\u02EC\v\t\x03" + + "\t\x03\t\x05\t\u02F0\n\t\x03\t\x03\t\x05\t\u02F4\n\t\x03\t\x03\t\x05\t" + + "\u02F8\n\t\x03\t\x05\t\u02FB\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05" + + "\t\u0303\n\t\x03\t\x05\t\u0306\n\t\x03\t\x03\t\x05\t\u030A\n\t\x03\t\x05" + + "\t\u030D\n\t\x03\t\x03\t\x03\t\x03\t\x07\t\u0313\n\t\f\t\x0E\t\u0316\v" + + "\t\x03\t\x03\t\x05\t\u031A\n\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\t\x03\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\t\x05\t\u0332\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0338" + + "\n\t\x05\t\u033A\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0340\n\t\x03\t\x03" + + "\t\x03\t\x03\t\x05\t\u0346\n\t\x05\t\u0348\n\t\x03\t\x03\t\x03\t\x03\t" + + "\x03\t\x03\t\x05\t\u0350\n\t\x05\t\u0352\n\t\x03\t\x03\t\x03\t\x03\t\x05" + + "\t\u0358\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u035E\n\t\x05\t\u0360\n\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\x05\t\u036F\n\t\x03\t\x03\t\x03\t\x05\t\u0374\n\t\x03\t\x03\t\x03\t" + + "\x03\t\x03\t\x05\t\u037B\n\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t" + + "\x03\t\x03\t\x03\t\x05\t\u0387\n\t\x05\t\u0389\n\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x05\t\u0391\n\t\x05\t\u0393\n\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\t\x07\t\u03A3" + + "\n\t\f\t\x0E\t\u03A6\v\t\x05\t\u03A8\n\t\x03\t\x03\t\x05\t\u03AC\n\t\x03" + + "\t\x03\t\x05\t\u03B0\n\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\t\x07\t\u03C0\n\t\f\t\x0E\t\u03C3" + + "\v\t\x05\t\u03C5\n\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\t\x05\t\u03D5\n\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x07\t\u03DD\n\t\f\t\x0E\t\u03E0\v\t\x03\t\x03\t\x05\t\u03E4" + + "\n\t\x03\t\x03\t\x03\t\x03\t\x05\t\u03EA\n\t\x03\t\x05\t\u03ED\n\t\x03" + + "\t\x03\t\x03\t\x03\t\x03\t\x06\t\u03F4\n\t\r\t\x0E\t\u03F5\x03\t\x03\t" + + "\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u0402\n\t\x03\n" + + "\x05\n\u0405\n\n\x03\n\x03\n\x03\v\x03\v\x05\v\u040B\n\v\x03\v\x03\v\x03" + + "\v\x07\v\u0410\n\v\f\v\x0E\v\u0413\v\v\x03\f\x03\f\x05\f\u0417\n\f\x03" + + "\r\x03\r\x03\r\x03\r\x05\r\u041D\n\r\x03\r\x03\r\x05\r\u0421\n\r\x03\r" + + "\x03\r\x05\r\u0425\n\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x05\x0E\u042B\n" + + "\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x07\x10\u0434" + + "\n\x10\f\x10\x0E\x10\u0437\v\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12" + + "\x03\x12\x05\x12\u043F\n\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03" + + "\x13\x07\x13\u0447\n\x13\f\x13\x0E\x13\u044A\v\x13\x05\x13\u044C\n\x13" + + "\x03\x13\x03\x13\x03\x13\x05\x13\u0451\n\x13\x05\x13\u0453\n\x13\x03\x13" + + "\x03\x13\x03\x13\x03\x13\x03\x13\x05\x13\u045A\n\x13\x03\x13\x03\x13\x03" + + "\x13\x03\x13\x05\x13\u0460\n\x13\x05\x13\u0462\n\x13\x03\x14\x03\x14\x05" + + "\x14\u0466\n\x14\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" + + "\x03\x16\x05\x16\u0470\n\x16\x03\x16\x03\x16\x03\x16\x03\x16\x05\x16\u0476" + + "\n\x16\x03\x16\x07\x16\u0479\n\x16\f\x16\x0E\x16\u047C\v\x16\x03\x17\x03" + + "\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x07\x17\u0485\n\x17\f\x17" + + "\x0E\x17\u0488\v\x17\x03\x17\x03\x17\x03\x17\x03\x17\x05\x17\u048E\n\x17" + + "\x03\x18\x03\x18\x05\x18\u0492\n\x18\x03\x18\x03\x18\x05\x18\u0496\n\x18" + + "\x03\x19\x03\x19\x05\x19\u049A\n\x19\x03\x19\x03\x19\x03\x19\x07\x19\u049F" + + "\n\x19\f\x19\x0E\x19\u04A2\v\x19\x03\x19\x03\x19\x03\x19\x03\x19\x07\x19" + + "\u04A8\n\x19\f\x19\x0E\x19\u04AB\v\x19\x05\x19\u04AD\n\x19\x03\x19\x03" + + "\x19\x05\x19\u04B1\n\x19\x03\x19\x03\x19\x03\x19\x05\x19\u04B6\n\x19\x03" + + "\x19\x03\x19\x05\x19\u04BA\n\x19\x03\x19\x03\x19\x03\x19\x03\x19\x07\x19" + + "\u04C0\n\x19\f\x19\x0E\x19\u04C3\v\x19\x05\x19\u04C5\n\x19\x03\x1A\x05" + + "\x1A\u04C8\n\x1A\x03\x1A\x03\x1A\x03\x1A\x07\x1A\u04CD\n\x1A\f\x1A\x0E" + + "\x1A\u04D0\v\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x07\x1B" + + "\u04D8\n\x1B\f\x1B\x0E\x1B\u04DB\v\x1B\x05\x1B\u04DD\n\x1B\x03\x1B\x03" + + "\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x07\x1B\u04E5\n\x1B\f\x1B\x0E\x1B" + + "\u04E8\v\x1B\x05\x1B\u04EA\n\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B" + + "\x03\x1B\x03\x1B\x07\x1B\u04F3\n\x1B\f\x1B\x0E\x1B\u04F6\v\x1B\x03\x1B" + + "\x03\x1B\x05\x1B\u04FA\n\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u0500" + + "\n\x1C\f\x1C\x0E\x1C\u0503\v\x1C\x05\x1C\u0505\n\x1C\x03\x1C\x03\x1C\x05" + + "\x1C\u0509\n\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E" + + "\x05\x1E\u0512\n\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x07\x1E\u0519" + + "\n\x1E\f\x1E\x0E\x1E\u051C\v\x1E\x05\x1E\u051E\n\x1E\x03\x1E\x03\x1E\x03" + + "\x1E\x03\x1E\x03\x1E\x07\x1E\u0525\n\x1E\f\x1E\x0E\x1E\u0528\v\x1E\x05" + + "\x1E\u052A\n\x1E\x03\x1E\x05\x1E\u052D\n\x1E\x03\x1F\x03\x1F\x05\x1F\u0531" + + "\n\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03!\x03!\x05" + + "!\u053C\n!\x03!\x05!\u053F\n!\x03!\x03!\x03!\x03!\x03!\x05!\u0546\n!\x03" + + "!\x05!\u0549\n!\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"" + + "\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x05\"\u055C\n\"\x07\"" + + "\u055E\n\"\f\"\x0E\"\u0561\v\"\x03#\x05#\u0564\n#\x03#\x03#\x05#\u0568" + + "\n#\x03#\x03#\x05#\u056C\n#\x03#\x03#\x05#\u0570\n#\x05#\u0572\n#\x03" + + "$\x03$\x03$\x03$\x03$\x03$\x03$\x07$\u057B\n$\f$\x0E$\u057E\v$\x03$\x03" + + "$\x05$\u0582\n$\x03%\x03%\x03%\x03%\x03%\x03%\x03%\x05%\u058B\n%\x03&" + + "\x03&\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x07\'\u0597\n\'" + + "\f\'\x0E\'\u059A\v\'\x05\'\u059C\n\'\x03\'\x03\'\x03\'\x03\'\x03\'\x07" + + "\'\u05A3\n\'\f\'\x0E\'\u05A6\v\'\x05\'\u05A8\n\'\x03\'\x03\'\x03\'\x03" + + "\'\x07\'\u05AE\n\'\f\'\x0E\'\u05B1\v\'\x05\'\u05B3\n\'\x03\'\x05\'\u05B6" + + "\n\'\x03\'\x03\'\x03\'\x05\'\u05BB\n\'\x03\'\x05\'\u05BE\n\'\x03\'\x03" + + "\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x07\'\u05C8\n\'\f\'\x0E\'\u05CB" + + "\v\'\x05\'\u05CD\n\'\x03\'\x03\'\x03\'\x03\'\x07\'\u05D3\n\'\f\'\x0E\'" + + "\u05D6\v\'\x03\'\x03\'\x05\'\u05DA\n\'\x03\'\x03\'\x05\'\u05DE\n\'\x05" + + "\'\u05E0\n\'\x05\'\u05E2\n\'\x03(\x03(\x03(\x03(\x03)\x03)\x03)\x03)\x03" + + ")\x03)\x03)\x03)\x03)\x05)\u05F1\n)\x05)\u05F3\n)\x03*\x03*\x03*\x03*" + + "\x03*\x03*\x03*\x03*\x03*\x05*\u05FE\n*\x03+\x03+\x03+\x03+\x03+\x03+" + + "\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x05" + + "+\u0613\n+\x03,\x03,\x03,\x03,\x03,\x03,\x07,\u061B\n,\f,\x0E,\u061E\v" + + ",\x03,\x03,\x03-\x03-\x03-\x03-\x03.\x03.\x05.\u0628\n.\x03.\x03.\x05" + + ".\u062C\n.\x05.\u062E\n.\x03/\x03/\x03/\x03/\x07/\u0634\n/\f/\x0E/\u0637" + + "\v/\x03/\x03/\x030\x030\x030\x030\x030\x030\x030\x030\x030\x030\x070\u0645" + + "\n0\f0\x0E0\u0648\v0\x030\x030\x030\x050\u064D\n0\x030\x030\x030\x030" + + "\x030\x030\x030\x030\x030\x050\u0658\n0\x031\x031\x032\x032\x032\x052" + + "\u065F\n2\x032\x032\x052\u0663\n2\x032\x032\x032\x032\x032\x032\x072\u066B" + + "\n2\f2\x0E2\u066E\v2\x033\x033\x033\x033\x033\x033\x033\x033\x033\x03" + + "3\x053\u067A\n3\x033\x033\x033\x033\x033\x033\x053\u0682\n3\x033\x033" + + "\x033\x033\x033\x073\u0689\n3\f3\x0E3\u068C\v3\x033\x033\x033\x053\u0691" + + "\n3\x033\x033\x033\x033\x033\x033\x053\u0699\n3\x033\x033\x033\x033\x05" + + "3\u069F\n3\x033\x033\x053\u06A3\n3\x033\x033\x033\x053\u06A8\n3\x033\x03" + + "3\x033\x053\u06AD\n3\x034\x034\x034\x034\x054\u06B3\n4\x034\x034\x034" + + "\x034\x034\x034\x034\x034\x034\x034\x034\x034\x074\u06C1\n4\f4\x0E4\u06C4" + + "\v4\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x03" + + "5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x065\u06DF\n" + + "5\r5\x0E5\u06E0\x035\x035\x035\x035\x035\x035\x035\x075\u06EA\n5\f5\x0E" + + "5\u06ED\v5\x035\x035\x035\x035\x035\x035\x035\x055\u06F6\n5\x035\x055" + + "\u06F9\n5\x035\x055\u06FC\n5\x035\x035\x035\x055\u0701\n5\x035\x035\x03" + + "5\x075\u0706\n5\f5\x0E5\u0709\v5\x055\u070B\n5\x035\x035\x035\x035\x03" + + "5\x075\u0712\n5\f5\x0E5\u0715\v5\x055\u0717\n5\x035\x035\x055\u071B\n" + + "5\x035\x055\u071E\n5\x035\x055\u0721\n5\x035\x035\x035\x035\x035\x035" + + "\x035\x035\x035\x035\x035\x075\u072E\n5\f5\x0E5\u0731\v5\x055\u0733\n" + "5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x03" + - "5\x035\x035\x035\x035\x065\u06B9\n5\r5\x0E5\u06BA\x035\x035\x035\x035" + - "\x035\x035\x035\x075\u06C4\n5\f5\x0E5\u06C7\v5\x035\x035\x035\x035\x03" + - "5\x035\x035\x055\u06D0\n5\x035\x055\u06D3\n5\x035\x055\u06D6\n5\x035\x03" + - "5\x035\x055\u06DB\n5\x035\x035\x035\x075\u06E0\n5\f5\x0E5\u06E3\v5\x05" + - "5\u06E5\n5\x035\x035\x035\x035\x035\x075\u06EC\n5\f5\x0E5\u06EF\v5\x05" + - "5\u06F1\n5\x035\x035\x055\u06F5\n5\x035\x055\u06F8\n5\x035\x055\u06FB" + - "\n5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x075\u0708" + - "\n5\f5\x0E5\u070B\v5\x055\u070D\n5\x035\x035\x035\x035\x035\x035\x035" + - "\x035\x035\x035\x035\x035\x035\x035\x035\x065\u071E\n5\r5\x0E5\u071F\x03" + - "5\x035\x055\u0724\n5\x035\x035\x035\x035\x065\u072A\n5\r5\x0E5\u072B\x03" + - "5\x035\x055\u0730\n5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x03" + - "5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x075\u0747\n" + - "5\f5\x0E5\u074A\v5\x055\u074C\n5\x035\x035\x035\x035\x035\x035\x035\x05" + - "5\u0755\n5\x035\x035\x035\x035\x055\u075B\n5\x035\x035\x035\x035\x055" + - "\u0761\n5\x035\x035\x035\x035\x055\u0767\n5\x035\x035\x035\x035\x035\x03" + - "5\x035\x035\x035\x035\x035\x055\u0774\n5\x035\x035\x035\x035\x035\x03" + - "5\x035\x055\u077D\n5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x03" + - "5\x035\x035\x035\x035\x035\x035\x035\x035\x075\u0791\n5\f5\x0E5\u0794" + - "\v5\x055\u0796\n5\x035\x055\u0799\n5\x035\x035\x035\x035\x035\x035\x03" + - "5\x035\x075\u07A3\n5\f5\x0E5\u07A6\v5\x036\x036\x037\x037\x037\x037\x05" + - "7\u07AE\n7\x038\x038\x038\x038\x058\u07B4\n8\x058\u07B6\n8\x039\x039\x03" + - "9\x039\x039\x039\x059\u07BE\n9\x03:\x03:\x03;\x03;\x03<\x03<\x03=\x03" + - "=\x05=\u07C8\n=\x03=\x03=\x03=\x03=\x05=\u07CE\n=\x03>\x03>\x03?\x03?" + - "\x03@\x03@\x03@\x03@\x03@\x03@\x07@\u07DA\n@\f@\x0E@\u07DD\v@\x03@\x03" + - "@\x03@\x03@\x03@\x03@\x05@\u07E5\n@\x03@\x03@\x03@\x03@\x03@\x05@\u07EC" + - "\n@\x03@\x03@\x03@\x05@\u07F1\n@\x03@\x03@\x03@\x03@\x03@\x05@\u07F8\n" + - "@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x05@\u0802\n@\x03@\x03@\x03" + - "@\x05@\u0807\n@\x03@\x03@\x03@\x03@\x03@\x05@\u080E\n@\x03@\x03@\x03@" + - "\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03" + - "@\x03@\x03@\x03@\x03@\x03@\x07@\u0826\n@\f@\x0E@\u0829\v@\x03@\x03@\x05" + - "@\u082D\n@\x05@\u082F\n@\x03@\x03@\x03@\x03@\x03@\x05@\u0836\n@\x07@\u0838" + - "\n@\f@\x0E@\u083B\v@\x03A\x03A\x03A\x03A\x05A\u0841\nA\x03B\x03B\x05B" + - "\u0845\nB\x03C\x03C\x03C\x03C\x03C\x03D\x03D\x03D\x03D\x03D\x03D\x03E" + - "\x03E\x03E\x03E\x05E\u0856\nE\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E" + - "\x03E\x03E\x03E\x07E\u0863\nE\fE\x0EE\u0866\vE\x03E\x03E\x03E\x03E\x05" + - "E\u086C\nE\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x05E\u0875\nE\x03E\x03E" + - "\x03E\x03E\x03E\x03E\x07E\u087D\nE\fE\x0EE\u0880\vE\x03E\x03E\x05E\u0884" + - "\nE\x03E\x03E\x03E\x03E\x03E\x07E\u088B\nE\fE\x0EE\u088E\vE\x03E\x03E" + - "\x05E\u0892\nE\x03F\x03F\x03F\x03F\x03F\x03F\x05F\u089A\nF\x03G\x03G\x03" + - "G\x03G\x07G\u08A0\nG\fG\x0EG\u08A3\vG\x05G\u08A5\nG\x03G\x03G\x03G\x03" + - "G\x05G\u08AB\nG\x03G\x05G\u08AE\nG\x03G\x03G\x03G\x03G\x03G\x05G\u08B5" + - "\nG\x03G\x03G\x03G\x03G\x07G\u08BB\nG\fG\x0EG\u08BE\vG\x05G\u08C0\nG\x03" + - "G\x03G\x03G\x03G\x07G\u08C6\nG\fG\x0EG\u08C9\vG\x05G\u08CB\nG\x03H\x03" + - "H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + - "H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x05H\u08E5\nH\x03I\x03I\x03" + - "I\x03I\x03I\x03I\x03I\x03I\x03I\x05I\u08F0\nI\x03J\x03J\x03J\x05J\u08F5" + - "\nJ\x03J\x03J\x03J\x03J\x03J\x07J\u08FC\nJ\fJ\x0EJ\u08FF\vJ\x03K\x03K" + - "\x03K\x03K\x03K\x03K\x03K\x03K\x07K\u0909\nK\fK\x0EK\u090C\vK"; + "5\x035\x065\u0744\n5\r5\x0E5\u0745\x035\x035\x055\u074A\n5\x035\x035\x03" + + "5\x035\x065\u0750\n5\r5\x0E5\u0751\x035\x035\x055\u0756\n5\x035\x035\x03" + + "5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x03" + + "5\x035\x035\x035\x035\x075\u076D\n5\f5\x0E5\u0770\v5\x055\u0772\n5\x03" + + "5\x035\x035\x035\x035\x035\x035\x055\u077B\n5\x035\x035\x035\x035\x05" + + "5\u0781\n5\x035\x035\x035\x035\x055\u0787\n5\x035\x035\x035\x035\x055" + + "\u078D\n5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x055" + + "\u079A\n5\x035\x035\x035\x035\x035\x035\x035\x055\u07A3\n5\x035\x035\x03" + + "5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x035\x03" + + "5\x035\x075\u07B7\n5\f5\x0E5\u07BA\v5\x055\u07BC\n5\x035\x055\u07BF\n" + + "5\x035\x035\x035\x035\x035\x035\x035\x035\x075\u07C9\n5\f5\x0E5\u07CC" + + "\v5\x036\x036\x037\x037\x037\x037\x057\u07D4\n7\x038\x038\x038\x038\x05" + + "8\u07DA\n8\x058\u07DC\n8\x039\x039\x039\x039\x039\x039\x059\u07E4\n9\x03" + + ":\x03:\x03;\x03;\x03<\x03<\x03=\x03=\x05=\u07EE\n=\x03=\x03=\x03=\x03" + + "=\x05=\u07F4\n=\x03>\x03>\x03?\x03?\x03@\x03@\x03@\x03@\x03@\x03@\x07" + + "@\u0800\n@\f@\x0E@\u0803\v@\x03@\x03@\x03@\x03@\x03@\x03@\x05@\u080B\n" + + "@\x03@\x03@\x03@\x03@\x03@\x05@\u0812\n@\x03@\x03@\x03@\x05@\u0817\n@" + + "\x03@\x03@\x03@\x03@\x03@\x05@\u081E\n@\x03@\x03@\x03@\x03@\x03@\x03@" + + "\x03@\x03@\x05@\u0828\n@\x03@\x03@\x03@\x05@\u082D\n@\x03@\x03@\x03@\x03" + + "@\x03@\x05@\u0834\n@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03" + + "@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x03@\x07@\u084C" + + "\n@\f@\x0E@\u084F\v@\x03@\x03@\x05@\u0853\n@\x05@\u0855\n@\x03@\x03@\x03" + + "@\x03@\x03@\x05@\u085C\n@\x07@\u085E\n@\f@\x0E@\u0861\v@\x03A\x03A\x03" + + "A\x03A\x05A\u0867\nA\x03B\x03B\x05B\u086B\nB\x03C\x03C\x03C\x03C\x03C" + + "\x03D\x03D\x03D\x03D\x03D\x03D\x03E\x03E\x03E\x03E\x05E\u087C\nE\x03E" + + "\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x07E\u0889\nE\fE\x0E" + + "E\u088C\vE\x03E\x03E\x03E\x03E\x05E\u0892\nE\x03E\x03E\x03E\x03E\x03E" + + "\x03E\x03E\x05E\u089B\nE\x03E\x03E\x03E\x03E\x03E\x03E\x07E\u08A3\nE\f" + + "E\x0EE\u08A6\vE\x03E\x03E\x05E\u08AA\nE\x03E\x03E\x03E\x03E\x03E\x07E" + + "\u08B1\nE\fE\x0EE\u08B4\vE\x03E\x03E\x05E\u08B8\nE\x03F\x03F\x03F\x03" + + "F\x03F\x03F\x05F\u08C0\nF\x03G\x03G\x03G\x03G\x07G\u08C6\nG\fG\x0EG\u08C9" + + "\vG\x05G\u08CB\nG\x03G\x03G\x03G\x03G\x05G\u08D1\nG\x03G\x05G\u08D4\n" + + "G\x03G\x03G\x03G\x03G\x03G\x05G\u08DB\nG\x03G\x03G\x03G\x03G\x07G\u08E1" + + "\nG\fG\x0EG\u08E4\vG\x05G\u08E6\nG\x03G\x03G\x03G\x03G\x07G\u08EC\nG\f" + + "G\x0EG\u08EF\vG\x05G\u08F1\nG\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H" + + "\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03" + + "H\x03H\x03H\x05H\u090B\nH\x03I"; private static readonly _serializedATNSegment1: string = - "\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x05K\u091A" + - "\nK\x03L\x03L\x05L\u091E\nL\x03L\x03L\x05L\u0922\nL\x03L\x03L\x05L\u0926" + - "\nL\x03L\x03L\x03L\x03L\x05L\u092C\nL\x03L\x03L\x05L\u0930\nL\x03L\x03" + - "L\x05L\u0934\nL\x03L\x03L\x05L\u0938\nL\x05L\u093A\nL\x03M\x03M\x03M\x03" + - "M\x03N\x03N\x03N\x03N\x05N\u0944\nN\x03O\x03O\x03O\x03O\x03O\x05O\u094B" + - "\nO\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x05P\u0954\nP\x03Q\x03Q\x03Q\x03" + - "Q\x03Q\x05Q\u095B\nQ\x03R\x03R\x03R\x03R\x03R\x05R\u0962\nR\x03S\x03S" + - "\x03S\x07S\u0967\nS\fS\x0ES\u096A\vS\x03T\x03T\x03U\x03U\x03U\x07U\u0971" + - "\nU\fU\x0EU\u0974\vU\x03V\x03V\x03V\x05V\u0979\nV\x03W\x03W\x03W\x03W" + - "\x03W\x05W\u0980\nW\x03X\x03X\x03X\x07X\u0985\nX\fX\x0EX\u0988\vX\x03" + - "Y\x03Y\x03Y\x03Y\x03Y\x05Y\u098F\nY\x03Z\x05Z\u0992\nZ\x03Z\x03Z\x05Z" + - "\u0996\nZ\x03Z\x03Z\x05Z\u099A\nZ\x03Z\x05Z\u099D\nZ\x03[\x03[\x03[\x02" + - "\x02\t*Bbfh~\x92\\\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\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02" + - "x\x02z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C" + - "\x02\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E" + - "\x02\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0" + - "\x02\xB2\x02\xB4\x02\x02\x1E\x04\x02$$\xBB\xBB\x04\x02??rr\x04\x02\xC5" + - "\xC5\xD6\xD6\x04\x02ZZii\x04\x02MMjj\x03\x02\xC2\xC3\x04\x02VV\x8D\x8D" + - "\x04\x02\u0107\u0107\u010B\u010B\x04\x02LL\xE7\xE7\x04\x02\x1D\x1DAA\x04" + - "\x02VVxx\x04\x02\x16\x16DD\x04\x02 \xD5\xD5\x04\x02kk\xC9\xC9\x03\x02" + - "\u0101\u0102\x03\x02\u0103\u0105\x04\x02UU\xC4\xC4\x03\x02\xFB\u0100\x05" + - "\x02\x16\x16\x1A\x1A\xD0\xD0\x04\x02RR\xE1\xE1\x07\x02<\u0511\x03\x02\x02\x02@\u0522\x03\x02\x02\x02B\u0524\x03\x02\x02\x02" + - "D\u054B\x03\x02\x02\x02F\u055B\x03\x02\x02\x02H\u055D\x03\x02\x02\x02" + - "J\u0566\x03\x02\x02\x02L\u0568\x03\x02\x02\x02N\u05BD\x03\x02\x02\x02" + - "P\u05CC\x03\x02\x02\x02R\u05D7\x03\x02\x02\x02T\u05EC\x03\x02\x02\x02" + - "V\u05EE\x03\x02\x02\x02X\u05FB\x03\x02\x02\x02Z\u05FF\x03\x02\x02\x02" + - "\\\u0609\x03\x02\x02\x02^\u0631\x03\x02\x02\x02`\u0633\x03\x02\x02\x02" + - "b\u063C\x03\x02\x02\x02d\u0686\x03\x02\x02\x02f\u068C\x03\x02\x02\x02" + - "h\u0798\x03\x02\x02\x02j\u07A7\x03\x02\x02\x02l\u07AD\x03\x02\x02\x02" + - "n\u07B5\x03\x02\x02\x02p\u07BD\x03\x02\x02\x02r\u07BF\x03\x02\x02\x02" + - "t\u07C1\x03\x02\x02\x02v\u07C3\x03\x02\x02\x02x\u07C5\x03\x02\x02\x02" + - "z\u07CF\x03\x02\x02\x02|\u07D1\x03\x02\x02\x02~\u082E\x03\x02\x02\x02" + - "\x80\u0840\x03\x02\x02\x02\x82\u0844\x03\x02\x02\x02\x84\u0846\x03\x02" + - "\x02\x02\x86\u084B\x03\x02\x02\x02\x88\u0891\x03\x02\x02\x02\x8A\u0893" + - "\x03\x02\x02\x02\x8C\u08A4\x03\x02\x02\x02\x8E\u08E4\x03\x02\x02\x02\x90" + - "\u08EF\x03\x02\x02\x02\x92\u08F1\x03\x02\x02\x02\x94\u0919\x03\x02\x02" + - "\x02\x96\u0939\x03\x02\x02\x02\x98\u093B\x03\x02\x02\x02\x9A\u0943\x03" + - "\x02\x02\x02\x9C\u094A\x03\x02\x02\x02\x9E\u0953\x03\x02\x02\x02\xA0\u095A" + - "\x03\x02\x02\x02\xA2\u0961\x03\x02\x02\x02\xA4\u0963\x03\x02\x02\x02\xA6" + - "\u096B\x03\x02\x02\x02\xA8\u096D\x03\x02\x02\x02\xAA\u0978\x03\x02\x02" + - "\x02\xAC\u097F\x03\x02\x02\x02\xAE\u0981\x03\x02\x02\x02\xB0\u098E\x03" + - "\x02\x02\x02\xB2\u099C\x03\x02\x02\x02\xB4\u099E\x03\x02\x02\x02\xB6\xB8" + - "\x05\x04\x03\x02\xB7\xB6\x03\x02\x02\x02\xB8\xBB\x03\x02\x02\x02\xB9\xB7" + - "\x03\x02\x02\x02\xB9\xBA\x03\x02\x02\x02\xBA\xBC\x03\x02\x02\x02\xBB\xB9" + - "\x03\x02\x02\x02\xBC\xBD\x07\x02\x02\x03\xBD\x03\x03\x02\x02\x02\xBE\xC4" + - "\x05\x06\x04\x02\xBF\xC4\x05\b\x05\x02\xC0\xC4\x05\n\x06\x02\xC1\xC4\x05" + - "\f\x07\x02\xC2\xC4\x05\x0E\b\x02\xC3\xBE\x03\x02\x02\x02\xC3\xBF\x03\x02" + - "\x02\x02\xC3\xC0\x03\x02\x02\x02\xC3\xC1\x03\x02\x02\x02\xC3\xC2\x03\x02" + - "\x02\x02\xC4\x05\x03\x02\x02\x02\xC5\xC7\x05\x10\t\x02\xC6\xC8\x07\u0112" + - "\x02\x02\xC7\xC6\x03\x02\x02\x02\xC7\xC8\x03\x02\x02\x02\xC8\x07\x03\x02" + - "\x02\x02\xC9\xCB\x05`1\x02\xCA\xCC\x07\u0112\x02\x02\xCB\xCA\x03\x02\x02" + - "\x02\xCB\xCC\x03\x02\x02\x02\xCC\t\x03\x02\x02\x02\xCD\xCF\x05\xA4S\x02" + - "\xCE\xD0\x07\u0112\x02\x02\xCF\xCE\x03\x02\x02\x02\xCF\xD0\x03\x02\x02" + - "\x02\xD0\v\x03\x02\x02\x02\xD1\xD3\x05~@\x02\xD2\xD4\x07\u0112\x02\x02" + - "\xD3\xD2\x03\x02\x02\x02\xD3\xD4\x03\x02\x02\x02\xD4\r\x03\x02\x02\x02" + - "\xD5\xD7\x05\x92J\x02\xD6\xD8\x07\u0112\x02\x02\xD7\xD6\x03\x02\x02\x02" + - "\xD7\xD8\x03\x02\x02\x02\xD8\x0F\x03\x02\x02\x02\xD9\u03DC\x05\x12\n\x02" + - "\xDA\xDB\x07\xEB\x02\x02\xDB\u03DC\x05\xB0Y\x02\xDC\xDD\x07\xEB\x02\x02" + - "\xDD\xDE\x05\xB0Y\x02\xDE\xDF\x07\x03\x02\x02\xDF\xE0\x05\xB0Y\x02\xE0" + - "\u03DC\x03\x02\x02\x02\xE1\xE2\x07.\x02\x02\xE2\xE6\x07\xC5\x02\x02\xE3" + - "\xE4\x07g\x02\x02\xE4\xE5\x07\x95\x02\x02\xE5\xE7\x07O\x02\x02\xE6\xE3" + - "\x03\x02\x02\x02\xE6\xE7\x03\x02\x02\x02\xE7\xE8\x03\x02\x02\x02\xE8\xEB" + - "\x05\xA8U\x02\xE9\xEA\x07\x1F\x02\x02\xEA\xEC\x05\xACW\x02\xEB\xE9\x03" + - "\x02\x02\x02\xEB\xEC\x03\x02\x02\x02\xEC\xEF\x03\x02\x02\x02\xED\xEE\x07" + - "\xF5\x02\x02\xEE\xF0\x05\x1C\x0F\x02\xEF\xED\x03\x02\x02\x02\xEF\xF0\x03" + - "\x02\x02\x02\xF0\u03DC\x03\x02\x02\x02\xF1\xF2\x07G\x02\x02\xF2\xF5\x07" + - "\xC5\x02\x02\xF3\xF4\x07g\x02\x02\xF4\xF6\x07O\x02\x02\xF5\xF3\x03\x02" + - "\x02\x02\xF5\xF6\x03\x02\x02\x02\xF6\xF7\x03\x02\x02\x02\xF7\xF9\x05\xA8" + - "U\x02\xF8\xFA\t\x02\x02\x02\xF9\xF8\x03\x02\x02\x02\xF9\xFA\x03\x02\x02" + - "\x02\xFA\u03DC\x03\x02\x02\x02\xFB\xFC\x07\x17\x02\x02\xFC\xFD\x07\xC5" + - "\x02\x02\xFD\xFE\x05\xA8U\x02\xFE\xFF\x07\xB6\x02\x02\xFF\u0100\x07\xDE" + - "\x02\x02\u0100\u0101\x05\xB0Y\x02\u0101\u03DC\x03\x02\x02\x02\u0102\u0103" + - "\x07\x17\x02\x02\u0103\u0104\x07\xC5\x02\x02\u0104\u0105\x05\xA8U\x02" + - "\u0105\u0106\x07\xCD\x02\x02\u0106\u0107\x07\x1F\x02\x02\u0107\u0108\x05" + - "\xACW\x02\u0108\u03DC\x03\x02\x02\x02\u0109\u010A\x07.\x02\x02\u010A\u010E" + - "\x07\xD6\x02\x02\u010B\u010C\x07g\x02\x02\u010C\u010D\x07\x95\x02\x02" + - "\u010D\u010F\x07O\x02\x02\u010E\u010B\x03\x02\x02\x02\u010E\u010F\x03" + - "\x02\x02\x02\u010F\u0110\x03\x02\x02\x02\u0110\u0112\x05\xA8U\x02\u0111" + - "\u0113\x05\\/\x02\u0112\u0111\x03\x02\x02\x02\u0112\u0113\x03\x02\x02" + - "\x02\u0113\u0116\x03\x02\x02\x02\u0114\u0115\x07*\x02\x02\u0115\u0117" + - "\x05n8\x02\u0116\u0114\x03\x02\x02\x02\u0116\u0117\x03\x02\x02\x02\u0117" + - "\u011A\x03\x02\x02\x02\u0118\u0119\x07\xF5\x02\x02\u0119\u011B\x05\x1C" + - "\x0F\x02\u011A\u0118\x03\x02\x02\x02\u011A\u011B\x03\x02\x02\x02\u011B" + - "\u011C\x03\x02\x02\x02\u011C\u0122\x07\x1C\x02\x02\u011D\u0123\x05\x12" + - "\n\x02\u011E\u011F\x07\x04\x02\x02\u011F\u0120\x05\x12\n\x02\u0120\u0121" + - "\x07\x05\x02\x02\u0121\u0123\x03\x02\x02\x02\u0122\u011D\x03\x02\x02\x02" + - "\u0122\u011E\x03\x02\x02\x02\u0123\u0129\x03\x02\x02\x02\u0124\u0126\x07" + - "\xF5\x02\x02\u0125\u0127\x07\x92\x02\x02\u0126\u0125\x03\x02\x02\x02\u0126" + - "\u0127\x03\x02\x02\x02\u0127\u0128\x03\x02\x02\x02\u0128\u012A\x07:\x02" + - "\x02\u0129\u0124\x03\x02\x02\x02\u0129\u012A\x03\x02\x02\x02\u012A\u03DC" + - "\x03\x02\x02\x02\u012B\u012C\x07.\x02\x02\u012C\u0130\x07\xD6\x02\x02" + - "\u012D\u012E\x07g\x02\x02\u012E\u012F\x07\x95\x02\x02\u012F\u0131\x07" + - "O\x02\x02\u0130\u012D\x03\x02\x02\x02\u0130\u0131\x03\x02\x02\x02\u0131" + - "\u0132\x03\x02\x02\x02\u0132\u0133\x05\xA8U\x02\u0133\u0134\x07\x04\x02" + - "\x02\u0134\u0139\x05\x16\f\x02\u0135\u0136\x07\x06\x02\x02\u0136\u0138" + - "\x05\x16\f\x02\u0137\u0135\x03\x02\x02\x02\u0138\u013B\x03\x02\x02\x02" + - "\u0139\u0137\x03\x02\x02\x02\u0139\u013A\x03\x02\x02\x02\u013A\u013C\x03" + - "\x02\x02\x02\u013B\u0139\x03\x02\x02\x02\u013C\u013F\x07\x05\x02\x02\u013D" + - "\u013E\x07*\x02\x02\u013E\u0140\x05n8\x02\u013F\u013D\x03\x02\x02\x02" + - "\u013F\u0140\x03\x02\x02\x02\u0140\u0143\x03\x02\x02\x02\u0141\u0142\x07" + - "\xF5\x02\x02\u0142\u0144\x05\x1C\x0F\x02\u0143\u0141\x03\x02\x02\x02\u0143" + - "\u0144\x03\x02\x02\x02\u0144\u03DC\x03\x02\x02\x02\u0145\u0146\x07G\x02" + - "\x02\u0146\u0149\x07\xD6\x02\x02\u0147\u0148\x07g\x02\x02\u0148\u014A" + - "\x07O\x02\x02\u0149\u0147\x03\x02\x02\x02\u0149\u014A\x03\x02\x02\x02" + - "\u014A\u014B\x03\x02\x02\x02\u014B\u03DC\x05\xA8U\x02\u014C\u014D\x07" + - "n\x02\x02\u014D\u014E\x07q\x02\x02\u014E\u0150\x05\xA8U\x02\u014F\u0151" + - "\x05\\/\x02\u0150\u014F\x03\x02\x02\x02\u0150\u0151\x03\x02\x02\x02\u0151" + - "\u0152\x03\x02\x02\x02\u0152\u0153\x05\x12\n\x02\u0153\u03DC\x03\x02\x02" + - "\x02\u0154\u0155\x07@\x02\x02\u0155\u0156\x07Z\x02\x02\u0156\u0159\x05" + - "\xA8U\x02\u0157\u0158\x07\xF3\x02\x02\u0158\u015A\x05b2\x02\u0159\u0157" + - "\x03\x02\x02\x02\u0159\u015A\x03\x02\x02\x02\u015A\u03DC\x03\x02\x02\x02" + - "\u015B\u015C\x07\xE0\x02\x02\u015C\u015D\x07\xD6\x02\x02\u015D\u03DC\x05" + - "\xA8U\x02\u015E\u015F\x07\x17\x02\x02\u015F\u0162\x07\xD6\x02\x02\u0160" + - "\u0161\x07g\x02\x02\u0161\u0163\x07O\x02\x02\u0162\u0160\x03\x02\x02\x02" + - "\u0162\u0163\x03\x02\x02\x02\u0163\u0164\x03\x02\x02\x02\u0164\u0165\x05" + - "\xA8U\x02\u0165\u0166\x07\xB6\x02\x02\u0166\u0167\x07\xDE\x02\x02\u0167" + - "\u0168\x05\xA8U\x02\u0168\u03DC\x03\x02\x02\x02\u0169\u016A\x07*\x02\x02" + - "\u016A\u016B\x07\x9B\x02\x02\u016B\u016C\x07\xD6\x02\x02\u016C\u016D\x05" + - "\xA8U\x02\u016D\u0170\x07t\x02\x02\u016E\u0171\x05n8\x02\u016F\u0171\x07" + - "\x96\x02\x02\u0170\u016E\x03\x02\x02\x02\u0170\u016F\x03\x02\x02\x02\u0171" + - "\u03DC\x03\x02\x02\x02\u0172\u0173\x07*\x02\x02\u0173\u0174\x07\x9B\x02" + - "\x02\u0174\u0175\x07(\x02\x02\u0175\u0176\x05\xA8U\x02\u0176\u0179\x07" + - "t\x02\x02\u0177\u017A\x05n8\x02\u0178\u017A\x07\x96\x02\x02\u0179\u0177" + - "\x03\x02\x02\x02\u0179\u0178\x03\x02\x02\x02\u017A\u03DC\x03\x02\x02\x02" + - "\u017B\u017C\x07\x17\x02\x02\u017C\u017F\x07\xD6\x02\x02\u017D\u017E\x07" + - "g\x02\x02\u017E\u0180\x07O\x02\x02\u017F\u017D\x03\x02\x02\x02\u017F\u0180" + - "\x03\x02\x02\x02\u0180\u0181\x03\x02\x02\x02\u0181\u0182\x05\xA8U\x02" + - "\u0182\u0183\x07\xB6\x02\x02\u0183\u0186\x07(\x02\x02\u0184\u0185\x07" + - "g\x02\x02\u0185\u0187\x07O\x02\x02\u0186\u0184\x03\x02\x02\x02\u0186\u0187" + - "\x03\x02\x02\x02\u0187\u0188\x03\x02\x02\x02\u0188\u0189\x05\xB0Y\x02" + - "\u0189\u018A\x07\xDE\x02\x02\u018A\u018B\x05\xB0Y\x02\u018B\u03DC\x03" + - "\x02\x02\x02\u018C\u018D\x07\x17\x02\x02\u018D\u0190\x07\xD6\x02\x02\u018E" + - "\u018F\x07g\x02\x02\u018F\u0191\x07O\x02\x02\u0190\u018E\x03\x02\x02\x02" + - "\u0190\u0191\x03\x02\x02\x02\u0191\u0192\x03\x02\x02\x02\u0192\u0193\x05" + - "\xA8U\x02\u0193\u0194\x07G\x02\x02\u0194\u0197\x07(\x02\x02\u0195\u0196" + - "\x07g\x02\x02\u0196\u0198\x07O\x02\x02\u0197\u0195\x03\x02\x02\x02\u0197" + - "\u0198\x03\x02\x02\x02\u0198\u0199\x03\x02\x02\x02\u0199\u019A\x05\xA8" + - "U\x02\u019A\u03DC\x03\x02\x02\x02\u019B\u019C\x07\x17\x02\x02\u019C\u019F" + - "\x07\xD6\x02\x02\u019D\u019E\x07g\x02\x02\u019E\u01A0\x07O\x02\x02\u019F" + - "\u019D\x03\x02\x02\x02\u019F\u01A0\x03\x02\x02\x02\u01A0\u01A1\x03\x02" + - "\x02\x02\u01A1\u01A2\x05\xA8U\x02\u01A2\u01A3\x07\x13\x02\x02\u01A3\u01A7" + - "\x07(\x02\x02\u01A4\u01A5\x07g\x02\x02\u01A5\u01A6\x07\x95\x02\x02\u01A6" + - "\u01A8\x07O\x02\x02\u01A7\u01A4\x03\x02\x02\x02\u01A7\u01A8\x03\x02\x02" + - "\x02\u01A8\u01A9\x03\x02\x02\x02\u01A9\u01AA\x05\x18\r\x02\u01AA\u03DC" + - "\x03\x02\x02\x02\u01AB\u01AC\x07\x17\x02\x02\u01AC\u01AD\x07\xD6\x02\x02" + - "\u01AD\u01AE\x05\xA8U\x02\u01AE\u01AF\x07\xCD\x02\x02\u01AF\u01B0\x07" + - "\x1F\x02\x02\u01B0\u01B1\x05\xACW\x02\u01B1\u03DC\x03\x02\x02\x02\u01B2" + - "\u01B3\x07\x17\x02\x02\u01B3\u01B4\x07\xD6\x02\x02\u01B4\u01B5\x05\xA8" + - "U\x02\u01B5\u01B6\x07\xCD\x02\x02\u01B6\u01B7\x07\xB1\x02\x02\u01B7\u01B8" + - "\x05\x1E\x10\x02\u01B8\u03DC\x03\x02\x02\x02\u01B9\u01BA\x07\x17\x02\x02" + - "\u01BA\u01BB\x07\xD6\x02\x02\u01BB\u01BC\x05\xA8U\x02\u01BC\u01BD\x07" + - "N\x02\x02\u01BD\u01CA\x05\xB0Y\x02\u01BE\u01C7\x07\x04\x02\x02\u01BF\u01C4" + - "\x05\xA0Q\x02\u01C0\u01C1\x07\x06\x02\x02\u01C1\u01C3\x05\xA0Q\x02\u01C2" + - "\u01C0\x03\x02\x02\x02\u01C3\u01C6\x03\x02\x02\x02\u01C4\u01C2\x03\x02" + - "\x02\x02\u01C4\u01C5\x03\x02\x02\x02\u01C5\u01C8\x03\x02\x02\x02\u01C6" + - "\u01C4\x03\x02\x02\x02\u01C7\u01BF\x03\x02\x02\x02\u01C7\u01C8\x03\x02" + - "\x02\x02\u01C8\u01C9\x03\x02\x02\x02\u01C9\u01CB\x07\x05\x02\x02\u01CA" + - "\u01BE\x03\x02\x02\x02\u01CA\u01CB\x03\x02\x02\x02\u01CB\u01CE\x03\x02" + - "\x02\x02\u01CC\u01CD\x07\xF3\x02\x02\u01CD\u01CF\x05b2\x02\u01CE\u01CC" + - "\x03\x02\x02\x02\u01CE\u01CF\x03\x02\x02\x02\u01CF\u03DC\x03\x02\x02\x02" + - "\u01D0\u01D1\x07\x18\x02\x02\u01D1\u01D4\x05\xA8U\x02\u01D2\u01D3\x07" + - "\xF5\x02\x02\u01D3\u01D5\x05\x1C\x0F\x02\u01D4\u01D2\x03\x02\x02\x02\u01D4" + - "\u01D5\x03\x02\x02\x02\u01D5\u03DC\x03\x02\x02\x02\u01D6\u01D9\x07.\x02" + - "\x02\u01D7\u01D8\x07\x9F\x02\x02\u01D8\u01DA\x07\xB8\x02\x02\u01D9\u01D7" + - "\x03\x02\x02\x02\u01D9\u01DA\x03\x02\x02\x02\u01DA\u01DB\x03\x02\x02\x02" + - "\u01DB\u01DC\x07\x87\x02\x02\u01DC\u01E0\x07\xF1\x02\x02\u01DD\u01DE\x07" + - "g\x02\x02\u01DE\u01DF\x07\x95\x02\x02\u01DF\u01E1\x07O\x02\x02\u01E0\u01DD" + - "\x03\x02\x02\x02\u01E0\u01E1\x03\x02\x02\x02\u01E1\u01E2\x03\x02\x02\x02" + - "\u01E2\u01E5\x05\xA8U\x02\u01E3\u01E4\x07*\x02\x02\u01E4\u01E6\x05n8\x02" + - "\u01E5\u01E3\x03\x02\x02\x02\u01E5\u01E6\x03\x02\x02\x02\u01E6\u01E9\x03" + - "\x02\x02\x02\u01E7\u01E8\x07\xF5\x02\x02\u01E8\u01EA\x05\x1C\x0F\x02\u01E9" + - "\u01E7\x03\x02\x02\x02\u01E9\u01EA\x03\x02\x02\x02\u01EA\u01EB\x03\x02" + - "\x02\x02\u01EB\u01EC\x07\x1C\x02\x02\u01EC\u01ED\x05\x12\n\x02\u01ED\u03DC" + - "\x03\x02\x02\x02\u01EE\u01F1\x07.\x02\x02\u01EF\u01F0\x07\x9F\x02\x02" + - "\u01F0\u01F2\x07\xB8\x02\x02\u01F1\u01EF\x03\x02\x02\x02\u01F1\u01F2\x03" + - "\x02\x02\x02\u01F2\u01F3\x03\x02\x02\x02\u01F3\u01F4\x07\xF1\x02\x02\u01F4" + - "\u01F7\x05\xA8U\x02\u01F5\u01F6\x07*\x02\x02\u01F6\u01F8\x05n8\x02\u01F7" + - "\u01F5\x03\x02\x02\x02\u01F7\u01F8\x03\x02\x02\x02\u01F8\u01FB\x03\x02" + - "\x02\x02\u01F9\u01FA\x07\xC8\x02\x02\u01FA\u01FC\t\x03\x02\x02\u01FB\u01F9" + - "\x03\x02\x02\x02\u01FB\u01FC\x03\x02\x02\x02\u01FC\u01FD\x03\x02\x02\x02" + - "\u01FD\u01FE\x07\x1C\x02\x02\u01FE\u01FF\x05\x12\n\x02\u01FF\u03DC\x03" + - "\x02\x02\x02\u0200\u0201\x07\xB5\x02\x02\u0201\u0202\x07\x87\x02\x02\u0202" + - "\u0203\x07\xF1\x02\x02\u0203\u03DC\x05\xA8U\x02\u0204\u0205\x07G\x02\x02" + - "\u0205\u0206\x07\x87\x02\x02\u0206\u0209\x07\xF1\x02\x02\u0207\u0208\x07" + - "g\x02\x02\u0208\u020A\x07O\x02\x02\u0209\u0207\x03\x02\x02\x02\u0209\u020A" + - "\x03\x02\x02\x02\u020A\u020B\x03\x02\x02\x02\u020B\u03DC\x05\xA8U\x02" + - "\u020C\u020D\x07\x17\x02\x02\u020D\u020E\x07\x87\x02\x02\u020E\u0211\x07" + - "\xF1\x02\x02\u020F\u0210\x07g\x02\x02\u0210\u0212\x07O\x02\x02\u0211\u020F" + - "\x03\x02\x02\x02\u0211\u0212\x03\x02\x02\x02\u0212\u0213\x03\x02\x02\x02" + - "\u0213\u0214\x05\xA8U\x02\u0214\u0215\x07\xB6\x02\x02\u0215\u0216\x07" + - "\xDE\x02\x02\u0216\u0217\x05\xA8U\x02\u0217\u03DC\x03\x02\x02\x02\u0218" + - "\u0219\x07\x17\x02\x02\u0219\u021A\x07\x87\x02\x02\u021A\u021B\x07\xF1" + - "\x02\x02\u021B\u021C\x05\xA8U\x02\u021C\u021D\x07\xCD\x02\x02\u021D\u021E" + - "\x07\xB1\x02\x02\u021E\u021F\x05\x1E\x10\x02\u021F\u03DC\x03\x02\x02\x02" + - "\u0220\u0221\x07G\x02\x02\u0221\u0224\x07\xF1\x02\x02\u0222\u0223\x07" + - "g\x02\x02\u0223\u0225\x07O\x02\x02\u0224\u0222\x03\x02\x02\x02\u0224\u0225" + - "\x03\x02\x02\x02\u0225\u0226\x03\x02\x02\x02\u0226\u03DC\x05\xA8U\x02" + - "\u0227\u0228\x07\x17\x02\x02\u0228\u0229\x07\xF1\x02\x02\u0229\u022A\x05" + - "\xA8U\x02\u022A\u022B\x07\xB6\x02\x02\u022B\u022C\x07\xDE\x02\x02\u022C" + - "\u022D\x05\xA8U\x02\u022D\u03DC\x03\x02\x02\x02\u022E\u022F\x07\x17\x02" + - "\x02\u022F\u0230\x07\xF1\x02\x02\u0230\u0231\x05\xA8U\x02\u0231\u0232" + - "\x07\xCD\x02\x02\u0232\u0233\x07\x1F\x02\x02\u0233\u0234\x05\xACW\x02" + - "\u0234\u03DC\x03\x02\x02\x02\u0235\u0236\x07#\x02\x02\u0236\u0237\x05" + - "\xA8U\x02\u0237\u0240\x07\x04\x02\x02\u0238\u023D\x05\xA0Q\x02\u0239\u023A" + - "\x07\x06\x02\x02\u023A\u023C\x05\xA0Q\x02\u023B\u0239\x03\x02\x02\x02" + - "\u023C\u023F\x03\x02\x02\x02\u023D\u023B\x03\x02\x02\x02\u023D\u023E\x03" + - "\x02\x02\x02\u023E\u0241\x03\x02\x02\x02\u023F\u023D\x03\x02\x02\x02\u0240" + - "\u0238\x03\x02\x02\x02\u0240\u0241\x03\x02\x02\x02\u0241\u0242\x03\x02" + - "\x02\x02\u0242\u0243\x07\x05\x02\x02\u0243\u03DC\x03\x02\x02\x02\u0244" + - "\u0245\x07.\x02\x02\u0245\u0246\x07\xBE\x02\x02\u0246\u024A\x05\xB0Y\x02" + - "\u0247\u0248\x07\xF5\x02\x02\u0248\u0249\x07\x14\x02\x02\u0249\u024B\x05" + - "\xAAV\x02\u024A\u0247\x03\x02\x02\x02\u024A\u024B\x03\x02\x02\x02\u024B" + - "\u024E\x03\x02\x02\x02\u024C\u024D\x07i\x02\x02\u024D\u024F\x05\xB0Y\x02" + - "\u024E\u024C\x03\x02\x02\x02\u024E\u024F\x03\x02\x02\x02\u024F\u03DC\x03" + - "\x02\x02\x02\u0250\u0251\x07G\x02\x02\u0251\u0252\x07\xBE\x02\x02\u0252" + - "\u03DC\x05\xB0Y\x02\u0253\u0254\x07]\x02\x02\u0254\u0255\x05\xAEX\x02" + - "\u0255\u0256\x07\xDE\x02\x02\u0256\u025B\x05\xACW\x02\u0257\u0258\x07" + - "\x06\x02\x02\u0258\u025A\x05\xACW\x02\u0259\u0257\x03\x02\x02\x02\u025A" + - "\u025D\x03\x02\x02\x02\u025B\u0259\x03\x02\x02\x02\u025B\u025C\x03\x02" + - "\x02\x02\u025C\u0261\x03\x02\x02\x02\u025D\u025B\x03\x02\x02\x02\u025E" + - "\u025F\x07\xF5\x02\x02\u025F\u0260\x07\x14\x02\x02\u0260\u0262\x07\x9E" + - "\x02\x02\u0261\u025E\x03\x02\x02\x02\u0261\u0262\x03\x02\x02\x02\u0262" + - "\u0266\x03\x02\x02\x02\u0263\u0264\x07^\x02\x02\u0264\u0265\x07\"\x02" + - "\x02\u0265\u0267\x05\xAAV\x02\u0266\u0263\x03\x02\x02\x02\u0266\u0267" + - "\x03\x02\x02\x02\u0267\u026A\x03\x02\x02\x02\u0268\u0269\x07i\x02\x02" + - "\u0269\u026B\x05\xB0Y\x02\u026A\u0268\x03\x02\x02\x02\u026A\u026B\x03" + - "\x02\x02\x02\u026B\u03DC\x03\x02\x02\x02\u026C\u0270\x07\xBC\x02\x02\u026D" + - "\u026E\x07\x14\x02\x02\u026E\u026F\x07\x9E\x02\x02\u026F\u0271\x07X\x02" + - "\x02\u0270\u026D\x03\x02\x02\x02\u0270\u0271\x03\x02\x02\x02\u0271\u0272" + - "\x03\x02\x02\x02\u0272\u0273\x05\xAEX\x02\u0273\u0274\x07Z\x02\x02\u0274" + - "\u0279\x05\xACW\x02\u0275\u0276\x07\x06\x02\x02\u0276\u0278\x05\xACW\x02" + - "\u0277\u0275\x03\x02\x02\x02\u0278\u027B\x03\x02\x02\x02\u0279\u0277\x03" + - "\x02\x02\x02\u0279\u027A\x03\x02\x02\x02\u027A\u027F\x03\x02\x02\x02\u027B" + - "\u0279\x03\x02\x02\x02\u027C\u027D\x07^\x02\x02\u027D\u027E\x07\"\x02" + - "\x02\u027E\u0280\x05\xAAV\x02\u027F\u027C\x03\x02\x02\x02\u027F\u0280" + - "\x03\x02\x02\x02\u0280\u0283\x03\x02\x02\x02\u0281\u0282\x07i\x02\x02" + - "\u0282\u0284\x05\xB0Y\x02\u0283\u0281\x03\x02\x02\x02\u0283\u0284\x03" + - "\x02\x02\x02\u0284\u03DC\x03\x02\x02\x02\u0285\u0286\x07\xCD\x02\x02\u0286" + - "\u028A\x07\xBE\x02\x02\u0287\u028B\x07\x16\x02\x02\u0288\u028B\x07\x93" + - "\x02\x02\u0289\u028B\x05\xB0Y\x02\u028A\u0287\x03\x02\x02\x02\u028A\u0288" + - "\x03\x02\x02\x02\u028A\u0289\x03\x02\x02\x02\u028B\u028E\x03\x02\x02\x02" + - "\u028C\u028D\x07i\x02\x02\u028D\u028F\x05\xB0Y\x02\u028E\u028C\x03\x02" + - "\x02\x02\u028E\u028F\x03\x02\x02\x02\u028F\u03DC\x03\x02\x02\x02\u0290" + - "\u029B\x07]\x02\x02\u0291\u0296\x05\xA6T\x02\u0292\u0293\x07\x06\x02\x02" + - "\u0293\u0295\x05\xA6T\x02\u0294\u0292\x03\x02\x02\x02\u0295\u0298\x03" + - "\x02\x02\x02\u0296\u0294\x03\x02\x02\x02\u0296\u0297\x03\x02\x02\x02\u0297" + - "\u029C\x03\x02\x02\x02\u0298\u0296\x03\x02\x02\x02\u0299\u029A\x07\x16" + - "\x02\x02\u029A\u029C\x07\xB0\x02\x02\u029B\u0291\x03\x02\x02\x02\u029B" + - "\u0299\x03\x02\x02\x02\u029C\u029D\x03\x02\x02\x02\u029D\u029F\x07\x9B" + - "\x02\x02\u029E\u02A0\t\x04\x02\x02\u029F\u029E\x03\x02\x02\x02\u029F\u02A0" + - "\x03\x02\x02\x02\u02A0\u02A1\x03\x02\x02\x02\u02A1\u02A2\x05\xA8U\x02" + - "\u02A2\u02A3\x07\xDE\x02\x02\u02A3\u02A7\x05\xACW\x02\u02A4\u02A5\x07" + - "\xF5\x02\x02\u02A5\u02A6\x07]\x02\x02\u02A6\u02A8\x07\x9E\x02\x02\u02A7" + - "\u02A4\x03\x02\x02\x02\u02A7\u02A8\x03\x02\x02\x02\u02A8\u03DC\x03\x02" + - "\x02\x02\u02A9\u02B4\x07`\x02\x02\u02AA\u02AF\x05\xA6T\x02\u02AB\u02AC" + - "\x07\x06\x02\x02\u02AC\u02AE\x05\xA6T\x02\u02AD\u02AB\x03\x02\x02\x02" + - "\u02AE\u02B1\x03\x02\x02\x02\u02AF\u02AD\x03\x02\x02\x02\u02AF\u02B0\x03" + - "\x02\x02\x02\u02B0\u02B5\x03\x02\x02\x02\u02B1\u02AF\x03\x02\x02\x02\u02B2" + - "\u02B3\x07\x16\x02\x02\u02B3\u02B5\x07\xB0\x02\x02\u02B4\u02AA\x03\x02" + - "\x02\x02\u02B4\u02B2\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02\u02B6" + - "\u02B8\x07\x9B\x02\x02\u02B7\u02B9\t\x04\x02\x02\u02B8\u02B7\x03\x02\x02" + - "\x02\u02B8\u02B9\x03\x02\x02\x02\u02B9\u02BA\x03\x02\x02\x02\u02BA\u02BB" + - "\x05\xA8U\x02\u02BB\u02BC\x07\xDE\x02\x02\u02BC\u02BD\x05\xACW\x02\u02BD" + - "\u03DC\x03\x02\x02\x02\u02BE\u02C2\x07\xBC\x02\x02\u02BF\u02C0\x07]\x02" + - "\x02\u02C0\u02C1\x07\x9E\x02\x02\u02C1\u02C3\x07X\x02\x02\u02C2\u02BF" + - "\x03\x02\x02\x02\u02C2\u02C3\x03\x02\x02\x02\u02C3\u02CE\x03\x02\x02\x02" + - "\u02C4\u02C9\x05\xA6T\x02\u02C5\u02C6\x07\x06\x02\x02\u02C6\u02C8\x05" + - "\xA6T\x02\u02C7\u02C5\x03\x02\x02\x02\u02C8\u02CB\x03\x02\x02\x02\u02C9" + - "\u02C7\x03\x02\x02\x02\u02C9\u02CA\x03\x02\x02\x02\u02CA\u02CF\x03\x02" + - "\x02\x02\u02CB\u02C9\x03\x02\x02\x02\u02CC\u02CD\x07\x16\x02\x02"; + "\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x05I\u0916\nI\x03J\x03J\x03J" + + "\x05J\u091B\nJ\x03J\x03J\x03J\x03J\x03J\x07J\u0922\nJ\fJ\x0EJ\u0925\v" + + "J\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x07K\u092F\nK\fK\x0EK\u0932" + + "\vK\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x03K\x05K\u0940" + + "\nK\x03L\x03L\x05L\u0944\nL\x03L\x03L\x05L\u0948\nL\x03L\x03L\x05L\u094C" + + "\nL\x03L\x03L\x03L\x03L\x05L\u0952\nL\x03L\x03L\x05L\u0956\nL\x03L\x03" + + "L\x05L\u095A\nL\x03L\x03L\x05L\u095E\nL\x05L\u0960\nL\x03M\x03M\x03M\x03" + + "M\x03N\x03N\x03N\x03N\x05N\u096A\nN\x03O\x03O\x03O\x03O\x03O\x05O\u0971" + + "\nO\x03P\x03P\x03P\x03P\x03P\x03P\x03P\x05P\u097A\nP\x03Q\x03Q\x03Q\x03" + + "Q\x03Q\x05Q\u0981\nQ\x03R\x03R\x03R\x03R\x03R\x05R\u0988\nR\x03S\x03S" + + "\x03S\x07S\u098D\nS\fS\x0ES\u0990\vS\x03T\x03T\x03U\x03U\x05U\u0996\n" + + "U\x03V\x03V\x03W\x03W\x03X\x03X\x03Y\x03Y\x03Z\x03Z\x03Z\x03Z\x03Z\x03" + + "Z\x03Z\x03Z\x03Z\x03Z\x03Z\x05Z\u09AB\nZ\x03[\x03[\x03[\x03[\x03[\x03" + + "[\x03[\x03[\x03[\x03[\x03[\x05[\u09B8\n[\x03\\\x03\\\x03]\x03]\x03^\x03" + + "^\x03^\x03^\x03^\x05^\u09C3\n^\x03_\x03_\x03`\x03`\x03a\x03a\x03b\x03" + + "b\x03b\x07b\u09CE\nb\fb\x0Eb\u09D1\vb\x03c\x03c\x03c\x05c\u09D6\nc\x03" + + "d\x03d\x03d\x03d\x03d\x05d\u09DD\nd\x03e\x03e\x03e\x07e\u09E2\ne\fe\x0E" + + "e\u09E5\ve\x03f\x03f\x03f\x03f\x03f\x05f\u09EC\nf\x03g\x05g\u09EF\ng\x03" + + "g\x03g\x05g\u09F3\ng\x03g\x03g\x05g\u09F7\ng\x03g\x05g\u09FA\ng\x03h\x03" + + "h\x03h\x02\x02\t*Bbfh~\x92i\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\x02" + + "X\x02Z\x02\\\x02^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02p\x02r\x02" + + "t\x02v\x02x\x02z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02" + + "\x8A\x02\x8C\x02\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02" + + "\x9C\x02\x9E\x02\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02" + + "\xAE\x02\xB0\x02\xB2\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02" + + "\xC0\x02\xC2\x02\xC4\x02\xC6\x02\xC8\x02\xCA\x02\xCC\x02\xCE\x02\x02\x1D" + + "\x04\x02$$\xBB\xBB\x04\x02??rr\x04\x02ZZii\x04\x02MMjj\x03\x02\xC2\xC3" + + "\x04\x02VV\x8D\x8D\x04\x02\u0107\u0107\u010B\u010B\x04\x02LL\xE7\xE7\x04" + + "\x02\x1D\x1DAA\x04\x02VVxx\x04\x02\x16\x16DD\x04\x02 \xD5\xD5\x04\x02" + + "kk\xC9\xC9\x03\x02\u0101\u0102\x03\x02\u0103\u0105\x04\x02UU\xC4\xC4\x03" + + "\x02\xFB\u0100\x05\x02\x16\x16\x1A\x1A\xD0\xD0\x04\x02RR\xE1\xE1\x07\x02" + + "<\u0537\x03\x02\x02\x02@\u0548\x03\x02\x02\x02B\u054A" + + "\x03\x02\x02\x02D\u0571\x03\x02\x02\x02F\u0581\x03\x02\x02\x02H\u0583" + + "\x03\x02\x02\x02J\u058C\x03\x02\x02\x02L\u058E\x03\x02\x02\x02N\u05E3" + + "\x03\x02\x02\x02P\u05F2\x03\x02\x02\x02R\u05FD\x03\x02\x02\x02T\u0612" + + "\x03\x02\x02\x02V\u0614\x03\x02\x02\x02X\u0621\x03\x02\x02\x02Z\u0625" + + "\x03\x02\x02\x02\\\u062F\x03\x02\x02\x02^\u0657\x03\x02\x02\x02`\u0659" + + "\x03\x02\x02\x02b\u0662\x03\x02\x02\x02d\u06AC\x03\x02\x02\x02f\u06B2" + + "\x03\x02\x02\x02h\u07BE\x03\x02\x02\x02j\u07CD\x03\x02\x02\x02l\u07D3" + + "\x03\x02\x02\x02n\u07DB\x03\x02\x02\x02p\u07E3\x03\x02\x02\x02r\u07E5" + + "\x03\x02\x02\x02t\u07E7\x03\x02\x02\x02v\u07E9\x03\x02\x02\x02x\u07EB" + + "\x03\x02\x02\x02z\u07F5\x03\x02\x02\x02|\u07F7\x03\x02\x02\x02~\u0854" + + "\x03\x02\x02\x02\x80\u0866\x03\x02\x02\x02\x82\u086A\x03\x02\x02\x02\x84" + + "\u086C\x03\x02\x02\x02\x86\u0871\x03\x02\x02\x02\x88\u08B7\x03\x02\x02" + + "\x02\x8A\u08B9\x03\x02\x02\x02\x8C\u08CA\x03\x02\x02\x02\x8E\u090A\x03" + + "\x02\x02\x02\x90\u0915\x03\x02\x02\x02\x92\u0917\x03\x02\x02\x02\x94\u093F" + + "\x03\x02\x02\x02\x96\u095F\x03\x02\x02\x02\x98\u0961\x03\x02\x02\x02\x9A" + + "\u0969\x03\x02\x02\x02\x9C\u0970\x03\x02\x02\x02\x9E\u0979\x03\x02\x02" + + "\x02\xA0\u0980\x03\x02\x02\x02\xA2\u0987\x03\x02\x02\x02\xA4\u0989\x03" + + "\x02\x02\x02\xA6\u0991\x03\x02\x02\x02\xA8\u0995\x03\x02\x02\x02\xAA\u0997" + + "\x03\x02\x02\x02\xAC\u0999\x03\x02\x02\x02\xAE\u099B\x03\x02\x02\x02\xB0" + + "\u099D\x03\x02\x02\x02\xB2\u09AA\x03\x02\x02\x02\xB4\u09B7\x03\x02\x02" + + "\x02\xB6\u09B9\x03\x02\x02\x02\xB8\u09BB\x03\x02\x02\x02\xBA\u09C2\x03" + + "\x02\x02\x02\xBC\u09C4\x03\x02\x02\x02\xBE\u09C6\x03\x02\x02\x02\xC0\u09C8" + + "\x03\x02\x02\x02\xC2\u09CA\x03\x02\x02\x02\xC4\u09D5\x03\x02\x02\x02\xC6" + + "\u09DC\x03\x02\x02\x02\xC8\u09DE\x03\x02\x02\x02\xCA\u09EB\x03\x02\x02" + + "\x02\xCC\u09F9\x03\x02\x02\x02\xCE\u09FB\x03\x02\x02\x02\xD0\xD2\x05\x04" + + "\x03\x02\xD1\xD0\x03\x02\x02\x02\xD2\xD5\x03\x02\x02\x02\xD3\xD1\x03\x02" + + "\x02\x02\xD3\xD4\x03\x02\x02\x02\xD4\xD6\x03\x02\x02\x02\xD5\xD3\x03\x02" + + "\x02\x02\xD6\xD7\x07\x02\x02\x03\xD7\x03\x03\x02\x02\x02\xD8\xDE\x05\x06" + + "\x04\x02\xD9\xDE\x05\b\x05\x02\xDA\xDE\x05\n\x06\x02\xDB\xDE\x05\f\x07" + + "\x02\xDC\xDE\x05\x0E\b\x02\xDD\xD8\x03\x02\x02\x02\xDD\xD9\x03\x02\x02" + + "\x02\xDD\xDA\x03\x02\x02\x02\xDD\xDB\x03\x02\x02\x02\xDD\xDC\x03\x02\x02" + + "\x02\xDE\x05\x03\x02\x02\x02\xDF\xE1\x05\x10\t\x02\xE0\xE2\x07\u0112\x02" + + "\x02\xE1\xE0\x03\x02\x02\x02\xE1\xE2\x03\x02\x02\x02\xE2\x07\x03\x02\x02" + + "\x02\xE3\xE5\x05`1\x02\xE4\xE6\x07\u0112\x02\x02\xE5\xE4\x03\x02\x02\x02" + + "\xE5\xE6\x03\x02\x02\x02\xE6\t\x03\x02\x02\x02\xE7\xE9\x05\xA4S\x02\xE8" + + "\xEA\x07\u0112\x02\x02\xE9\xE8\x03\x02\x02\x02\xE9\xEA\x03\x02\x02\x02" + + "\xEA\v\x03\x02\x02\x02\xEB\xED\x05~@\x02\xEC\xEE\x07\u0112\x02\x02\xED" + + "\xEC\x03\x02\x02\x02\xED\xEE\x03\x02\x02\x02\xEE\r\x03\x02\x02\x02\xEF" + + "\xF1\x05\x92J\x02\xF0\xF2\x07\u0112\x02\x02\xF1\xF0\x03\x02\x02\x02\xF1" + + "\xF2\x03\x02\x02\x02\xF2\x0F\x03\x02\x02\x02\xF3\u0402\x05\x12\n\x02\xF4" + + "\xF5\x07\xEB\x02\x02\xF5\u0402\x05\xB6\\\x02\xF6\xF7\x07.\x02\x02\xF7" + + "\xFB\x07\xC5\x02\x02\xF8\xF9\x07g\x02\x02\xF9\xFA\x07\x95\x02\x02\xFA" + + "\xFC\x07O\x02\x02\xFB\xF8\x03\x02\x02\x02\xFB\xFC\x03\x02\x02\x02\xFC" + + "\xFD\x03\x02\x02\x02\xFD\u0100\x05\xB8]\x02\xFE\xFF\x07\x1F\x02\x02\xFF" + + "\u0101\x05\xC6d\x02\u0100\xFE\x03\x02\x02\x02\u0100\u0101\x03\x02\x02" + + "\x02\u0101\u0104\x03\x02\x02\x02\u0102\u0103\x07\xF5\x02\x02\u0103\u0105" + + "\x05\x1C\x0F\x02\u0104\u0102\x03\x02\x02\x02\u0104\u0105\x03\x02\x02\x02" + + "\u0105\u0402\x03\x02\x02\x02\u0106\u0107\x07G\x02\x02\u0107\u010A\x07" + + "\xC5\x02\x02\u0108\u0109\x07g\x02\x02\u0109\u010B\x07O\x02\x02\u010A\u0108" + + "\x03\x02\x02\x02\u010A\u010B\x03\x02\x02\x02\u010B\u010C\x03\x02\x02\x02" + + "\u010C\u010E\x05\xB6\\\x02\u010D\u010F\t\x02\x02\x02\u010E\u010D\x03\x02" + + "\x02\x02\u010E\u010F\x03\x02\x02\x02\u010F\u0402\x03\x02\x02\x02\u0110" + + "\u0111\x07\x17\x02\x02\u0111\u0112\x07\xC5\x02\x02\u0112\u0113\x05\xB6" + + "\\\x02\u0113\u0114\x07\xB6\x02\x02\u0114\u0115\x07\xDE\x02\x02\u0115\u0116" + + "\x05\xB8]\x02\u0116\u0402\x03\x02\x02\x02\u0117\u0118\x07\x17\x02\x02" + + "\u0118\u0119\x07\xC5\x02\x02\u0119\u011A\x05\xB6\\\x02\u011A\u011B\x07" + + "\xCD\x02\x02\u011B\u011C\x07\x1F\x02\x02\u011C\u011D\x05\xC6d\x02\u011D" + + "\u0402\x03\x02\x02\x02\u011E\u011F\x07.\x02\x02\u011F\u0123\x07\xD6\x02" + + "\x02\u0120\u0121\x07g\x02\x02\u0121\u0122\x07\x95\x02\x02\u0122\u0124" + + "\x07O\x02\x02\u0123\u0120\x03\x02\x02\x02\u0123\u0124\x03\x02\x02\x02" + + "\u0124\u0125\x03\x02\x02\x02\u0125\u0127\x05\xACW\x02\u0126\u0128\x05" + + "\\/\x02\u0127\u0126\x03\x02\x02\x02\u0127\u0128\x03\x02\x02\x02\u0128" + + "\u012B\x03\x02\x02\x02\u0129\u012A\x07*\x02\x02\u012A\u012C\x05n8\x02" + + "\u012B\u0129\x03\x02\x02\x02\u012B\u012C\x03\x02\x02\x02\u012C\u012F\x03" + + "\x02\x02\x02\u012D\u012E\x07\xF5\x02\x02\u012E\u0130\x05\x1C\x0F\x02\u012F" + + "\u012D\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u0130\u0131\x03\x02" + + "\x02\x02\u0131\u0137\x07\x1C\x02\x02\u0132\u0138\x05\x12\n\x02\u0133\u0134" + + "\x07\x03\x02\x02\u0134\u0135\x05\x12\n\x02\u0135\u0136\x07\x04\x02\x02" + + "\u0136\u0138\x03\x02\x02\x02\u0137\u0132\x03\x02\x02\x02\u0137\u0133\x03" + + "\x02\x02\x02\u0138\u013E\x03\x02\x02\x02\u0139\u013B\x07\xF5\x02\x02\u013A" + + "\u013C\x07\x92\x02\x02\u013B\u013A\x03\x02\x02\x02\u013B\u013C\x03\x02" + + "\x02\x02\u013C\u013D\x03\x02\x02\x02\u013D\u013F\x07:\x02\x02\u013E\u0139" + + "\x03\x02\x02\x02\u013E\u013F\x03\x02\x02\x02\u013F\u0402\x03\x02\x02\x02" + + "\u0140\u0141\x07.\x02\x02\u0141\u0145\x07\xD6\x02\x02\u0142\u0143\x07" + + "g\x02\x02\u0143\u0144\x07\x95\x02\x02\u0144\u0146\x07O\x02\x02\u0145\u0142" + + "\x03\x02\x02\x02\u0145\u0146\x03\x02\x02\x02\u0146\u0147\x03\x02\x02\x02" + + "\u0147\u0148\x05\xACW\x02\u0148\u0149\x07\x03\x02\x02\u0149\u014E\x05" + + "\x16\f\x02\u014A\u014B\x07\x05\x02\x02\u014B\u014D\x05\x16\f\x02\u014C" + + "\u014A\x03\x02\x02\x02\u014D\u0150\x03\x02\x02\x02\u014E\u014C\x03\x02" + + "\x02\x02\u014E\u014F\x03\x02\x02\x02\u014F\u0151\x03\x02\x02\x02\u0150" + + "\u014E\x03\x02\x02\x02\u0151\u0154\x07\x04\x02\x02\u0152\u0153\x07*\x02" + + "\x02\u0153\u0155\x05n8\x02\u0154\u0152\x03\x02\x02\x02\u0154\u0155\x03" + + "\x02\x02\x02\u0155\u0158\x03\x02\x02\x02\u0156\u0157\x07\xF5\x02\x02\u0157" + + "\u0159\x05\x1C\x0F\x02\u0158\u0156\x03\x02\x02\x02\u0158\u0159\x03\x02" + + "\x02\x02\u0159\u0402\x03\x02\x02\x02\u015A\u015B\x07G\x02\x02\u015B\u015E" + + "\x07\xD6\x02\x02\u015C\u015D\x07g\x02\x02\u015D\u015F\x07O\x02\x02\u015E" + + "\u015C\x03\x02\x02\x02\u015E\u015F\x03\x02\x02\x02\u015F\u0160\x03\x02" + + "\x02\x02\u0160\u0402\x05\xAAV\x02\u0161\u0162\x07n\x02\x02\u0162\u0163" + + "\x07q\x02\x02\u0163\u0165\x05\xAAV\x02\u0164\u0166\x05\\/\x02\u0165\u0164" + + "\x03\x02\x02\x02\u0165\u0166\x03\x02\x02\x02\u0166\u0167\x03\x02\x02\x02" + + "\u0167\u0168\x05\x12\n\x02\u0168\u0402\x03\x02\x02\x02\u0169\u016A\x07" + + "@\x02\x02\u016A\u016B\x07Z\x02\x02\u016B\u016E\x05\xAAV\x02\u016C\u016D" + + "\x07\xF3\x02\x02\u016D\u016F\x05b2\x02\u016E\u016C\x03\x02\x02\x02\u016E" + + "\u016F\x03\x02\x02\x02\u016F\u0402\x03\x02\x02\x02\u0170\u0171\x07\xE0" + + "\x02\x02\u0171\u0172\x07\xD6\x02\x02\u0172\u0402\x05\xAAV\x02\u0173\u0174" + + "\x07\x17\x02\x02\u0174\u0177\x07\xD6\x02\x02\u0175\u0176\x07g\x02\x02" + + "\u0176\u0178\x07O\x02\x02\u0177\u0175\x03\x02\x02\x02\u0177\u0178\x03" + + "\x02\x02\x02\u0178\u0179\x03\x02\x02\x02\u0179\u017A\x05\xAAV\x02\u017A" + + "\u017B\x07\xB6\x02\x02\u017B\u017C\x07\xDE\x02\x02\u017C\u017D\x05\xAC" + + "W\x02\u017D\u0402\x03\x02\x02\x02\u017E\u017F\x07*\x02\x02\u017F\u0180" + + "\x07\x9B\x02\x02\u0180\u0181\x07\xD6\x02\x02\u0181\u0182\x05\xAAV\x02" + + "\u0182\u0185\x07t\x02\x02\u0183\u0186\x05n8\x02\u0184\u0186\x07\x96\x02" + + "\x02\u0185\u0183\x03\x02\x02\x02\u0185\u0184\x03\x02\x02\x02\u0186\u0402" + + "\x03\x02\x02\x02\u0187\u0188\x07*\x02\x02\u0188\u0189\x07\x9B\x02\x02" + + "\u0189\u018A\x07(\x02\x02\u018A\u018B\x05\xC2b\x02\u018B\u018E\x07t\x02" + + "\x02\u018C\u018F\x05n8\x02\u018D\u018F\x07\x96\x02\x02\u018E\u018C\x03" + + "\x02\x02\x02\u018E\u018D\x03\x02\x02\x02\u018F\u0402\x03\x02\x02\x02\u0190" + + "\u0191\x07\x17\x02\x02\u0191\u0194\x07\xD6\x02\x02\u0192\u0193\x07g\x02" + + "\x02\u0193\u0195\x07O\x02\x02\u0194\u0192\x03\x02\x02\x02\u0194\u0195" + + "\x03\x02\x02\x02\u0195\u0196\x03\x02\x02\x02\u0196\u0197\x05\xAAV\x02" + + "\u0197\u0198\x07\xB6\x02\x02\u0198\u019B\x07(\x02\x02\u0199\u019A\x07" + + "g\x02\x02\u019A\u019C\x07O\x02\x02\u019B\u0199\x03\x02\x02\x02\u019B\u019C" + + "\x03\x02\x02\x02\u019C\u019D\x03\x02\x02\x02\u019D\u019E\x05\xCAf\x02" + + "\u019E\u019F\x07\xDE\x02\x02\u019F\u01A0\x05\xCAf\x02\u01A0\u0402\x03" + + "\x02\x02\x02\u01A1\u01A2\x07\x17\x02\x02\u01A2\u01A5\x07\xD6\x02\x02\u01A3" + + "\u01A4\x07g\x02\x02\u01A4\u01A6\x07O\x02\x02\u01A5\u01A3\x03\x02\x02\x02" + + "\u01A5\u01A6\x03\x02\x02\x02\u01A6\u01A7\x03\x02\x02\x02\u01A7\u01A8\x05" + + "\xAAV\x02\u01A8\u01A9\x07G\x02\x02\u01A9\u01AC\x07(\x02\x02\u01AA\u01AB" + + "\x07g\x02\x02\u01AB\u01AD\x07O\x02\x02\u01AC\u01AA\x03\x02\x02\x02\u01AC" + + "\u01AD\x03\x02\x02\x02\u01AD\u01AE\x03\x02\x02\x02\u01AE\u01AF\x05\xC2" + + "b\x02\u01AF\u0402\x03\x02\x02\x02\u01B0\u01B1\x07\x17\x02\x02\u01B1\u01B4" + + "\x07\xD6\x02\x02\u01B2\u01B3\x07g\x02\x02\u01B3\u01B5\x07O\x02\x02\u01B4" + + "\u01B2\x03\x02\x02\x02\u01B4\u01B5\x03\x02\x02\x02\u01B5\u01B6\x03\x02" + + "\x02\x02\u01B6\u01B7\x05\xAAV\x02\u01B7\u01B8\x07\x13\x02\x02\u01B8\u01BC" + + "\x07(\x02\x02\u01B9\u01BA\x07g\x02\x02\u01BA\u01BB\x07\x95\x02\x02\u01BB" + + "\u01BD\x07O\x02\x02\u01BC\u01B9\x03\x02\x02\x02\u01BC\u01BD\x03\x02\x02" + + "\x02\u01BD\u01BE\x03\x02\x02\x02\u01BE\u01BF\x05\x18\r\x02\u01BF\u0402" + + "\x03\x02\x02\x02\u01C0\u01C1\x07\x17\x02\x02\u01C1\u01C2\x07\xD6\x02\x02" + + "\u01C2\u01C3\x05\xAAV\x02\u01C3\u01C4\x07\xCD\x02\x02\u01C4\u01C5\x07" + + "\x1F\x02\x02\u01C5\u01C6\x05\xC6d\x02\u01C6\u0402\x03\x02\x02\x02\u01C7" + + "\u01C8\x07\x17\x02\x02\u01C8\u01C9\x07\xD6\x02\x02\u01C9\u01CA\x05\xAA" + + "V\x02\u01CA\u01CB\x07\xCD\x02\x02\u01CB\u01CC\x07\xB1\x02\x02\u01CC\u01CD" + + "\x05\x1E\x10\x02\u01CD\u0402\x03\x02\x02\x02\u01CE\u01CF\x07\x17\x02\x02" + + "\u01CF\u01D0\x07\xD6\x02\x02\u01D0\u01D1\x05\xAAV\x02\u01D1\u01D2\x07" + + "N\x02\x02\u01D2\u01DF\x05\xCAf\x02\u01D3\u01DC\x07\x03\x02\x02\u01D4\u01D9" + + "\x05\xA0Q\x02\u01D5\u01D6\x07\x05\x02\x02\u01D6\u01D8\x05\xA0Q\x02\u01D7" + + "\u01D5\x03\x02\x02\x02\u01D8\u01DB\x03\x02\x02\x02\u01D9\u01D7\x03\x02" + + "\x02\x02\u01D9\u01DA\x03\x02\x02\x02\u01DA\u01DD\x03\x02\x02\x02\u01DB" + + "\u01D9\x03\x02\x02\x02\u01DC\u01D4\x03\x02\x02\x02\u01DC\u01DD\x03\x02" + + "\x02\x02\u01DD\u01DE\x03\x02\x02\x02\u01DE\u01E0\x07\x04\x02\x02\u01DF" + + "\u01D3\x03\x02\x02\x02\u01DF\u01E0\x03\x02\x02\x02\u01E0\u01E3\x03\x02" + + "\x02\x02\u01E1\u01E2\x07\xF3\x02\x02\u01E2\u01E4\x05b2\x02\u01E3\u01E1" + + "\x03\x02\x02\x02\u01E3\u01E4\x03\x02\x02\x02\u01E4\u0402\x03\x02\x02\x02" + + "\u01E5\u01E6\x07\x18\x02\x02\u01E6\u01E9\x05\xAAV\x02\u01E7\u01E8\x07" + + "\xF5\x02\x02\u01E8\u01EA\x05\x1C\x0F\x02\u01E9\u01E7\x03\x02\x02\x02\u01E9" + + "\u01EA\x03\x02\x02\x02\u01EA\u0402\x03\x02\x02\x02\u01EB\u01EE\x07.\x02" + + "\x02\u01EC\u01ED\x07\x9F\x02\x02\u01ED\u01EF\x07\xB8\x02\x02\u01EE\u01EC" + + "\x03\x02\x02\x02\u01EE\u01EF\x03\x02\x02\x02\u01EF\u01F0\x03\x02\x02\x02" + + "\u01F0\u01F1\x07\x87\x02\x02\u01F1\u01F5\x07\xF1\x02\x02\u01F2\u01F3\x07" + + "g\x02\x02\u01F3\u01F4\x07\x95\x02\x02\u01F4\u01F6\x07O\x02\x02\u01F5\u01F2" + + "\x03\x02\x02\x02\u01F5\u01F6\x03\x02\x02\x02\u01F6\u01F7\x03\x02\x02\x02" + + "\u01F7\u01FA\x05\xB0Y\x02\u01F8\u01F9\x07*\x02\x02\u01F9\u01FB\x05n8\x02" + + "\u01FA\u01F8\x03\x02\x02\x02\u01FA\u01FB\x03\x02\x02\x02\u01FB\u01FE\x03" + + "\x02\x02\x02\u01FC\u01FD\x07\xF5\x02\x02\u01FD\u01FF\x05\x1C\x0F\x02\u01FE" + + "\u01FC\x03\x02\x02\x02\u01FE\u01FF\x03\x02\x02\x02\u01FF\u0200\x03\x02" + + "\x02\x02\u0200\u0201\x07\x1C\x02\x02\u0201\u0202\x05\x12\n\x02\u0202\u0402" + + "\x03\x02\x02\x02\u0203\u0206\x07.\x02\x02\u0204\u0205\x07\x9F\x02\x02" + + "\u0205\u0207\x07\xB8\x02\x02\u0206\u0204\x03\x02\x02\x02\u0206\u0207\x03" + + "\x02\x02\x02\u0207\u0208\x03\x02\x02\x02\u0208\u0209\x07\xF1\x02\x02\u0209" + + "\u020C\x05\xB0Y\x02\u020A\u020B\x07*\x02\x02\u020B\u020D\x05n8\x02\u020C" + + "\u020A\x03\x02\x02\x02\u020C\u020D\x03\x02\x02\x02\u020D\u0210\x03\x02" + + "\x02\x02\u020E\u020F\x07\xC8\x02\x02\u020F\u0211\t\x03\x02\x02\u0210\u020E" + + "\x03\x02\x02\x02\u0210\u0211\x03\x02\x02\x02\u0211\u0212\x03\x02\x02\x02" + + "\u0212\u0213\x07\x1C\x02\x02\u0213\u0214\x05\x12\n\x02\u0214\u0402\x03" + + "\x02\x02\x02\u0215\u0216\x07\xB5\x02\x02\u0216\u0217\x07\x87\x02\x02\u0217" + + "\u0218\x07\xF1\x02\x02\u0218\u0402\x05\xAEX\x02\u0219\u021A\x07G\x02\x02" + + "\u021A\u021B\x07\x87\x02\x02\u021B\u021E\x07\xF1\x02\x02\u021C\u021D\x07" + + "g\x02\x02\u021D\u021F\x07O\x02\x02\u021E\u021C\x03\x02\x02\x02\u021E\u021F" + + "\x03\x02\x02\x02\u021F\u0220\x03\x02\x02\x02\u0220\u0402\x05\xAEX\x02" + + "\u0221\u0222\x07\x17\x02\x02\u0222\u0223\x07\x87\x02\x02\u0223\u0226\x07" + + "\xF1\x02\x02\u0224\u0225\x07g\x02\x02\u0225\u0227\x07O\x02\x02\u0226\u0224" + + "\x03\x02\x02\x02\u0226\u0227\x03\x02\x02\x02\u0227\u0228\x03\x02\x02\x02" + + "\u0228\u0229\x05\xAEX\x02\u0229\u022A\x07\xB6\x02\x02\u022A\u022B\x07" + + "\xDE\x02\x02\u022B\u022C\x05\xB0Y\x02\u022C\u0402\x03\x02\x02\x02\u022D" + + "\u022E\x07\x17\x02\x02\u022E\u022F\x07\x87\x02\x02\u022F\u0230\x07\xF1" + + "\x02\x02\u0230\u0231\x05\xAEX\x02\u0231\u0232\x07\xCD\x02\x02\u0232\u0233" + + "\x07\xB1\x02\x02\u0233\u0234\x05\x1E\x10\x02\u0234\u0402\x03\x02\x02\x02" + + "\u0235\u0236\x07G\x02\x02\u0236\u0239\x07\xF1\x02\x02\u0237\u0238\x07" + + "g\x02\x02\u0238\u023A\x07O\x02\x02\u0239\u0237\x03\x02\x02\x02\u0239\u023A" + + "\x03\x02\x02\x02\u023A\u023B\x03\x02\x02\x02\u023B\u0402\x05\xAEX\x02" + + "\u023C\u023D\x07\x17\x02\x02\u023D\u023E\x07\xF1\x02\x02\u023E\u023F\x05" + + "\xAEX\x02\u023F\u0240\x07\xB6\x02\x02\u0240\u0241\x07\xDE\x02\x02\u0241" + + "\u0242\x05\xB0Y\x02\u0242\u0402\x03\x02\x02\x02\u0243\u0244\x07\x17\x02" + + "\x02\u0244\u0245\x07\xF1\x02\x02\u0245\u0246\x05\xAEX\x02\u0246\u0247" + + "\x07\xCD\x02\x02\u0247\u0248\x07\x1F\x02\x02\u0248\u0249\x05\xC6d\x02" + + "\u0249\u0402\x03\x02\x02\x02\u024A\u024B\x07#\x02\x02\u024B\u024C\x05" + + "\xC0a\x02\u024C\u0255\x07\x03\x02\x02\u024D\u0252\x05\xA0Q\x02\u024E\u024F" + + "\x07\x05\x02\x02\u024F\u0251\x05\xA0Q\x02\u0250\u024E\x03\x02\x02\x02" + + "\u0251\u0254\x03\x02\x02\x02\u0252\u0250\x03\x02\x02\x02\u0252\u0253\x03" + + "\x02\x02\x02\u0253\u0256\x03\x02\x02\x02\u0254\u0252\x03\x02\x02\x02\u0255" + + "\u024D\x03\x02\x02\x02\u0255\u0256\x03\x02\x02\x02\u0256\u0257\x03\x02" + + "\x02\x02\u0257\u0258\x07\x04\x02\x02\u0258\u0402\x03\x02\x02\x02\u0259" + + "\u025A\x07.\x02\x02\u025A\u025B\x07\xBE\x02\x02\u025B\u025F\x05\xCAf\x02" + + "\u025C\u025D\x07\xF5\x02\x02\u025D\u025E\x07\x14\x02\x02\u025E\u0260\x05" + + "\xC4c\x02\u025F\u025C\x03\x02\x02\x02\u025F\u0260\x03\x02\x02\x02\u0260" + + "\u0263\x03\x02\x02\x02\u0261\u0262\x07i\x02\x02\u0262\u0264\x05\xBC_\x02" + + "\u0263\u0261\x03\x02\x02\x02\u0263\u0264\x03\x02\x02\x02\u0264\u0402\x03" + + "\x02\x02\x02\u0265\u0266\x07G\x02\x02\u0266\u0267\x07\xBE\x02\x02\u0267" + + "\u0402\x05\xCAf\x02\u0268\u0269\x07]\x02\x02\u0269\u026A\x05\xC8e\x02" + + "\u026A\u026B\x07\xDE\x02\x02\u026B\u0270\x05\xC6d\x02\u026C\u026D\x07" + + "\x05\x02\x02\u026D\u026F\x05\xC6d\x02\u026E\u026C\x03\x02\x02\x02\u026F" + + "\u0272\x03\x02\x02\x02\u0270\u026E\x03\x02\x02\x02\u0270\u0271\x03\x02" + + "\x02\x02\u0271\u0276\x03\x02\x02\x02\u0272\u0270\x03\x02\x02\x02\u0273" + + "\u0274\x07\xF5\x02\x02\u0274\u0275\x07\x14\x02\x02\u0275\u0277\x07\x9E" + + "\x02\x02\u0276\u0273\x03\x02\x02\x02\u0276\u0277\x03\x02\x02\x02\u0277" + + "\u027B\x03\x02\x02\x02\u0278\u0279\x07^\x02\x02\u0279\u027A\x07\"\x02" + + "\x02\u027A\u027C\x05\xC4c\x02\u027B\u0278\x03\x02\x02\x02\u027B\u027C" + + "\x03\x02\x02\x02\u027C\u027F\x03\x02\x02\x02\u027D\u027E\x07i\x02\x02" + + "\u027E\u0280\x05\xBC_\x02\u027F\u027D\x03\x02\x02\x02\u027F\u0280\x03" + + "\x02\x02\x02\u0280\u0402\x03\x02\x02\x02\u0281\u0285\x07\xBC\x02\x02\u0282" + + "\u0283\x07\x14\x02\x02\u0283\u0284\x07\x9E\x02\x02\u0284\u0286\x07X\x02" + + "\x02\u0285\u0282\x03\x02\x02\x02\u0285\u0286\x03\x02\x02\x02\u0286\u0287" + + "\x03\x02\x02\x02\u0287\u0288\x05\xC8e\x02\u0288\u0289\x07Z\x02\x02\u0289" + + "\u028E\x05\xC6d\x02\u028A\u028B\x07\x05\x02\x02\u028B\u028D\x05\xC6d\x02" + + "\u028C\u028A\x03\x02\x02\x02\u028D\u0290\x03\x02\x02\x02\u028E\u028C\x03" + + "\x02\x02\x02\u028E\u028F\x03\x02\x02\x02\u028F\u0294\x03\x02\x02\x02\u0290" + + "\u028E\x03\x02\x02\x02\u0291\u0292\x07^\x02\x02\u0292\u0293\x07\"\x02" + + "\x02\u0293\u0295\x05\xC4c\x02\u0294\u0291\x03\x02\x02\x02\u0294\u0295" + + "\x03\x02\x02\x02\u0295\u0298\x03\x02\x02\x02\u0296\u0297\x07i\x02\x02" + + "\u0297\u0299\x05\xBC_\x02\u0298\u0296\x03\x02\x02\x02\u0298\u0299\x03" + + "\x02\x02\x02\u0299\u0402\x03\x02\x02\x02\u029A\u029B\x07\xCD\x02\x02\u029B" + + "\u029F\x07\xBE\x02\x02\u029C\u02A0\x07\x16\x02\x02\u029D\u02A0\x07\x93" + + "\x02\x02\u029E\u02A0\x05\xCAf\x02\u029F\u029C\x03\x02\x02\x02\u029F\u029D" + + "\x03\x02\x02\x02\u029F\u029E\x03\x02\x02\x02\u02A0\u02A3\x03\x02\x02\x02" + + "\u02A1\u02A2\x07i\x02\x02\u02A2\u02A4\x05\xBC_\x02\u02A3\u02A1\x03\x02" + + "\x02\x02\u02A3\u02A4\x03\x02\x02\x02\u02A4\u0402\x03\x02\x02\x02\u02A5" + + "\u02B0\x07]\x02\x02\u02A6\u02AB\x05\xA6T\x02\u02A7\u02A8\x07\x05\x02\x02" + + "\u02A8\u02AA\x05\xA6T\x02\u02A9\u02A7\x03\x02\x02\x02\u02AA\u02AD\x03" + + "\x02\x02\x02\u02AB\u02A9\x03\x02\x02\x02\u02AB\u02AC\x03\x02\x02\x02\u02AC" + + "\u02B1\x03\x02\x02\x02\u02AD\u02AB\x03\x02\x02\x02\u02AE\u02AF\x07\x16" + + "\x02\x02\u02AF\u02B1\x07\xB0\x02\x02\u02B0\u02A6\x03\x02\x02\x02\u02B0" + + "\u02AE\x03\x02\x02\x02\u02B1\u02B2\x03\x02\x02\x02\u02B2\u02BB\x07\x9B" + + "\x02\x02\u02B3\u02B5\x07\xC5\x02\x02\u02B4\u02B3\x03\x02\x02\x02\u02B4" + + "\u02B5\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02\u02B6\u02BC\x05\xB6" + + "\\\x02\u02B7\u02B9\x07\xD6\x02\x02\u02B8\u02B7\x03\x02\x02\x02\u02B8\u02B9" + + "\x03\x02\x02\x02\u02B9\u02BA\x03\x02\x02\x02\u02BA\u02BC\x05\xAAV\x02"; private static readonly _serializedATNSegment2: string = - "\u02CD\u02CF\x07\xB0\x02\x02\u02CE\u02C4\x03\x02\x02\x02\u02CE\u02CC\x03" + - "\x02\x02\x02\u02CF\u02D0\x03\x02\x02\x02\u02D0\u02D2\x07\x9B\x02\x02\u02D1" + - "\u02D3\t\x04\x02\x02\u02D2\u02D1\x03\x02\x02\x02\u02D2\u02D3\x03\x02\x02" + - "\x02\u02D3\u02D4\x03\x02\x02\x02\u02D4\u02D5\x05\xA8U\x02\u02D5\u02D6" + - "\x07Z\x02\x02\u02D6\u02D7\x05\xACW\x02\u02D7\u03DC\x03\x02\x02\x02\u02D8" + - "\u02D9\x07\xCF\x02\x02\u02D9\u02DF\x07_\x02\x02\u02DA\u02DC\x07\x9B\x02" + - "\x02\u02DB\u02DD\x07\xD6\x02\x02\u02DC\u02DB\x03\x02\x02\x02\u02DC\u02DD" + - "\x03\x02\x02\x02\u02DD\u02DE\x03\x02\x02\x02\u02DE\u02E0\x05\xA8U\x02" + - "\u02DF\u02DA\x03\x02\x02\x02\u02DF\u02E0\x03\x02\x02\x02\u02E0\u03DC\x03" + - "\x02\x02\x02\u02E1\u02E3\x07P\x02\x02\u02E2\u02E4\x07\x18\x02\x02\u02E3" + - "\u02E2\x03\x02\x02\x02\u02E3\u02E4\x03\x02\x02\x02\u02E4\u02E6\x03\x02" + - "\x02\x02\u02E5\u02E7\x07\xF0\x02\x02\u02E6\u02E5\x03\x02\x02\x02\u02E6" + - "\u02E7\x03\x02\x02\x02\u02E7\u02F3\x03\x02\x02\x02\u02E8\u02E9\x07\x04" + - "\x02\x02\u02E9\u02EE\x05\x9AN\x02\u02EA\u02EB\x07\x06\x02\x02\u02EB\u02ED" + - "\x05\x9AN\x02\u02EC\u02EA\x03\x02\x02\x02\u02ED\u02F0\x03\x02\x02\x02" + - "\u02EE\u02EC\x03\x02\x02\x02\u02EE\u02EF\x03\x02\x02\x02\u02EF\u02F1\x03" + - "\x02\x02\x02\u02F0\u02EE\x03\x02\x02\x02\u02F1\u02F2\x07\x05\x02\x02\u02F2" + - "\u02F4\x03\x02\x02\x02\u02F3\u02E8\x03\x02\x02\x02\u02F3\u02F4\x03\x02" + - "\x02\x02\u02F4\u02F5\x03\x02\x02\x02\u02F5\u03DC\x05\x10\t\x02\u02F6\u02F7" + - "\x07\xCF\x02\x02\u02F7\u02F8\x07.\x02\x02\u02F8\u02F9\x07\xD6\x02\x02" + - "\u02F9\u03DC\x05\xA8U\x02\u02FA\u02FB\x07\xCF\x02\x02\u02FB\u02FC\x07" + - ".\x02\x02\u02FC\u02FD\x07\xC5\x02\x02\u02FD\u03DC\x05\xA8U\x02\u02FE\u02FF" + - "\x07\xCF\x02\x02\u02FF\u0300\x07.\x02\x02\u0300\u0301\x07\xF1\x02\x02" + - "\u0301\u03DC\x05\xA8U\x02\u0302\u0303\x07\xCF\x02\x02\u0303\u0304\x07" + - ".\x02\x02\u0304\u0305\x07\x87\x02\x02\u0305\u0306\x07\xF1\x02\x02\u0306" + - "\u03DC\x05\xA8U\x02\u0307\u0308\x07\xCF\x02\x02\u0308\u030B\x07\xD7\x02" + - "\x02\u0309\u030A\t\x05\x02\x02\u030A\u030C\x05\xA8U\x02\u030B\u0309\x03" + - "\x02\x02\x02\u030B\u030C\x03\x02\x02\x02\u030C\u0313\x03\x02\x02\x02\u030D" + - "\u030E\x07|\x02\x02\u030E\u0311\x05n8\x02\u030F\u0310\x07K\x02\x02\u0310" + - "\u0312\x05n8\x02\u0311\u030F\x03\x02\x02\x02\u0311\u0312\x03\x02\x02\x02" + - "\u0312\u0314\x03\x02\x02\x02\u0313\u030D\x03\x02\x02\x02\u0313\u0314\x03" + - "\x02\x02\x02\u0314\u03DC\x03\x02\x02\x02\u0315\u0316\x07\xCF\x02\x02\u0316" + - "\u0319\x07\xC6\x02\x02\u0317\u0318\t\x05\x02\x02\u0318\u031A\x05\xB0Y" + - "\x02\u0319\u0317\x03\x02\x02\x02\u0319\u031A\x03\x02\x02\x02\u031A\u0321" + - "\x03\x02\x02\x02\u031B\u031C\x07|\x02\x02\u031C\u031F\x05n8\x02\u031D" + - "\u031E\x07K\x02\x02\u031E\u0320\x05n8\x02\u031F\u031D\x03\x02\x02\x02" + - "\u031F\u0320\x03\x02\x02\x02\u0320\u0322\x03\x02\x02\x02\u0321\u031B\x03" + - "\x02\x02\x02\u0321\u0322\x03\x02\x02\x02\u0322\u03DC\x03\x02\x02\x02\u0323" + - "\u0324\x07\xCF\x02\x02\u0324\u032B\x07\'\x02\x02\u0325\u0326\x07|\x02" + - "\x02\u0326\u0329\x05n8\x02\u0327\u0328\x07K\x02\x02\u0328\u032A\x05n8" + - "\x02\u0329\u0327\x03\x02\x02\x02\u0329\u032A\x03\x02\x02\x02\u032A\u032C" + - "\x03\x02\x02\x02\u032B\u0325\x03\x02\x02\x02\u032B\u032C\x03\x02\x02\x02" + - "\u032C\u03DC\x03\x02\x02\x02\u032D\u032E\x07\xCF\x02\x02\u032E\u032F\x07" + - ")\x02\x02\u032F\u0331\t\x05\x02\x02\u0330\u0332\x05\xA8U\x02\u0331\u0330" + - "\x03\x02\x02\x02\u0331\u0332\x03\x02\x02\x02\u0332\u0339\x03\x02\x02\x02" + - "\u0333\u0334\x07|\x02\x02\u0334\u0337\x05n8\x02\u0335\u0336\x07K\x02\x02" + - "\u0336\u0338\x05n8\x02\u0337\u0335\x03\x02\x02\x02\u0337\u0338\x03\x02" + - "\x02\x02\u0338\u033A\x03\x02\x02\x02\u0339\u0333\x03\x02\x02\x02\u0339" + - "\u033A\x03\x02\x02\x02\u033A\u03DC\x03\x02\x02\x02\u033B\u033C\x07\xCF" + - "\x02\x02\u033C\u033D\x07\xD2\x02\x02\u033D\u033E\x07X\x02\x02\u033E\u03DC" + - "\x05\xA8U\x02\u033F\u0340\x07\xCF\x02\x02\u0340\u0341\x07\xD2\x02\x02" + - "\u0341\u0342\x07X\x02\x02\u0342\u0343\x07\x04\x02\x02\u0343\u0344\x05" + - "\x12\n\x02\u0344\u0345\x07\x05\x02\x02\u0345\u03DC\x03\x02\x02\x02\u0346" + - "\u0348\x07\xCF\x02\x02\u0347\u0349\x071\x02\x02\u0348\u0347\x03\x02\x02" + - "\x02\u0348\u0349\x03\x02\x02\x02\u0349\u034A\x03\x02\x02\x02\u034A\u034D" + - "\x07\xBF\x02\x02\u034B\u034C\t\x05\x02\x02\u034C\u034E\x05\xB0Y\x02\u034D" + - "\u034B\x03\x02\x02\x02\u034D\u034E\x03\x02\x02\x02\u034E\u03DC\x03\x02" + - "\x02\x02\u034F\u0350\x07\xCF\x02\x02\u0350\u0351\x07\xBE\x02\x02\u0351" + - "\u0354\x07_\x02\x02\u0352\u0353\t\x05\x02\x02\u0353\u0355\x05\xB0Y\x02" + - "\u0354\u0352\x03\x02\x02\x02\u0354\u0355\x03\x02\x02\x02\u0355\u03DC\x03" + - "\x02\x02\x02\u0356\u0357\x07B\x02\x02\u0357\u03DC\x05\xA8U\x02\u0358\u0359" + - "\x07A\x02\x02\u0359\u03DC\x05\xA8U\x02\u035A\u035B\x07\xCF\x02\x02\u035B" + - "\u0362\x07\\\x02\x02\u035C\u035D\x07|\x02\x02\u035D\u0360\x05n8\x02\u035E" + - "\u035F\x07K\x02\x02\u035F\u0361\x05n8\x02\u0360\u035E\x03\x02\x02\x02" + - "\u0360\u0361\x03\x02\x02\x02\u0361\u0363\x03\x02\x02\x02\u0362\u035C\x03" + - "\x02\x02\x02\u0362\u0363\x03\x02\x02\x02\u0363\u03DC\x03\x02\x02\x02\u0364" + - "\u0365\x07\xCF\x02\x02\u0365\u036C\x07\xCC\x02\x02\u0366\u0367\x07|\x02" + - "\x02\u0367\u036A\x05n8\x02\u0368\u0369\x07K\x02\x02\u0369\u036B\x05n8" + - "\x02\u036A\u0368\x03\x02\x02\x02\u036A\u036B\x03\x02\x02\x02\u036B\u036D" + - "\x03\x02\x02\x02\u036C\u0366\x03\x02\x02\x02\u036C\u036D\x03\x02\x02\x02" + - "\u036D\u03DC\x03\x02\x02\x02\u036E\u036F\x07\xCD\x02\x02\u036F\u0370\x07" + - "\xCC\x02\x02\u0370\u0371\x05\xA8U\x02\u0371\u0372\x07\xFB\x02\x02\u0372" + - "\u0373\x05`1\x02\u0373\u03DC\x03\x02\x02\x02\u0374\u0375\x07\xB9\x02\x02" + - "\u0375\u0376\x07\xCC\x02\x02\u0376\u03DC\x05\xA8U\x02\u0377\u0378\x07" + - "\xD1\x02\x02\u0378\u0381\x07\xDF\x02\x02\u0379\u037E\x05\x9CO\x02\u037A" + - "\u037B\x07\x06\x02\x02\u037B\u037D\x05\x9CO\x02\u037C\u037A\x03\x02\x02" + - "\x02\u037D\u0380\x03\x02\x02\x02\u037E\u037C\x03\x02\x02\x02\u037E\u037F" + - "\x03\x02\x02\x02\u037F\u0382\x03\x02\x02\x02\u0380\u037E\x03\x02\x02\x02" + - "\u0381\u0379\x03\x02\x02\x02\u0381\u0382\x03\x02\x02\x02\u0382\u03DC\x03" + - "\x02\x02\x02\u0383\u0385\x07+\x02\x02\u0384\u0386\x07\xF7\x02\x02\u0385" + - "\u0384\x03\x02\x02\x02\u0385\u0386\x03\x02\x02\x02\u0386\u03DC\x03\x02" + - "\x02\x02\u0387\u0389\x07\xC0\x02\x02\u0388\u038A\x07\xF7\x02\x02\u0389" + - "\u0388\x03\x02\x02\x02\u0389\u038A\x03\x02\x02\x02\u038A\u03DC\x03\x02" + - "\x02\x02\u038B\u038C\x07\xAF\x02\x02\u038C\u038D\x05\xB0Y\x02\u038D\u038E" + - "\x07Z\x02\x02\u038E\u038F\x05\x10\t\x02\u038F\u03DC\x03\x02\x02\x02\u0390" + - "\u0391\x07>\x02\x02\u0391\u0392\x07\xAF\x02\x02\u0392\u03DC\x05\xB0Y\x02" + - "\u0393\u0394\x07N\x02\x02\u0394\u039E\x05\xB0Y\x02\u0395\u0396\x07\xED" + - "\x02\x02\u0396\u039B\x05`1\x02\u0397\u0398\x07\x06\x02\x02\u0398\u039A" + - "\x05`1\x02\u0399\u0397\x03\x02\x02\x02\u039A\u039D\x03\x02\x02\x02\u039B" + - "\u0399\x03\x02\x02\x02\u039B\u039C\x03\x02\x02\x02\u039C\u039F\x03\x02" + - "\x02\x02\u039D\u039B\x03\x02\x02\x02\u039E\u0395\x03\x02\x02\x02\u039E" + - "\u039F\x03\x02\x02\x02\u039F\u03DC\x03\x02\x02\x02\u03A0\u03A1\x07B\x02" + - "\x02\u03A1\u03A2\x07m\x02\x02\u03A2\u03DC\x05\xB0Y\x02\u03A3\u03A4\x07" + - "B\x02\x02\u03A4\u03A5\x07\xA3\x02\x02\u03A5\u03DC\x05\xB0Y\x02\u03A6\u03A7" + - "\x07\xCD\x02\x02\u03A7\u03A8\x07\xA8\x02\x02\u03A8\u03DC\x05\xA4S\x02" + - "\u03A9\u03AA\x07\xCD\x02\x02\u03AA\u03AB\x07\xDC\x02\x02\u03AB\u03AE\x07" + - "\xFA\x02\x02\u03AC\u03AF\x07~\x02\x02\u03AD\u03AF\x05`1\x02\u03AE\u03AC" + - "\x03\x02\x02\x02\u03AE\u03AD\x03\x02\x02\x02\u03AF\u03DC\x03\x02\x02\x02" + - "\u03B0\u03B1\x07\xEA\x02\x02\u03B1\u03B2\x05\xA8U\x02\u03B2\u03B3\x07" + - "\xCD\x02\x02\u03B3\u03B8\x05\x98M\x02\u03B4\u03B5\x07\x06\x02\x02\u03B5" + - "\u03B7\x05\x98M\x02\u03B6\u03B4\x03\x02\x02\x02\u03B7\u03BA\x03\x02\x02" + - "\x02\u03B8\u03B6\x03\x02\x02\x02\u03B8\u03B9\x03\x02\x02\x02\u03B9\u03BD" + - "\x03\x02\x02\x02\u03BA\u03B8\x03\x02\x02\x02\u03BB\u03BC\x07\xF3\x02\x02" + - "\u03BC\u03BE\x05b2\x02\u03BD\u03BB\x03\x02\x02\x02\u03BD\u03BE\x03\x02" + - "\x02\x02\u03BE\u03DC\x03\x02\x02\x02\u03BF\u03C0\x07\x89\x02\x02\u03C0" + - "\u03C1\x07q\x02\x02\u03C1\u03C6\x05\xA8U\x02\u03C2\u03C4\x07\x1C\x02\x02" + - "\u03C3\u03C2\x03\x02\x02\x02\u03C3\u03C4\x03\x02\x02\x02\u03C4\u03C5\x03" + - "\x02\x02\x02\u03C5\u03C7\x05\xB0Y\x02\u03C6\u03C3\x03\x02\x02\x02\u03C6" + - "\u03C7\x03\x02\x02\x02\u03C7\u03C8\x03\x02\x02\x02\u03C8\u03C9\x07\xED" + - "\x02\x02\u03C9\u03CA\x05B\"\x02\u03CA\u03CB\x07\x9B\x02\x02\u03CB\u03CD" + - "\x05`1\x02\u03CC\u03CE\x05\x88E\x02\u03CD\u03CC\x03\x02\x02\x02\u03CE" + - "\u03CF\x03\x02\x02\x02\u03CF\u03CD\x03\x02\x02\x02\u03CF\u03D0\x03\x02" + - "\x02\x02\u03D0\u03DC\x03\x02\x02\x02\u03D1\u03D2\x07\xCF\x02\x02\u03D2" + - "\u03D3\x07*\x02\x02\u03D3\u03D4\x07\x9B\x02\x02\u03D4\u03D5\x07\xD6\x02" + - "\x02\u03D5\u03DC\x05\xA8U\x02\u03D6\u03D7\x07\xCF\x02\x02\u03D7\u03D8" + - "\x07*\x02\x02\u03D8\u03D9\x07\x9B\x02\x02\u03D9\u03DA\x07(\x02\x02\u03DA" + - "\u03DC\x05\xA8U\x02\u03DB\xD9\x03\x02\x02\x02\u03DB\xDA\x03\x02\x02\x02" + - "\u03DB\xDC\x03\x02\x02\x02\u03DB\xE1\x03\x02\x02\x02\u03DB\xF1\x03\x02" + - "\x02\x02\u03DB\xFB\x03\x02\x02\x02\u03DB\u0102\x03\x02\x02\x02\u03DB\u0109" + - "\x03\x02\x02\x02\u03DB\u012B\x03\x02\x02\x02\u03DB\u0145\x03\x02\x02\x02" + - "\u03DB\u014C\x03\x02\x02\x02\u03DB\u0154\x03\x02\x02\x02\u03DB\u015B\x03" + - "\x02\x02\x02\u03DB\u015E\x03\x02\x02\x02\u03DB\u0169\x03\x02\x02\x02\u03DB" + - "\u0172\x03\x02\x02\x02\u03DB\u017B\x03\x02\x02\x02\u03DB\u018C\x03\x02" + - "\x02\x02\u03DB\u019B\x03\x02\x02\x02\u03DB\u01AB\x03\x02\x02\x02\u03DB" + - "\u01B2\x03\x02\x02\x02\u03DB\u01B9\x03\x02\x02\x02\u03DB\u01D0\x03\x02" + - "\x02\x02\u03DB\u01D6\x03\x02\x02\x02\u03DB\u01EE\x03\x02\x02\x02\u03DB" + - "\u0200\x03\x02\x02\x02\u03DB\u0204\x03\x02\x02\x02\u03DB\u020C\x03\x02" + - "\x02\x02\u03DB\u0218\x03\x02\x02\x02\u03DB\u0220\x03\x02\x02\x02\u03DB" + - "\u0227\x03\x02\x02\x02\u03DB\u022E\x03\x02\x02\x02\u03DB\u0235\x03\x02" + - "\x02\x02\u03DB\u0244\x03\x02\x02\x02\u03DB\u0250\x03\x02\x02\x02\u03DB" + - "\u0253\x03\x02\x02\x02\u03DB\u026C\x03\x02\x02\x02\u03DB\u0285\x03\x02" + - "\x02\x02\u03DB\u0290\x03\x02\x02\x02\u03DB\u02A9\x03\x02\x02\x02\u03DB" + - "\u02BE\x03\x02\x02\x02\u03DB\u02D8\x03\x02\x02\x02\u03DB\u02E1\x03\x02" + - "\x02\x02\u03DB\u02F6\x03\x02\x02\x02\u03DB\u02FA\x03\x02\x02\x02\u03DB" + - "\u02FE\x03\x02\x02\x02\u03DB\u0302\x03\x02\x02\x02\u03DB\u0307\x03\x02" + - "\x02\x02\u03DB\u0315\x03\x02\x02\x02\u03DB\u0323\x03\x02\x02\x02\u03DB" + - "\u032D\x03\x02\x02\x02\u03DB\u033B\x03\x02\x02\x02\u03DB\u033F\x03\x02" + - "\x02\x02\u03DB\u0346\x03\x02\x02\x02\u03DB\u034F\x03\x02\x02\x02\u03DB" + - "\u0356\x03\x02\x02\x02\u03DB\u0358\x03\x02\x02\x02\u03DB\u035A\x03\x02" + - "\x02\x02\u03DB\u0364\x03\x02\x02\x02\u03DB\u036E\x03\x02\x02\x02\u03DB" + - "\u0374\x03\x02\x02\x02\u03DB\u0377\x03\x02\x02\x02\u03DB\u0383\x03\x02" + - "\x02\x02\u03DB\u0387\x03\x02\x02\x02\u03DB\u038B\x03\x02\x02\x02\u03DB" + - "\u0390\x03\x02\x02\x02\u03DB\u0393\x03\x02\x02\x02\u03DB\u03A0\x03\x02" + - "\x02\x02\u03DB\u03A3\x03\x02\x02\x02\u03DB\u03A6\x03\x02\x02\x02\u03DB" + - "\u03A9\x03\x02\x02\x02\u03DB\u03B0\x03\x02\x02\x02\u03DB\u03BF\x03\x02" + - "\x02\x02\u03DB\u03D1\x03\x02\x02\x02\u03DB\u03D6\x03\x02\x02\x02\u03DC" + - "\x11\x03\x02\x02\x02\u03DD\u03DF\x05\x14\v\x02\u03DE\u03DD\x03\x02\x02" + - "\x02\u03DE\u03DF\x03\x02\x02\x02\u03DF\u03E0\x03\x02\x02\x02\u03E0\u03E1" + - "\x05$\x13\x02\u03E1\x13\x03\x02\x02\x02\u03E2\u03E4\x07\xF5\x02\x02\u03E3" + - "\u03E5\x07\xB4\x02\x02\u03E4\u03E3\x03\x02\x02\x02\u03E4\u03E5\x03\x02" + - "\x02\x02\u03E5\u03E6\x03\x02\x02\x02\u03E6\u03EB\x05<\x1F\x02\u03E7\u03E8" + - "\x07\x06\x02\x02\u03E8\u03EA\x05<\x1F\x02\u03E9\u03E7\x03\x02\x02\x02" + - "\u03EA\u03ED\x03\x02\x02\x02\u03EB\u03E9\x03\x02\x02\x02\u03EB\u03EC\x03" + - "\x02\x02\x02\u03EC\x15\x03\x02\x02\x02\u03ED\u03EB\x03\x02\x02\x02\u03EE" + - "\u03F1\x05\x18\r\x02\u03EF\u03F1\x05\x1A\x0E\x02\u03F0\u03EE\x03\x02\x02" + - "\x02\u03F0\u03EF\x03\x02\x02\x02\u03F1\x17\x03\x02\x02\x02\u03F2\u03F3" + - "\x05\xB0Y\x02\u03F3\u03F6\x05~@\x02\u03F4\u03F5\x07\x95\x02\x02\u03F5" + - "\u03F7\x07\x96\x02\x02\u03F6\u03F4\x03\x02\x02\x02\u03F6\u03F7\x03\x02" + - "\x02\x02\u03F7\u03FA\x03\x02\x02\x02\u03F8\u03F9\x07*\x02\x02\u03F9\u03FB" + - "\x05n8\x02\u03FA\u03F8\x03\x02\x02\x02\u03FA\u03FB\x03\x02\x02\x02\u03FB" + - "\u03FE\x03\x02\x02\x02\u03FC\u03FD\x07\xF5\x02\x02\u03FD\u03FF\x05\x1C" + - "\x0F\x02\u03FE\u03FC\x03\x02\x02\x02\u03FE\u03FF\x03\x02\x02\x02\u03FF" + - "\x19\x03\x02\x02\x02\u0400\u0401\x07|\x02\x02\u0401\u0404\x05\xA8U\x02" + - "\u0402\u0403\t\x06\x02\x02\u0403\u0405\x07\xB1\x02\x02\u0404\u0402\x03" + - "\x02\x02\x02\u0404\u0405\x03\x02\x02\x02\u0405\x1B\x03\x02\x02\x02\u0406" + - "\u0407\x07\x04\x02\x02\u0407\u0408\x05\x1E\x10\x02\u0408\u0409\x07\x05" + - "\x02\x02\u0409\x1D\x03\x02\x02\x02\u040A\u040F\x05 \x11\x02\u040B\u040C" + - "\x07\x06\x02\x02\u040C\u040E\x05 \x11\x02\u040D\u040B\x03\x02\x02\x02" + - "\u040E\u0411\x03\x02\x02\x02\u040F\u040D\x03\x02\x02\x02\u040F\u0410\x03" + - "\x02\x02\x02\u0410\x1F\x03\x02\x02\x02\u0411\u040F\x03\x02\x02\x02\u0412" + - "\u0413\x05\xB0Y\x02\u0413\u0414\x07\xFB\x02\x02\u0414\u0415\x05\"\x12" + - "\x02\u0415!\x03\x02\x02\x02\u0416\u0419\x07=\x02\x02\u0417\u0419\x05`" + - "1\x02\u0418\u0416\x03\x02\x02\x02\u0418\u0417\x03\x02\x02\x02\u0419#\x03" + - "\x02\x02\x02\u041A\u0425\x05*\x16\x02\u041B\u041C\x07\xA0\x02\x02\u041C" + - "\u041D\x07\"\x02\x02\u041D\u0422\x05.\x18\x02\u041E\u041F\x07\x06\x02" + - "\x02\u041F\u0421\x05.\x18\x02\u0420\u041E\x03\x02\x02\x02\u0421\u0424" + - "\x03\x02\x02\x02\u0422\u0420\x03\x02\x02\x02\u0422\u0423\x03\x02\x02\x02" + - "\u0423\u0426\x03\x02\x02\x02\u0424\u0422\x03\x02\x02\x02\u0425\u041B\x03" + - "\x02\x02\x02\u0425\u0426\x03\x02\x02\x02\u0426\u042C\x03\x02\x02\x02\u0427" + - "\u0428\x07\x99\x02\x02\u0428\u042A\x05(\x15\x02\u0429\u042B\t\x07\x02" + - "\x02\u042A\u0429\x03\x02\x02\x02\u042A\u042B\x03\x02\x02\x02\u042B\u042D" + - "\x03\x02\x02\x02\u042C\u0427\x03\x02\x02\x02\u042C\u042D\x03\x02\x02\x02" + - "\u042D\u043B\x03\x02\x02\x02\u042E\u042F\x07}\x02\x02\u042F\u043C\x05" + - "&\x14\x02\u0430\u0431\x07S\x02\x02\u0431\u0433\t\b\x02\x02\u0432\u0434" + - "\x05(\x15\x02\u0433\u0432\x03\x02\x02\x02\u0433\u0434\x03\x02\x02\x02" + - "\u0434\u0435\x03\x02\x02\x02\u0435\u0439\t\x07\x02\x02\u0436\u043A\x07" + - "\x9D\x02\x02\u0437\u0438\x07\xF5\x02\x02\u0438\u043A\x07\xDB\x02\x02\u0439" + - "\u0436\x03\x02\x02\x02\u0439\u0437\x03\x02\x02\x02\u043A\u043C\x03\x02" + - "\x02\x02\u043B\u042E\x03\x02\x02\x02\u043B\u0430\x03\x02\x02\x02\u043B" + - "\u043C\x03\x02\x02\x02\u043C%\x03\x02\x02\x02\u043D\u0440\x07\x16\x02" + - "\x02\u043E\u0440\x05(\x15\x02\u043F\u043D\x03\x02\x02\x02\u043F\u043E" + - "\x03\x02\x02\x02\u0440\'\x03\x02\x02\x02\u0441\u0442\t\t\x02\x02\u0442" + - ")\x03\x02\x02\x02\u0443\u0444\b\x16\x01\x02\u0444\u0445\x05,\x17\x02\u0445" + - "\u0454\x03\x02\x02\x02\u0446\u0447\f\x04\x02\x02\u0447\u0449\x07o\x02" + - "\x02\u0448\u044A\x05> \x02\u0449\u0448\x03\x02\x02\x02\u0449\u044A\x03" + - "\x02\x02\x02\u044A\u044B\x03\x02\x02\x02\u044B\u0453\x05*\x16\x05\u044C" + - "\u044D\f\x03\x02\x02\u044D\u044F\t\n\x02\x02\u044E\u0450\x05> \x02\u044F" + - "\u044E\x03\x02\x02\x02\u044F\u0450\x03\x02\x02\x02\u0450\u0451\x03\x02" + - "\x02\x02\u0451\u0453\x05*\x16\x04\u0452\u0446\x03\x02\x02\x02\u0452\u044C" + - "\x03\x02\x02\x02\u0453\u0456\x03\x02\x02\x02\u0454\u0452\x03\x02\x02\x02" + - "\u0454\u0455\x03\x02\x02\x02\u0455+\x03\x02\x02\x02\u0456\u0454\x03\x02" + - "\x02\x02\u0457\u0468\x050\x19\x02\u0458\u0459\x07\xD6\x02\x02\u0459\u0468" + - "\x05\xA8U\x02\u045A\u045B\x07\xEF\x02\x02\u045B\u0460\x05`1\x02\u045C" + - "\u045D\x07\x06\x02\x02\u045D\u045F\x05`1\x02\u045E\u045C\x03\x02\x02\x02" + - "\u045F\u0462\x03\x02\x02\x02\u0460\u045E\x03\x02\x02\x02\u0460\u0461\x03" + - "\x02\x02\x02\u0461\u0468\x03\x02\x02\x02\u0462\u0460\x03\x02\x02\x02\u0463" + - "\u0464\x07\x04\x02\x02\u0464\u0465\x05$\x13\x02\u0465\u0466\x07\x05\x02" + - "\x02\u0466\u0468\x03\x02\x02\x02\u0467\u0457\x03\x02\x02\x02\u0467\u0458" + - "\x03\x02\x02\x02\u0467\u045A\x03\x02\x02\x02\u0467\u0463\x03\x02\x02\x02" + - "\u0468-\x03\x02\x02\x02\u0469\u046B\x05`1\x02\u046A\u046C\t\v\x02\x02" + - "\u046B\u046A\x03\x02\x02\x02\u046B\u046C\x03\x02\x02\x02\u046C\u046F\x03" + - "\x02\x02\x02\u046D\u046E\x07\x98\x02\x02\u046E\u0470\t\f\x02\x02\u046F" + - "\u046D\x03\x02\x02\x02\u046F\u0470\x03\x02\x02\x02\u0470/\x03\x02\x02" + - "\x02\u0471\u0473\x07\xCA\x02\x02\u0472\u0474\x05> \x02\u0473\u0472\x03" + - "\x02\x02\x02\u0473\u0474\x03\x02\x02\x02\u0474\u0475\x03\x02\x02\x02\u0475" + - "\u047A\x05@!\x02\u0476\u0477\x07\x06\x02\x02\u0477\u0479\x05@!\x02\u0478" + - "\u0476\x03\x02\x02\x02\u0479\u047C\x03\x02\x02\x02\u047A\u0478\x03\x02" + - "\x02\x02\u047A\u047B\x03\x02\x02\x02\u047B\u0486\x03\x02\x02\x02\u047C" + - "\u047A\x03\x02\x02\x02\u047D\u047E\x07Z\x02\x02\u047E\u0483\x05B\"\x02" + - "\u047F\u0480\x07\x06\x02\x02\u0480\u0482\x05B\"\x02\u0481\u047F\x03\x02" + - "\x02\x02\u0482\u0485\x03\x02\x02\x02\u0483\u0481\x03\x02\x02\x02\u0483" + - "\u0484\x03\x02\x02\x02\u0484\u0487\x03\x02\x02\x02\u0485\u0483\x03\x02" + - "\x02\x02\u0486\u047D\x03\x02\x02\x02\u0486\u0487\x03\x02\x02\x02\u0487" + - "\u048A\x03\x02\x02\x02\u0488\u0489\x07\xF3\x02\x02\u0489\u048B\x05b2\x02" + - "\u048A\u0488\x03\x02\x02\x02\u048A\u048B\x03\x02\x02\x02\u048B\u048F\x03" + - "\x02\x02\x02\u048C\u048D\x07b\x02\x02\u048D\u048E\x07\"\x02\x02\u048E" + - "\u0490\x052\x1A\x02\u048F\u048C\x03\x02\x02\x02\u048F\u0490\x03\x02\x02" + - "\x02\u0490\u0493\x03\x02\x02\x02\u0491\u0492\x07e\x02\x02\u0492\u0494" + - "\x05b2\x02\u0493\u0491\x03\x02\x02\x02\u0493\u0494\x03\x02\x02\x02\u0494" + - "\u049E\x03\x02\x02\x02\u0495\u0496\x07\xF4\x02\x02\u0496\u049B\x058\x1D" + - "\x02\u0497\u0498\x07\x06\x02\x02\u0498\u049A\x058\x1D\x02\u0499\u0497" + - "\x03\x02\x02\x02\u049A\u049D\x03\x02\x02\x02\u049B\u0499\x03\x02\x02\x02" + - "\u049B\u049C\x03\x02\x02\x02\u049C\u049F\x03\x02\x02\x02\u049D\u049B\x03" + - "\x02\x02\x02\u049E\u0495\x03\x02\x02\x02\u049E\u049F\x03\x02\x02\x02\u049F" + - "1\x03\x02\x02\x02\u04A0\u04A2\x05> \x02\u04A1\u04A0\x03\x02\x02\x02\u04A1" + - "\u04A2\x03\x02\x02\x02\u04A2\u04A3\x03\x02\x02\x02\u04A3\u04A8\x054\x1B" + - "\x02\u04A4\u04A5\x07\x06\x02\x02\u04A5\u04A7\x054\x1B\x02\u04A6\u04A4" + - "\x03\x02\x02\x02\u04A7\u04AA\x03\x02\x02\x02\u04A8\u04A6\x03\x02\x02\x02" + - "\u04A8\u04A9\x03\x02\x02\x02\u04A93\x03\x02\x02\x02\u04AA\u04A8\x03\x02" + - "\x02\x02\u04AB\u04D4\x056\x1C\x02\u04AC\u04AD\x07\xC1\x02\x02\u04AD\u04B6" + - "\x07\x04\x02\x02\u04AE\u04B3\x05`1\x02\u04AF\u04B0\x07\x06\x02\x02\u04B0" + - "\u04B2\x05`1\x02\u04B1\u04AF\x03\x02\x02\x02\u04B2\u04B5\x03\x02\x02\x02" + - "\u04B3\u04B1\x03\x02\x02\x02\u04B3\u04B4\x03\x02\x02\x02\u04B4\u04B7\x03" + - "\x02\x02\x02\u04B5\u04B3\x03\x02\x02\x02\u04B6\u04AE\x03\x02\x02\x02\u04B6" + - "\u04B7\x03\x02\x02\x02\u04B7\u04B8\x03\x02\x02\x02\u04B8\u04D4\x07\x05" + - "\x02\x02\u04B9\u04BA\x070\x02\x02\u04BA\u04C3\x07\x04\x02\x02\u04BB\u04C0" + - "\x05`1\x02\u04BC\u04BD\x07\x06\x02\x02\u04BD\u04BF\x05`1\x02\u04BE\u04BC" + - "\x03\x02\x02\x02\u04BF\u04C2\x03\x02\x02\x02\u04C0\u04BE\x03\x02\x02\x02" + - "\u04C0\u04C1\x03\x02\x02\x02\u04C1\u04C4\x03\x02\x02\x02\u04C2\u04C0\x03" + - "\x02\x02\x02\u04C3\u04BB\x03\x02\x02\x02\u04C3\u04C4\x03\x02\x02\x02\u04C4" + - "\u04C5\x03\x02\x02\x02\u04C5\u04D4\x07\x05\x02\x02\u04C6\u04C7\x07c\x02" + - "\x02\u04C7\u04C8\x07\xCE\x02\x02\u04C8\u04C9\x07\x04\x02\x02\u04C9\u04CE" + - "\x056\x1C\x02\u04CA\u04CB\x07\x06\x02\x02\u04CB\u04CD\x056\x1C\x02\u04CC" + - "\u04CA\x03\x02\x02\x02\u04CD\u04D0\x03\x02\x02\x02\u04CE\u04CC\x03\x02" + - "\x02\x02\u04CE\u04CF\x03\x02\x02\x02\u04CF\u04D1\x03\x02\x02\x02\u04D0" + - "\u04CE\x03\x02\x02\x02\u04D1\u04D2\x07\x05\x02\x02\u04D2\u04D4\x03\x02" + - "\x02\x02\u04D3\u04AB\x03\x02\x02\x02\u04D3\u04AC\x03\x02\x02\x02\u04D3" + - "\u04B9\x03\x02\x02\x02\u04D3\u04C6\x03\x02\x02\x02\u04D45\x03\x02\x02" + - "\x02\u04D5\u04DE\x07\x04\x02\x02\u04D6\u04DB\x05`1\x02\u04D7\u04D8\x07" + - "\x06\x02\x02\u04D8\u04DA\x05`1\x02\u04D9\u04D7\x03\x02\x02\x02\u04DA\u04DD" + - "\x03\x02\x02\x02\u04DB\u04D9\x03\x02\x02\x02\u04DB\u04DC\x03\x02\x02\x02" + - "\u04DC\u04DF\x03\x02\x02\x02\u04DD\u04DB\x03\x02\x02\x02\u04DE\u04D6\x03" + - "\x02\x02\x02\u04DE\u04DF\x03\x02\x02\x02\u04DF\u04E0\x03\x02\x02\x02\u04E0" + - "\u04E3\x07\x05\x02\x02\u04E1\u04E3\x05`1\x02\u04E2\u04D5\x03\x02\x02\x02" + - "\u04E2\u04E1\x03\x02\x02\x02\u04E37\x03\x02\x02\x02\u04E4\u04E5\x05\xB0" + - "Y\x02\u04E5\u04E6\x07\x1C\x02\x02\u04E6\u04E7\x07\x04\x02\x02\u04E7\u04E8" + - "\x05:\x1E\x02\u04E8\u04E9\x07\x05\x02\x02\u04E99\x03\x02\x02\x02\u04EA" + - "\u04EC\x05\xB0Y\x02\u04EB\u04EA\x03\x02\x02\x02\u04EB\u04EC\x03\x02\x02" + - "\x02\u04EC\u04F7\x03\x02\x02\x02\u04ED\u04EE\x07\xA5\x02\x02\u04EE\u04EF" + - "\x07\"\x02\x02\u04EF\u04F4\x05`1\x02\u04F0\u04F1\x07\x06\x02\x02\u04F1" + - "\u04F3\x05`1\x02\u04F2\u04F0\x03\x02\x02\x02\u04F3\u04F6\x03\x02\x02\x02" + - "\u04F4\u04F2\x03\x02\x02\x02\u04F4\u04F5\x03\x02\x02\x02\u04F5\u04F8\x03" + - "\x02\x02\x02\u04F6\u04F4\x03\x02\x02\x02\u04F7\u04ED\x03\x02\x02\x02\u04F7" + - "\u04F8\x03\x02\x02\x02\u04F8\u0503\x03\x02\x02\x02\u04F9\u04FA\x07\xA0" + - "\x02\x02\u04FA\u04FB\x07\"\x02\x02\u04FB\u0500\x05.\x18\x02\u04FC\u04FD" + - "\x07\x06\x02\x02\u04FD\u04FF\x05.\x18\x02\u04FE\u04FC\x03\x02\x02\x02" + - "\u04FF\u0502\x03\x02\x02\x02\u0500\u04FE\x03\x02\x02\x02\u0500\u0501\x03" + - "\x02\x02\x02\u0501\u0504\x03\x02\x02\x02\u0502\u0500\x03\x02\x02\x02\u0503" + - "\u04F9\x03\x02\x02\x02\u0503\u0504\x03\x02\x02\x02\u0504\u0506\x03\x02" + - "\x02\x02\u0505\u0507\x05\x8CG\x02\u0506\u0505\x03\x02\x02\x02\u0506\u0507" + - "\x03\x02\x02\x02\u0507;\x03\x02\x02\x02\u0508\u050A\x05\xB0Y\x02\u0509" + - "\u050B\x05\\/\x02\u050A\u0509\x03\x02\x02\x02\u050A\u050B\x03\x02\x02" + - "\x02\u050B\u050C\x03\x02\x02\x02\u050C\u050D\x07\x1C\x02\x02\u050D\u050E" + - "\x07\x04\x02\x02\u050E\u050F\x05\x12\n\x02\u050F\u0510\x07\x05\x02\x02" + - "\u0510=\x03\x02\x02\x02\u0511\u0512\t\r\x02\x02\u0512?\x03\x02\x02\x02" + - "\u0513\u0518\x05`1\x02\u0514\u0516\x07\x1C\x02\x02\u0515\u0514\x03\x02" + - "\x02\x02\u0515\u0516\x03\x02\x02\x02\u0516\u0517\x03\x02\x02\x02\u0517" + - "\u0519\x05\xB0Y\x02\u0518\u0515\x03\x02\x02\x02\u0518\u0519\x03\x02\x02" + - "\x02\u0519\u0523\x03\x02\x02\x02\u051A\u051B\x05h5\x02\u051B\u051C\x07" + - "\x03\x02\x02\u051C\u051F\x07\u0103\x02\x02\u051D\u051E\x07\x1C\x02\x02" + - "\u051E\u0520\x05\\/\x02\u051F\u051D\x03\x02\x02\x02\u051F\u0520\x03\x02" + - "\x02\x02\u0520\u0523\x03\x02\x02\x02\u0521\u0523\x07\u0103\x02\x02\u0522" + - "\u0513\x03\x02\x02\x02\u0522\u051A\x03\x02\x02\x02\u0522\u0521\x03\x02" + - "\x02\x02\u0523A\x03\x02\x02\x02\u0524\u0525\b\"\x01\x02\u0525\u0526\x05" + - "H%\x02\u0526\u0539\x03\x02\x02\x02\u0527\u0535\f\x04\x02\x02\u0528\u0529" + - "\x07/\x02\x02\u0529\u052A\x07v\x02\x02\u052A\u0536\x05H%\x02\u052B\u052C" + - "\x05D#\x02\u052C\u052D\x07v\x02\x02\u052D\u052E\x05B\"\x02\u052E\u052F" + - "\x05F$\x02\u052F\u0536\x03\x02\x02\x02\u0530\u0531\x07\x8C\x02\x02\u0531" + - "\u0532\x05D#\x02\u0532\u0533\x07v\x02\x02\u0533\u0534\x05H%\x02\u0534" + - "\u0536\x03\x02\x02\x02\u0535\u0528\x03\x02\x02\x02\u0535\u052B\x03\x02" + - "\x02\x02\u0535\u0530\x03\x02\x02\x02\u0536\u0538\x03\x02\x02\x02\u0537" + - "\u0527\x03\x02\x02\x02\u0538\u053B\x03\x02\x02\x02\u0539\u0537\x03\x02" + - "\x02\x02\u0539\u053A\x03\x02\x02\x02\u053AC\x03\x02\x02\x02\u053B\u0539" + - "\x03\x02\x02\x02\u053C\u053E\x07l\x02\x02\u053D\u053C\x03\x02\x02\x02" + - "\u053D\u053E\x03\x02\x02\x02\u053E\u054C\x03\x02\x02\x02\u053F\u0541\x07" + - "z\x02\x02\u0540\u0542\x07\xA2\x02\x02\u0541\u0540\x03\x02\x02\x02\u0541" + - "\u0542\x03\x02\x02\x02\u0542\u054C\x03\x02\x02\x02\u0543\u0545\x07\xBD" + - "\x02\x02\u0544\u0546\x07\xA2\x02\x02\u0545\u0544\x03\x02\x02\x02\u0545" + - "\u0546\x03\x02\x02\x02\u0546\u054C\x03\x02\x02\x02\u0547\u0549\x07[\x02" + - "\x02\u0548\u054A\x07\xA2\x02\x02\u0549\u0548\x03\x02\x02\x02\u0549\u054A" + - "\x03\x02\x02\x02\u054A\u054C\x03\x02\x02\x02\u054B\u053D\x03\x02\x02\x02" + - "\u054B\u053F\x03\x02\x02\x02\u054B\u0543\x03\x02\x02\x02\u054B\u0547\x03" + - "\x02\x02\x02\u054CE\x03\x02\x02\x02\u054D\u054E\x07\x9B\x02\x02\u054E" + - "\u055C\x05b2\x02\u054F\u0550\x07\xED\x02\x02\u0550\u0551\x07\x04\x02\x02" + - "\u0551\u0556\x05\xB0Y\x02\u0552\u0553\x07\x06\x02\x02\u0553\u0555\x05" + - "\xB0Y\x02\u0554\u0552\x03\x02\x02\x02\u0555\u0558"; + "\u02BB\u02B4\x03\x02\x02\x02\u02BB\u02B8\x03\x02\x02\x02\u02BB\u02BC\x03" + + "\x02\x02\x02\u02BC\u02BD\x03\x02\x02\x02\u02BD\u02BE\x07\xDE\x02\x02\u02BE" + + "\u02C2\x05\xC6d\x02\u02BF\u02C0\x07\xF5\x02\x02\u02C0\u02C1\x07]\x02\x02" + + "\u02C1\u02C3\x07\x9E\x02\x02\u02C2\u02BF\x03\x02\x02\x02\u02C2\u02C3\x03" + + "\x02\x02\x02\u02C3\u0402\x03\x02\x02\x02\u02C4\u02CF\x07`\x02\x02\u02C5" + + "\u02CA\x05\xA6T\x02\u02C6\u02C7\x07\x05\x02\x02\u02C7\u02C9\x05\xA6T\x02" + + "\u02C8\u02C6\x03\x02\x02\x02\u02C9\u02CC\x03\x02\x02\x02\u02CA\u02C8\x03" + + "\x02\x02\x02\u02CA\u02CB\x03\x02\x02\x02\u02CB\u02D0\x03\x02\x02\x02\u02CC" + + "\u02CA\x03\x02\x02\x02\u02CD\u02CE\x07\x16\x02\x02\u02CE\u02D0\x07\xB0" + + "\x02\x02\u02CF\u02C5\x03\x02\x02\x02\u02CF\u02CD\x03\x02\x02\x02\u02D0" + + "\u02D1\x03\x02\x02\x02\u02D1\u02DA\x07\x9B\x02\x02\u02D2\u02D4\x07\xC5" + + "\x02\x02\u02D3\u02D2\x03\x02\x02\x02\u02D3\u02D4\x03\x02\x02\x02\u02D4" + + "\u02D5\x03\x02\x02\x02\u02D5\u02DB\x05\xB6\\\x02\u02D6\u02D8\x07\xD6\x02" + + "\x02\u02D7\u02D6\x03\x02\x02\x02\u02D7\u02D8\x03\x02\x02\x02\u02D8\u02D9" + + "\x03\x02\x02\x02\u02D9\u02DB\x05\xAAV\x02\u02DA\u02D3\x03\x02\x02\x02" + + "\u02DA\u02D7\x03\x02\x02\x02\u02DB\u02DC\x03\x02\x02\x02\u02DC\u02DD\x07" + + "\xDE\x02\x02\u02DD\u02DE\x05\xC6d\x02\u02DE\u0402\x03\x02\x02\x02\u02DF" + + "\u02E3\x07\xBC\x02\x02\u02E0\u02E1\x07]\x02\x02\u02E1\u02E2\x07\x9E\x02" + + "\x02\u02E2\u02E4\x07X\x02\x02\u02E3\u02E0\x03\x02\x02\x02\u02E3\u02E4" + + "\x03\x02\x02\x02\u02E4\u02EF\x03\x02\x02\x02\u02E5\u02EA\x05\xA6T\x02" + + "\u02E6\u02E7\x07\x05\x02\x02\u02E7\u02E9\x05\xA6T\x02\u02E8\u02E6\x03" + + "\x02\x02\x02\u02E9\u02EC\x03\x02\x02\x02\u02EA\u02E8\x03\x02\x02\x02\u02EA" + + "\u02EB\x03\x02\x02\x02\u02EB\u02F0\x03\x02\x02\x02\u02EC\u02EA\x03\x02" + + "\x02\x02\u02ED\u02EE\x07\x16\x02\x02\u02EE\u02F0\x07\xB0\x02\x02\u02EF" + + "\u02E5\x03\x02\x02\x02\u02EF\u02ED\x03\x02\x02\x02\u02F0\u02F1\x03\x02" + + "\x02\x02\u02F1\u02FA\x07\x9B\x02\x02\u02F2\u02F4\x07\xC5\x02\x02\u02F3" + + "\u02F2\x03\x02\x02\x02\u02F3\u02F4\x03\x02\x02\x02\u02F4\u02F5\x03\x02" + + "\x02\x02\u02F5\u02FB\x05\xB6\\\x02\u02F6\u02F8\x07\xD6\x02\x02\u02F7\u02F6" + + "\x03\x02\x02\x02\u02F7\u02F8\x03\x02\x02\x02\u02F8\u02F9\x03\x02\x02\x02" + + "\u02F9\u02FB\x05\xAAV\x02\u02FA\u02F3\x03\x02\x02\x02\u02FA\u02F7\x03" + + "\x02\x02\x02\u02FA\u02FB\x03\x02\x02\x02\u02FB\u02FC\x03\x02\x02\x02\u02FC" + + "\u02FD\x07Z\x02\x02\u02FD\u0402\x05\xC6d\x02\u02FE\u02FF\x07\xCF\x02\x02" + + "\u02FF\u0305\x07_\x02\x02\u0300\u0302\x07\x9B\x02\x02\u0301\u0303\x07" + + "\xD6\x02\x02\u0302\u0301\x03\x02\x02\x02\u0302\u0303\x03\x02\x02\x02\u0303" + + "\u0304\x03\x02\x02\x02\u0304\u0306\x05\xAAV\x02\u0305\u0300\x03\x02\x02" + + "\x02\u0305\u0306\x03\x02\x02\x02\u0306\u0402\x03\x02\x02\x02\u0307\u0309" + + "\x07P\x02\x02\u0308\u030A\x07\x18\x02\x02\u0309\u0308\x03\x02\x02\x02" + + "\u0309\u030A\x03\x02\x02\x02\u030A\u030C\x03\x02\x02\x02\u030B\u030D\x07" + + "\xF0\x02\x02\u030C\u030B\x03\x02\x02\x02\u030C\u030D\x03\x02\x02\x02\u030D" + + "\u0319\x03\x02\x02\x02\u030E\u030F\x07\x03\x02\x02\u030F\u0314\x05\x9A" + + "N\x02\u0310\u0311\x07\x05\x02\x02\u0311\u0313\x05\x9AN\x02\u0312\u0310" + + "\x03\x02\x02\x02\u0313\u0316\x03\x02\x02\x02\u0314\u0312\x03\x02\x02\x02" + + "\u0314\u0315\x03\x02\x02\x02\u0315\u0317\x03\x02\x02\x02\u0316\u0314\x03" + + "\x02\x02\x02\u0317\u0318\x07\x04\x02\x02\u0318\u031A\x03\x02\x02\x02\u0319" + + "\u030E\x03\x02\x02\x02\u0319\u031A\x03\x02\x02\x02\u031A\u031B\x03\x02" + + "\x02\x02\u031B\u0402\x05\x10\t\x02\u031C\u031D\x07\xCF\x02\x02\u031D\u031E" + + "\x07.\x02\x02\u031E\u031F\x07\xD6\x02\x02\u031F\u0402\x05\xAAV\x02\u0320" + + "\u0321\x07\xCF\x02\x02\u0321\u0322\x07.\x02\x02\u0322\u0323\x07\xC5\x02" + + "\x02\u0323\u0402\x05\xB6\\\x02\u0324\u0325\x07\xCF\x02\x02\u0325\u0326" + + "\x07.\x02\x02\u0326\u0327\x07\xF1\x02\x02\u0327\u0402\x05\xAEX\x02\u0328" + + "\u0329\x07\xCF\x02\x02\u0329\u032A\x07.\x02\x02\u032A\u032B\x07\x87\x02" + + "\x02\u032B\u032C\x07\xF1\x02\x02\u032C\u0402\x05\xAEX\x02\u032D\u032E" + + "\x07\xCF\x02\x02\u032E\u0331\x07\xD7\x02\x02\u032F\u0330\t\x04\x02\x02" + + "\u0330\u0332\x05\xB6\\\x02\u0331\u032F\x03\x02\x02\x02\u0331\u0332\x03" + + "\x02\x02\x02\u0332\u0339\x03\x02\x02\x02\u0333\u0334\x07|\x02\x02\u0334" + + "\u0337\x05n8\x02\u0335\u0336\x07K\x02\x02\u0336\u0338\x05n8\x02\u0337" + + "\u0335\x03\x02\x02\x02\u0337\u0338\x03\x02\x02\x02\u0338\u033A\x03\x02" + + "\x02\x02\u0339\u0333\x03\x02\x02\x02\u0339\u033A\x03\x02\x02\x02\u033A" + + "\u0402\x03\x02\x02\x02\u033B\u033C\x07\xCF\x02\x02\u033C\u033F\x07\xC6" + + "\x02\x02\u033D\u033E\t\x04\x02\x02\u033E\u0340\x05\xBC_\x02\u033F\u033D" + + "\x03\x02\x02\x02\u033F\u0340\x03\x02\x02\x02\u0340\u0347\x03\x02\x02\x02" + + "\u0341\u0342\x07|\x02\x02\u0342\u0345\x05n8\x02\u0343\u0344\x07K\x02\x02" + + "\u0344\u0346\x05n8\x02\u0345\u0343\x03\x02\x02\x02\u0345\u0346\x03\x02" + + "\x02\x02\u0346\u0348\x03\x02\x02\x02\u0347\u0341\x03\x02\x02\x02\u0347" + + "\u0348\x03\x02\x02\x02\u0348\u0402\x03\x02\x02\x02\u0349\u034A\x07\xCF" + + "\x02\x02\u034A\u0351\x07\'\x02\x02\u034B\u034C\x07|\x02\x02\u034C\u034F" + + "\x05n8\x02\u034D\u034E\x07K\x02\x02\u034E\u0350\x05n8\x02\u034F\u034D" + + "\x03\x02\x02\x02\u034F\u0350\x03\x02\x02\x02\u0350\u0352\x03\x02\x02\x02" + + "\u0351\u034B\x03\x02\x02\x02\u0351\u0352\x03\x02\x02\x02\u0352\u0402\x03" + + "\x02\x02\x02\u0353\u0354\x07\xCF\x02\x02\u0354\u0355\x07)\x02\x02\u0355" + + "\u0357\t\x04\x02\x02\u0356\u0358\x05\xA8U\x02\u0357\u0356\x03\x02\x02" + + "\x02\u0357\u0358\x03\x02\x02\x02\u0358\u035F\x03\x02\x02\x02\u0359\u035A" + + "\x07|\x02\x02\u035A\u035D\x05n8\x02\u035B\u035C\x07K\x02\x02\u035C\u035E" + + "\x05n8\x02\u035D\u035B\x03\x02\x02\x02\u035D\u035E\x03\x02\x02\x02\u035E" + + "\u0360\x03\x02\x02\x02\u035F\u0359\x03\x02\x02\x02\u035F\u0360\x03\x02" + + "\x02\x02\u0360\u0402\x03\x02\x02\x02\u0361\u0362\x07\xCF\x02\x02\u0362" + + "\u0363\x07\xD2\x02\x02\u0363\u0364\x07X\x02\x02\u0364\u0402\x05\xAAV\x02" + + "\u0365\u0366\x07\xCF\x02\x02\u0366\u0367\x07\xD2\x02\x02\u0367\u0368\x07" + + "X\x02\x02\u0368\u0369\x07\x03\x02\x02\u0369\u036A\x05\x12\n\x02\u036A" + + "\u036B\x07\x04\x02\x02\u036B\u0402\x03\x02\x02\x02\u036C\u036E\x07\xCF" + + "\x02\x02\u036D\u036F\x071\x02\x02\u036E\u036D\x03\x02\x02\x02\u036E\u036F" + + "\x03\x02\x02\x02\u036F\u0370\x03\x02\x02\x02\u0370\u0373\x07\xBF\x02\x02" + + "\u0371\u0372\t\x04\x02\x02\u0372\u0374\x05\xCAf\x02\u0373\u0371\x03\x02" + + "\x02\x02\u0373\u0374\x03\x02\x02\x02\u0374\u0402\x03\x02\x02\x02\u0375" + + "\u0376\x07\xCF\x02\x02\u0376\u0377\x07\xBE\x02\x02\u0377\u037A\x07_\x02" + + "\x02\u0378\u0379\t\x04\x02\x02\u0379\u037B\x05\xCAf\x02\u037A\u0378\x03" + + "\x02\x02\x02\u037A\u037B\x03\x02\x02\x02\u037B\u0402\x03\x02\x02\x02\u037C" + + "\u037D\x07B\x02\x02\u037D\u0402\x05\xA8U\x02\u037E\u037F\x07A\x02\x02" + + "\u037F\u0402\x05\xA8U\x02\u0380\u0381\x07\xCF\x02\x02\u0381\u0388\x07" + + "\\\x02\x02\u0382\u0383\x07|\x02\x02\u0383\u0386\x05n8\x02\u0384\u0385" + + "\x07K\x02\x02\u0385\u0387\x05n8\x02\u0386\u0384\x03\x02\x02\x02\u0386" + + "\u0387\x03\x02\x02\x02\u0387\u0389\x03\x02\x02\x02\u0388\u0382\x03\x02" + + "\x02\x02\u0388\u0389\x03\x02\x02\x02\u0389\u0402\x03\x02\x02\x02\u038A" + + "\u038B\x07\xCF\x02\x02\u038B\u0392\x07\xCC\x02\x02\u038C\u038D\x07|\x02" + + "\x02\u038D\u0390\x05n8\x02\u038E\u038F\x07K\x02\x02\u038F\u0391\x05n8" + + "\x02\u0390\u038E\x03\x02\x02\x02\u0390\u0391\x03\x02\x02\x02\u0391\u0393" + + "\x03\x02\x02\x02\u0392\u038C\x03\x02\x02\x02\u0392\u0393\x03\x02\x02\x02" + + "\u0393\u0402\x03\x02\x02\x02\u0394\u0395\x07\xCD\x02\x02\u0395\u0396\x07" + + "\xCC\x02\x02\u0396\u0397\x05\xC2b\x02\u0397\u0398\x07\xFB\x02\x02\u0398" + + "\u0399\x05`1\x02\u0399\u0402\x03\x02\x02\x02\u039A\u039B\x07\xB9\x02\x02" + + "\u039B\u039C\x07\xCC\x02\x02\u039C\u0402\x05\xC2b\x02\u039D\u039E\x07" + + "\xD1\x02\x02\u039E\u03A7\x07\xDF\x02\x02\u039F\u03A4\x05\x9CO\x02\u03A0" + + "\u03A1\x07\x05\x02\x02\u03A1\u03A3\x05\x9CO\x02\u03A2\u03A0\x03\x02\x02" + + "\x02\u03A3\u03A6\x03\x02\x02\x02\u03A4\u03A2\x03\x02\x02\x02\u03A4\u03A5" + + "\x03\x02\x02\x02\u03A5\u03A8\x03\x02\x02\x02\u03A6\u03A4\x03\x02\x02\x02" + + "\u03A7\u039F\x03\x02\x02\x02\u03A7\u03A8\x03\x02\x02\x02\u03A8\u0402\x03" + + "\x02\x02\x02\u03A9\u03AB\x07+\x02\x02\u03AA\u03AC\x07\xF7\x02\x02\u03AB" + + "\u03AA\x03\x02\x02\x02\u03AB\u03AC\x03\x02\x02\x02\u03AC\u0402\x03\x02" + + "\x02\x02\u03AD\u03AF\x07\xC0\x02\x02\u03AE\u03B0\x07\xF7\x02\x02\u03AF" + + "\u03AE\x03\x02\x02\x02\u03AF\u03B0\x03\x02\x02\x02\u03B0\u0402\x03\x02" + + "\x02\x02\u03B1\u03B2\x07\xAF\x02\x02\u03B2\u03B3\x05\xCAf\x02\u03B3\u03B4" + + "\x07Z\x02\x02\u03B4\u03B5\x05\x10\t\x02\u03B5\u0402\x03\x02\x02\x02\u03B6" + + "\u03B7\x07>\x02\x02\u03B7\u03B8\x07\xAF\x02\x02\u03B8\u0402\x05\xCAf\x02" + + "\u03B9\u03BA\x07N\x02\x02\u03BA\u03C4\x05\xCAf\x02\u03BB\u03BC\x07\xED" + + "\x02\x02\u03BC\u03C1\x05`1\x02\u03BD\u03BE\x07\x05\x02\x02\u03BE\u03C0" + + "\x05`1\x02\u03BF\u03BD\x03\x02\x02\x02\u03C0\u03C3\x03\x02\x02\x02\u03C1" + + "\u03BF\x03\x02\x02\x02\u03C1\u03C2\x03\x02\x02\x02\u03C2\u03C5\x03\x02" + + "\x02\x02\u03C3\u03C1\x03\x02\x02\x02\u03C4\u03BB\x03\x02\x02\x02\u03C4" + + "\u03C5\x03\x02\x02\x02\u03C5\u0402\x03\x02\x02\x02\u03C6\u03C7\x07B\x02" + + "\x02\u03C7\u03C8\x07m\x02\x02\u03C8\u0402\x05\xCAf\x02\u03C9\u03CA\x07" + + "B\x02\x02\u03CA\u03CB\x07\xA3\x02\x02\u03CB\u0402\x05\xCAf\x02\u03CC\u03CD" + + "\x07\xCD\x02\x02\u03CD\u03CE\x07\xA8\x02\x02\u03CE\u0402\x05\xA4S\x02" + + "\u03CF\u03D0\x07\xCD\x02\x02\u03D0\u03D1\x07\xDC\x02\x02\u03D1\u03D4\x07" + + "\xFA\x02\x02\u03D2\u03D5\x07~\x02\x02\u03D3\u03D5\x05`1\x02\u03D4\u03D2" + + "\x03\x02\x02\x02\u03D4\u03D3\x03\x02\x02\x02\u03D5\u0402\x03\x02\x02\x02" + + "\u03D6\u03D7\x07\xEA\x02\x02\u03D7\u03D8\x05\xAAV\x02\u03D8\u03D9\x07" + + "\xCD\x02\x02\u03D9\u03DE\x05\x98M\x02\u03DA\u03DB\x07\x05\x02\x02\u03DB" + + "\u03DD\x05\x98M\x02\u03DC\u03DA\x03\x02\x02\x02\u03DD\u03E0\x03\x02\x02" + + "\x02\u03DE\u03DC\x03\x02\x02\x02\u03DE\u03DF\x03\x02\x02\x02\u03DF\u03E3" + + "\x03\x02\x02\x02\u03E0\u03DE\x03\x02\x02\x02\u03E1\u03E2\x07\xF3\x02\x02" + + "\u03E2\u03E4\x05b2\x02\u03E3\u03E1\x03\x02\x02\x02\u03E3\u03E4\x03\x02" + + "\x02\x02\u03E4\u0402\x03\x02\x02\x02\u03E5\u03E6\x07\x89\x02\x02\u03E6" + + "\u03E7\x07q\x02\x02\u03E7\u03EC\x05\xAAV\x02\u03E8\u03EA\x07\x1C\x02\x02" + + "\u03E9\u03E8\x03\x02\x02\x02\u03E9\u03EA\x03\x02\x02\x02\u03EA\u03EB\x03" + + "\x02\x02\x02\u03EB\u03ED\x05\xCAf\x02\u03EC\u03E9\x03\x02\x02\x02\u03EC" + + "\u03ED\x03\x02\x02\x02\u03ED\u03EE\x03\x02\x02\x02\u03EE\u03EF\x07\xED" + + "\x02\x02\u03EF\u03F0\x05B\"\x02\u03F0\u03F1\x07\x9B\x02\x02\u03F1\u03F3" + + "\x05`1\x02\u03F2\u03F4\x05\x88E\x02\u03F3\u03F2\x03\x02\x02\x02\u03F4" + + "\u03F5\x03\x02\x02\x02\u03F5\u03F3\x03\x02\x02\x02\u03F5\u03F6\x03\x02" + + "\x02\x02\u03F6\u0402\x03\x02\x02\x02\u03F7\u03F8\x07\xCF\x02\x02\u03F8" + + "\u03F9\x07*\x02\x02\u03F9\u03FA\x07\x9B\x02\x02\u03FA\u03FB\x07\xD6\x02" + + "\x02\u03FB\u0402\x05\xAAV\x02\u03FC\u03FD\x07\xCF\x02\x02\u03FD\u03FE" + + "\x07*\x02\x02\u03FE\u03FF\x07\x9B\x02\x02\u03FF\u0400\x07(\x02\x02\u0400" + + "\u0402\x05\xC2b\x02\u0401\xF3\x03\x02\x02\x02\u0401\xF4\x03\x02\x02\x02" + + "\u0401\xF6\x03\x02\x02\x02\u0401\u0106\x03\x02\x02\x02\u0401\u0110\x03" + + "\x02\x02\x02\u0401\u0117\x03\x02\x02\x02\u0401\u011E\x03\x02\x02\x02\u0401" + + "\u0140\x03\x02\x02\x02\u0401\u015A\x03\x02\x02\x02\u0401\u0161\x03\x02" + + "\x02\x02\u0401\u0169\x03\x02\x02\x02\u0401\u0170\x03\x02\x02\x02\u0401" + + "\u0173\x03\x02\x02\x02\u0401\u017E\x03\x02\x02\x02\u0401\u0187\x03\x02" + + "\x02\x02\u0401\u0190\x03\x02\x02\x02\u0401\u01A1\x03\x02\x02\x02\u0401" + + "\u01B0\x03\x02\x02\x02\u0401\u01C0\x03\x02\x02\x02\u0401\u01C7\x03\x02" + + "\x02\x02\u0401\u01CE\x03\x02\x02\x02\u0401\u01E5\x03\x02\x02\x02\u0401" + + "\u01EB\x03\x02\x02\x02\u0401\u0203\x03\x02\x02\x02\u0401\u0215\x03\x02" + + "\x02\x02\u0401\u0219\x03\x02\x02\x02\u0401\u0221\x03\x02\x02\x02\u0401" + + "\u022D\x03\x02\x02\x02\u0401\u0235\x03\x02\x02\x02\u0401\u023C\x03\x02" + + "\x02\x02\u0401\u0243\x03\x02\x02\x02\u0401\u024A\x03\x02\x02\x02\u0401" + + "\u0259\x03\x02\x02\x02\u0401\u0265\x03\x02\x02\x02\u0401\u0268\x03\x02" + + "\x02\x02\u0401\u0281\x03\x02\x02\x02\u0401\u029A\x03\x02\x02\x02\u0401" + + "\u02A5\x03\x02\x02\x02\u0401\u02C4\x03\x02\x02\x02\u0401\u02DF\x03\x02" + + "\x02\x02\u0401\u02FE\x03\x02\x02\x02\u0401\u0307\x03\x02\x02\x02\u0401" + + "\u031C\x03\x02\x02\x02\u0401\u0320\x03\x02\x02\x02\u0401\u0324\x03\x02" + + "\x02\x02\u0401\u0328\x03\x02\x02\x02\u0401\u032D\x03\x02\x02\x02\u0401" + + "\u033B\x03\x02\x02\x02\u0401\u0349\x03\x02\x02\x02\u0401\u0353\x03\x02" + + "\x02\x02\u0401\u0361\x03\x02\x02\x02\u0401\u0365\x03\x02\x02\x02\u0401" + + "\u036C\x03\x02\x02\x02\u0401\u0375\x03\x02\x02\x02\u0401\u037C\x03\x02" + + "\x02\x02\u0401\u037E\x03\x02\x02\x02\u0401\u0380\x03\x02\x02\x02\u0401" + + "\u038A\x03\x02\x02\x02\u0401\u0394\x03\x02\x02\x02\u0401\u039A\x03\x02" + + "\x02\x02\u0401\u039D\x03\x02\x02\x02\u0401\u03A9\x03\x02\x02\x02\u0401" + + "\u03AD\x03\x02\x02\x02\u0401\u03B1\x03\x02\x02\x02\u0401\u03B6\x03\x02" + + "\x02\x02\u0401\u03B9\x03\x02\x02\x02\u0401\u03C6\x03\x02\x02\x02\u0401" + + "\u03C9\x03\x02\x02\x02\u0401\u03CC\x03\x02\x02\x02\u0401\u03CF\x03\x02" + + "\x02\x02\u0401\u03D6\x03\x02\x02\x02\u0401\u03E5\x03\x02\x02\x02\u0401" + + "\u03F7\x03\x02\x02\x02\u0401\u03FC\x03\x02\x02\x02\u0402\x11\x03\x02\x02" + + "\x02\u0403\u0405\x05\x14\v\x02\u0404\u0403\x03\x02\x02\x02\u0404\u0405" + + "\x03\x02\x02\x02\u0405\u0406\x03\x02\x02\x02\u0406\u0407\x05$\x13\x02" + + "\u0407\x13\x03\x02\x02\x02\u0408\u040A\x07\xF5\x02\x02\u0409\u040B\x07" + + "\xB4\x02\x02\u040A\u0409\x03\x02\x02\x02\u040A\u040B\x03\x02\x02\x02\u040B" + + "\u040C\x03\x02\x02\x02\u040C\u0411\x05<\x1F\x02\u040D\u040E\x07\x05\x02" + + "\x02\u040E\u0410\x05<\x1F\x02\u040F\u040D\x03\x02\x02\x02\u0410\u0413" + + "\x03\x02\x02\x02\u0411\u040F\x03\x02\x02\x02\u0411\u0412\x03\x02\x02\x02" + + "\u0412\x15\x03\x02\x02\x02\u0413\u0411\x03\x02\x02\x02\u0414\u0417\x05" + + "\x18\r\x02\u0415\u0417\x05\x1A\x0E\x02\u0416\u0414\x03\x02\x02\x02\u0416" + + "\u0415\x03\x02\x02\x02\u0417\x17\x03\x02\x02\x02\u0418\u0419\x05\xCAf" + + "\x02\u0419\u041C\x05~@\x02\u041A\u041B\x07\x95\x02\x02\u041B\u041D\x07" + + "\x96\x02\x02\u041C\u041A\x03\x02\x02\x02\u041C\u041D\x03\x02\x02\x02\u041D" + + "\u0420\x03\x02\x02\x02\u041E\u041F\x07*\x02\x02\u041F\u0421\x05n8\x02" + + "\u0420\u041E\x03\x02\x02\x02\u0420\u0421\x03\x02\x02\x02\u0421\u0424\x03" + + "\x02\x02\x02\u0422\u0423\x07\xF5\x02\x02\u0423\u0425\x05\x1C\x0F\x02\u0424" + + "\u0422\x03\x02\x02\x02\u0424\u0425\x03\x02\x02\x02\u0425\x19\x03\x02\x02" + + "\x02\u0426\u0427\x07|\x02\x02\u0427\u042A\x05\xAAV\x02\u0428\u0429\t\x05" + + "\x02\x02\u0429\u042B\x07\xB1\x02\x02\u042A\u0428\x03\x02\x02\x02\u042A" + + "\u042B\x03\x02\x02\x02\u042B\x1B\x03\x02\x02\x02\u042C\u042D\x07\x03\x02" + + "\x02\u042D\u042E\x05\x1E\x10\x02\u042E\u042F\x07\x04\x02\x02\u042F\x1D" + + "\x03\x02\x02\x02\u0430\u0435\x05 \x11\x02\u0431\u0432\x07\x05\x02\x02" + + "\u0432\u0434\x05 \x11\x02\u0433\u0431\x03\x02\x02\x02\u0434\u0437\x03" + + "\x02\x02\x02\u0435\u0433\x03\x02\x02\x02\u0435\u0436\x03\x02\x02\x02\u0436" + + "\x1F\x03\x02\x02\x02\u0437\u0435\x03\x02\x02\x02\u0438\u0439\x05\xCAf" + + "\x02\u0439\u043A\x07\xFB\x02\x02\u043A\u043B\x05\"\x12\x02\u043B!\x03" + + "\x02\x02\x02\u043C\u043F\x07=\x02\x02\u043D\u043F\x05`1\x02\u043E\u043C" + + "\x03\x02\x02\x02\u043E\u043D\x03\x02\x02\x02\u043F#\x03\x02\x02\x02\u0440" + + "\u044B\x05*\x16\x02\u0441\u0442\x07\xA0\x02\x02\u0442\u0443\x07\"\x02" + + "\x02\u0443\u0448\x05.\x18\x02\u0444\u0445\x07\x05\x02\x02\u0445\u0447" + + "\x05.\x18\x02\u0446\u0444\x03\x02\x02\x02\u0447\u044A\x03\x02\x02\x02" + + "\u0448\u0446\x03\x02\x02\x02\u0448\u0449\x03\x02\x02\x02\u0449\u044C\x03" + + "\x02\x02\x02\u044A\u0448\x03\x02\x02\x02\u044B\u0441\x03\x02\x02\x02\u044B" + + "\u044C\x03\x02\x02\x02\u044C\u0452\x03\x02\x02\x02\u044D\u044E\x07\x99" + + "\x02\x02\u044E\u0450\x05(\x15\x02\u044F\u0451\t\x06\x02\x02\u0450\u044F" + + "\x03\x02\x02\x02\u0450\u0451\x03\x02\x02\x02\u0451\u0453\x03\x02\x02\x02" + + "\u0452\u044D\x03\x02\x02\x02\u0452\u0453\x03\x02\x02\x02\u0453\u0461\x03" + + "\x02\x02\x02\u0454\u0455\x07}\x02\x02\u0455\u0462\x05&\x14\x02\u0456\u0457" + + "\x07S\x02\x02\u0457\u0459\t\x07\x02\x02\u0458\u045A\x05(\x15\x02\u0459" + + "\u0458\x03\x02\x02\x02\u0459\u045A\x03\x02\x02\x02\u045A\u045B\x03\x02" + + "\x02\x02\u045B\u045F\t\x06\x02\x02\u045C\u0460\x07\x9D\x02\x02\u045D\u045E" + + "\x07\xF5\x02\x02\u045E\u0460\x07\xDB\x02\x02\u045F\u045C\x03\x02\x02\x02" + + "\u045F\u045D\x03\x02\x02\x02\u0460\u0462\x03\x02\x02\x02\u0461\u0454\x03" + + "\x02\x02\x02\u0461\u0456\x03\x02\x02\x02\u0461\u0462\x03\x02\x02\x02\u0462" + + "%\x03\x02\x02\x02\u0463\u0466\x07\x16\x02\x02\u0464\u0466\x05(\x15\x02" + + "\u0465\u0463\x03\x02\x02\x02\u0465\u0464\x03\x02\x02\x02\u0466\'\x03\x02" + + "\x02\x02\u0467\u0468\t\b\x02\x02\u0468)\x03\x02\x02\x02\u0469\u046A\b" + + "\x16\x01\x02\u046A\u046B\x05,\x17\x02\u046B\u047A\x03\x02\x02\x02\u046C" + + "\u046D\f\x04\x02\x02\u046D\u046F\x07o\x02\x02\u046E\u0470\x05> \x02\u046F" + + "\u046E\x03\x02\x02\x02\u046F\u0470\x03\x02\x02\x02\u0470\u0471\x03\x02" + + "\x02\x02\u0471\u0479\x05*\x16\x05\u0472\u0473\f\x03\x02\x02\u0473\u0475" + + "\t\t\x02\x02\u0474\u0476\x05> \x02\u0475\u0474\x03\x02\x02\x02\u0475\u0476" + + "\x03\x02\x02\x02\u0476\u0477\x03\x02\x02\x02\u0477\u0479\x05*\x16\x04" + + "\u0478\u046C\x03\x02\x02\x02\u0478\u0472\x03\x02\x02\x02\u0479\u047C\x03" + + "\x02\x02\x02\u047A\u0478\x03\x02\x02\x02\u047A\u047B\x03\x02\x02\x02\u047B" + + "+\x03\x02\x02\x02\u047C\u047A\x03\x02\x02\x02\u047D\u048E\x050\x19\x02" + + "\u047E\u047F\x07\xD6\x02\x02\u047F\u048E\x05\xAAV\x02\u0480\u0481\x07" + + "\xEF\x02\x02\u0481\u0486\x05`1\x02\u0482\u0483\x07\x05\x02\x02\u0483\u0485" + + "\x05`1\x02\u0484\u0482\x03\x02\x02\x02\u0485\u0488\x03\x02\x02\x02\u0486" + + "\u0484\x03\x02\x02\x02\u0486\u0487\x03\x02\x02\x02\u0487\u048E\x03\x02" + + "\x02\x02\u0488\u0486\x03\x02\x02\x02\u0489\u048A\x07\x03\x02\x02\u048A" + + "\u048B\x05$\x13\x02\u048B\u048C\x07\x04\x02\x02\u048C\u048E\x03\x02\x02" + + "\x02\u048D\u047D\x03\x02\x02\x02\u048D\u047E\x03\x02\x02\x02\u048D\u0480" + + "\x03\x02\x02\x02\u048D\u0489\x03\x02\x02\x02\u048E-\x03\x02\x02\x02\u048F" + + "\u0491\x05`1\x02\u0490\u0492\t\n\x02\x02\u0491\u0490\x03\x02\x02\x02\u0491" + + "\u0492\x03\x02\x02\x02\u0492\u0495\x03\x02\x02\x02\u0493\u0494\x07\x98" + + "\x02\x02\u0494\u0496\t\v\x02\x02\u0495\u0493\x03\x02\x02\x02\u0495\u0496" + + "\x03\x02\x02\x02\u0496/\x03\x02\x02\x02\u0497\u0499\x07\xCA\x02\x02\u0498" + + "\u049A\x05> \x02\u0499\u0498\x03\x02\x02\x02\u0499\u049A\x03\x02\x02\x02" + + "\u049A\u049B\x03\x02\x02\x02\u049B\u04A0\x05@!\x02\u049C\u049D\x07\x05" + + "\x02\x02\u049D\u049F\x05@!\x02\u049E\u049C\x03\x02\x02\x02\u049F\u04A2" + + "\x03\x02\x02\x02\u04A0\u049E\x03\x02\x02\x02\u04A0\u04A1\x03\x02\x02\x02" + + "\u04A1\u04AC\x03\x02\x02\x02\u04A2\u04A0\x03\x02\x02\x02\u04A3\u04A4\x07" + + "Z\x02\x02\u04A4\u04A9\x05B\"\x02\u04A5\u04A6\x07\x05\x02\x02\u04A6\u04A8" + + "\x05B\"\x02\u04A7\u04A5\x03\x02\x02\x02\u04A8\u04AB\x03\x02\x02\x02\u04A9" + + "\u04A7\x03\x02\x02\x02\u04A9\u04AA\x03\x02\x02\x02\u04AA\u04AD\x03\x02" + + "\x02\x02\u04AB\u04A9\x03\x02\x02\x02\u04AC\u04A3\x03\x02\x02\x02\u04AC" + + "\u04AD\x03\x02\x02\x02\u04AD\u04B0\x03\x02\x02\x02\u04AE\u04AF\x07\xF3" + + "\x02\x02\u04AF\u04B1\x05b2\x02\u04B0\u04AE\x03\x02\x02\x02\u04B0\u04B1" + + "\x03\x02\x02\x02\u04B1\u04B5\x03\x02\x02\x02\u04B2\u04B3\x07b\x02\x02" + + "\u04B3\u04B4\x07\"\x02\x02\u04B4\u04B6\x052\x1A\x02\u04B5\u04B2\x03\x02" + + "\x02\x02\u04B5\u04B6\x03\x02\x02\x02\u04B6\u04B9\x03\x02\x02\x02\u04B7" + + "\u04B8\x07e\x02\x02\u04B8\u04BA\x05b2\x02\u04B9\u04B7\x03\x02\x02\x02" + + "\u04B9\u04BA\x03\x02\x02\x02\u04BA\u04C4\x03\x02\x02\x02\u04BB\u04BC\x07" + + "\xF4\x02\x02\u04BC\u04C1\x058\x1D\x02\u04BD\u04BE\x07\x05\x02\x02\u04BE" + + "\u04C0\x058\x1D\x02\u04BF\u04BD\x03\x02\x02\x02\u04C0\u04C3\x03\x02\x02" + + "\x02\u04C1\u04BF\x03\x02\x02\x02\u04C1\u04C2\x03\x02\x02\x02\u04C2\u04C5" + + "\x03\x02\x02\x02\u04C3\u04C1\x03\x02\x02\x02\u04C4\u04BB\x03\x02\x02\x02" + + "\u04C4\u04C5\x03\x02\x02\x02\u04C51\x03\x02\x02\x02\u04C6\u04C8\x05> " + + "\x02\u04C7\u04C6\x03\x02\x02\x02\u04C7\u04C8\x03\x02\x02\x02\u04C8\u04C9" + + "\x03\x02\x02\x02\u04C9\u04CE\x054\x1B\x02\u04CA\u04CB\x07\x05\x02\x02" + + "\u04CB\u04CD\x054\x1B\x02\u04CC\u04CA\x03\x02\x02\x02\u04CD\u04D0\x03" + + "\x02\x02\x02\u04CE\u04CC\x03\x02\x02\x02\u04CE\u04CF\x03\x02\x02\x02\u04CF" + + "3\x03\x02\x02\x02\u04D0\u04CE\x03\x02\x02\x02\u04D1\u04FA\x056\x1C\x02" + + "\u04D2\u04D3\x07\xC1\x02\x02\u04D3\u04DC\x07\x03\x02\x02\u04D4\u04D9\x05" + + "`1\x02\u04D5\u04D6\x07\x05\x02\x02\u04D6\u04D8\x05`1\x02\u04D7\u04D5\x03" + + "\x02\x02\x02\u04D8\u04DB\x03\x02\x02\x02\u04D9\u04D7\x03\x02\x02\x02\u04D9" + + "\u04DA\x03\x02\x02\x02\u04DA\u04DD\x03\x02\x02\x02\u04DB\u04D9\x03\x02" + + "\x02\x02\u04DC\u04D4\x03\x02\x02\x02\u04DC\u04DD\x03\x02\x02\x02\u04DD" + + "\u04DE\x03\x02\x02\x02\u04DE\u04FA\x07\x04\x02\x02\u04DF\u04E0\x070\x02" + + "\x02\u04E0\u04E9\x07\x03\x02\x02\u04E1\u04E6\x05`1\x02\u04E2\u04E3\x07" + + "\x05\x02\x02\u04E3\u04E5\x05`1\x02\u04E4\u04E2\x03\x02\x02\x02\u04E5\u04E8" + + "\x03\x02\x02\x02\u04E6\u04E4\x03\x02\x02\x02\u04E6\u04E7\x03\x02\x02\x02" + + "\u04E7\u04EA\x03\x02\x02\x02\u04E8\u04E6\x03\x02\x02\x02\u04E9\u04E1\x03" + + "\x02\x02\x02\u04E9\u04EA\x03\x02\x02\x02\u04EA\u04EB\x03\x02\x02\x02\u04EB" + + "\u04FA\x07\x04\x02\x02\u04EC\u04ED\x07c\x02\x02\u04ED\u04EE\x07\xCE\x02" + + "\x02\u04EE\u04EF\x07\x03\x02\x02\u04EF\u04F4\x056\x1C\x02\u04F0\u04F1" + + "\x07\x05\x02\x02\u04F1\u04F3\x056\x1C\x02\u04F2\u04F0\x03\x02\x02\x02" + + "\u04F3\u04F6\x03\x02\x02\x02\u04F4\u04F2\x03\x02\x02\x02\u04F4\u04F5\x03" + + "\x02\x02\x02\u04F5\u04F7\x03\x02\x02\x02\u04F6\u04F4\x03\x02\x02\x02\u04F7" + + "\u04F8\x07\x04\x02\x02\u04F8\u04FA\x03\x02\x02\x02\u04F9\u04D1\x03\x02" + + "\x02\x02\u04F9\u04D2\x03\x02\x02\x02\u04F9\u04DF\x03\x02\x02\x02\u04F9" + + "\u04EC\x03\x02\x02\x02\u04FA5\x03\x02\x02\x02\u04FB\u0504\x07\x03\x02" + + "\x02\u04FC\u0501\x05`1\x02\u04FD\u04FE\x07\x05\x02\x02\u04FE\u0500\x05" + + "`1\x02\u04FF\u04FD\x03\x02\x02\x02\u0500\u0503\x03\x02\x02\x02\u0501\u04FF" + + "\x03\x02\x02\x02\u0501\u0502\x03\x02\x02\x02\u0502\u0505\x03\x02\x02\x02" + + "\u0503\u0501\x03\x02\x02\x02\u0504\u04FC\x03\x02\x02\x02\u0504\u0505\x03" + + "\x02\x02\x02\u0505\u0506\x03\x02\x02\x02\u0506\u0509\x07\x04\x02\x02\u0507" + + "\u0509\x05`1\x02\u0508\u04FB\x03\x02\x02\x02\u0508\u0507\x03\x02\x02\x02" + + "\u05097\x03\x02\x02\x02\u050A\u050B\x05\xCAf\x02\u050B\u050C\x07\x1C\x02" + + "\x02\u050C\u050D\x07\x03\x02\x02\u050D\u050E\x05:\x1E\x02\u050E\u050F" + + "\x07\x04\x02\x02\u050F9\x03\x02\x02\x02\u0510\u0512\x05\xCAf\x02\u0511" + + "\u0510\x03\x02\x02\x02\u0511\u0512\x03\x02\x02\x02\u0512\u051D\x03\x02" + + "\x02\x02\u0513\u0514\x07\xA5\x02\x02\u0514\u0515\x07\"\x02\x02\u0515\u051A" + + "\x05`1\x02\u0516\u0517\x07\x05\x02\x02\u0517\u0519\x05`1\x02\u0518\u0516" + + "\x03\x02\x02\x02\u0519\u051C\x03\x02\x02\x02\u051A\u0518\x03\x02\x02\x02" + + "\u051A\u051B\x03\x02\x02\x02\u051B\u051E\x03\x02\x02\x02\u051C\u051A\x03" + + "\x02\x02\x02\u051D\u0513\x03\x02\x02\x02\u051D\u051E\x03\x02\x02\x02\u051E" + + "\u0529\x03\x02\x02\x02\u051F\u0520\x07\xA0\x02\x02\u0520\u0521\x07\"\x02" + + "\x02\u0521\u0526\x05.\x18\x02\u0522\u0523\x07\x05\x02\x02\u0523\u0525" + + "\x05.\x18\x02\u0524\u0522\x03\x02\x02\x02\u0525\u0528\x03\x02\x02\x02" + + "\u0526\u0524\x03\x02\x02\x02\u0526\u0527\x03\x02\x02\x02\u0527\u052A\x03" + + "\x02\x02\x02\u0528\u0526\x03\x02\x02\x02\u0529\u051F\x03\x02\x02\x02\u0529" + + "\u052A\x03\x02\x02\x02\u052A\u052C\x03\x02\x02\x02\u052B\u052D\x05\x8C" + + "G\x02\u052C\u052B\x03\x02\x02\x02\u052C\u052D\x03\x02\x02\x02\u052D;\x03" + + "\x02\x02\x02\u052E\u0530\x05\xCAf\x02\u052F\u0531\x05\\/\x02\u0530\u052F" + + "\x03\x02\x02\x02\u0530\u0531\x03\x02\x02\x02\u0531\u0532\x03\x02\x02\x02" + + "\u0532\u0533\x07\x1C\x02\x02\u0533\u0534\x07\x03\x02\x02\u0534\u0535\x05" + + "\x12\n\x02\u0535\u0536\x07\x04\x02\x02\u0536=\x03\x02\x02\x02\u0537\u0538" + + "\t\f\x02\x02\u0538?\x03\x02\x02\x02\u0539\u053E\x05`1\x02\u053A\u053C" + + "\x07\x1C\x02\x02\u053B\u053A\x03\x02\x02\x02\u053B\u053C\x03\x02\x02\x02" + + "\u053C\u053D\x03\x02\x02\x02\u053D\u053F\x05\xCAf\x02\u053E\u053B\x03" + + "\x02\x02\x02\u053E\u053F\x03\x02\x02\x02\u053F\u0549\x03\x02\x02\x02\u0540" + + "\u0541\x05h5\x02\u0541\u0542\x07\x06\x02\x02\u0542\u0545\x07\u0103\x02" + + "\x02\u0543\u0544\x07\x1C\x02\x02\u0544\u0546"; private static readonly _serializedATNSegment3: string = - "\x03\x02\x02\x02\u0556\u0554\x03\x02\x02\x02\u0556\u0557\x03\x02\x02\x02" + - "\u0557\u0559\x03\x02\x02\x02\u0558\u0556\x03\x02\x02\x02\u0559\u055A\x07" + - "\x05\x02\x02\u055A\u055C\x03\x02\x02\x02\u055B\u054D\x03\x02\x02\x02\u055B" + - "\u054F\x03\x02\x02\x02\u055CG\x03\x02\x02\x02\u055D\u0564\x05L\'\x02\u055E" + - "\u055F\x07\xD8\x02\x02\u055F\u0560\x05J&\x02\u0560\u0561\x07\x04\x02\x02" + - "\u0561\u0562\x05`1\x02\u0562\u0563\x07\x05\x02\x02\u0563\u0565\x03\x02" + - "\x02\x02\u0564\u055E\x03\x02\x02\x02\u0564\u0565\x03\x02\x02\x02\u0565" + - "I\x03\x02\x02\x02\u0566\u0567\t\x0E\x02\x02\u0567K\x03\x02\x02\x02\u0568" + - "\u05BB\x05Z.\x02\u0569\u056A\x07\x86\x02\x02\u056A\u0575\x07\x04\x02\x02" + - "\u056B\u056C\x07\xA5\x02\x02\u056C\u056D\x07\"\x02\x02\u056D\u0572\x05" + - "`1\x02\u056E\u056F\x07\x06\x02\x02\u056F\u0571\x05`1\x02\u0570\u056E\x03" + - "\x02\x02\x02\u0571\u0574\x03\x02\x02\x02\u0572\u0570\x03\x02\x02\x02\u0572" + - "\u0573\x03\x02\x02\x02\u0573\u0576\x03\x02\x02\x02\u0574\u0572\x03\x02" + - "\x02\x02\u0575\u056B\x03\x02\x02\x02\u0575\u0576\x03\x02\x02\x02\u0576" + - "\u0581\x03\x02\x02\x02\u0577\u0578\x07\xA0\x02\x02\u0578\u0579\x07\"\x02" + - "\x02\u0579\u057E\x05.\x18\x02\u057A\u057B\x07\x06\x02\x02\u057B\u057D" + - "\x05.\x18\x02\u057C\u057A\x03\x02\x02\x02\u057D\u0580\x03\x02\x02\x02" + - "\u057E\u057C\x03\x02\x02\x02\u057E\u057F\x03\x02\x02\x02\u057F\u0582\x03" + - "\x02\x02\x02\u0580\u057E\x03\x02\x02\x02\u0581\u0577\x03\x02\x02\x02\u0581" + - "\u0582\x03\x02\x02\x02\u0582\u058C\x03\x02\x02\x02\u0583\u0584\x07\x88" + - "\x02\x02\u0584\u0589\x05N(\x02\u0585\u0586\x07\x06\x02\x02\u0586\u0588" + - "\x05N(\x02\u0587\u0585\x03\x02\x02\x02\u0588\u058B\x03\x02\x02\x02\u0589" + - "\u0587\x03\x02\x02\x02\u0589\u058A\x03\x02\x02\x02\u058A\u058D\x03\x02" + - "\x02\x02\u058B\u0589\x03\x02\x02\x02\u058C\u0583\x03\x02\x02\x02\u058C" + - "\u058D\x03\x02\x02\x02\u058D\u058F\x03\x02\x02\x02\u058E\u0590\x05P)\x02" + - "\u058F\u058E\x03\x02\x02\x02\u058F\u0590\x03\x02\x02\x02\u0590\u0594\x03" + - "\x02\x02\x02\u0591\u0592\x07\x15\x02\x02\u0592\u0593\x07\x83\x02\x02\u0593" + - "\u0595\x05T+\x02\u0594\u0591\x03\x02\x02\x02\u0594\u0595\x03\x02\x02\x02" + - "\u0595\u0597\x03\x02\x02\x02\u0596\u0598\t\x0F\x02\x02\u0597\u0596\x03" + - "\x02\x02\x02\u0597\u0598\x03\x02\x02\x02\u0598\u0599\x03\x02\x02\x02\u0599" + - "\u059A\x07\xA9\x02\x02\u059A\u059B\x07\x04\x02\x02\u059B\u059C\x05\x92" + - "J\x02\u059C\u05A6\x07\x05\x02\x02\u059D\u059E\x07\xD3\x02\x02\u059E\u05A3" + - "\x05V,\x02\u059F\u05A0\x07\x06\x02\x02\u05A0\u05A2\x05V,\x02\u05A1\u059F" + - "\x03\x02\x02\x02\u05A2\u05A5\x03\x02\x02\x02\u05A3\u05A1\x03\x02\x02\x02" + - "\u05A3\u05A4\x03\x02\x02\x02\u05A4\u05A7\x03\x02\x02\x02\u05A5\u05A3\x03" + - "\x02\x02\x02\u05A6\u059D\x03\x02\x02\x02\u05A6\u05A7\x03\x02\x02\x02\u05A7" + - "\u05A8\x03\x02\x02\x02\u05A8\u05A9\x07C\x02\x02\u05A9\u05AE\x05X-\x02" + - "\u05AA\u05AB\x07\x06\x02\x02\u05AB\u05AD\x05X-\x02\u05AC\u05AA\x03\x02" + - "\x02\x02\u05AD\u05B0\x03\x02\x02\x02\u05AE\u05AC\x03\x02\x02\x02\u05AE" + - "\u05AF\x03\x02\x02\x02\u05AF\u05B1\x03\x02\x02\x02\u05B0\u05AE\x03\x02" + - "\x02\x02\u05B1\u05B9\x07\x05\x02\x02\u05B2\u05B4\x07\x1C\x02\x02\u05B3" + - "\u05B2\x03\x02\x02\x02\u05B3\u05B4\x03\x02\x02\x02\u05B4\u05B5\x03\x02" + - "\x02\x02\u05B5\u05B7\x05\xB0Y\x02\u05B6\u05B8\x05\\/\x02\u05B7\u05B6\x03" + - "\x02\x02\x02\u05B7\u05B8\x03\x02\x02\x02\u05B8\u05BA\x03\x02\x02\x02\u05B9" + - "\u05B3\x03\x02\x02\x02\u05B9\u05BA\x03\x02\x02\x02\u05BA\u05BC\x03\x02" + - "\x02\x02\u05BB\u0569\x03\x02\x02\x02\u05BB\u05BC\x03\x02\x02\x02\u05BC" + - "M\x03\x02\x02\x02\u05BD\u05BE\x05`1\x02\u05BE\u05BF\x07\x1C\x02\x02\u05BF" + - "\u05C0\x05\xB0Y\x02\u05C0O\x03\x02\x02\x02\u05C1\u05C2\x07\x9C\x02\x02" + - "\u05C2\u05C3\x07\xC2\x02\x02\u05C3\u05C4\x07\xAA\x02\x02\u05C4\u05CD\x07" + - "\x83\x02\x02\u05C5\u05C6\x07\x16\x02\x02\u05C6\u05C7\x07\xC3\x02\x02\u05C7" + - "\u05C8\x07\xAA\x02\x02\u05C8\u05CA\x07\x83\x02\x02\u05C9\u05CB\x05R*\x02" + - "\u05CA\u05C9\x03\x02\x02\x02\u05CA\u05CB\x03\x02\x02\x02\u05CB\u05CD\x03" + - "\x02\x02\x02\u05CC\u05C1\x03\x02\x02\x02\u05CC\u05C5\x03\x02\x02\x02\u05CD" + - "Q\x03\x02\x02\x02\u05CE\u05CF\x07\xCF\x02\x02\u05CF\u05D0\x07I\x02\x02" + - "\u05D0\u05D8\x07\x85\x02\x02\u05D1\u05D2\x07\x9A\x02\x02\u05D2\u05D3\x07" + - "I\x02\x02\u05D3\u05D8\x07\x85\x02\x02\u05D4\u05D5\x07\xF5\x02\x02\u05D5" + - "\u05D6\x07\xE8\x02\x02\u05D6\u05D8\x07\xC3\x02\x02\u05D7\u05CE\x03\x02" + - "\x02\x02\u05D7\u05D1\x03\x02\x02\x02\u05D7\u05D4\x03\x02\x02\x02\u05D8" + - "S\x03\x02\x02\x02\u05D9\u05DA\x07\x07\x02\x02\u05DA\u05DB\x07\xDE\x02" + - "\x02\u05DB\u05DC\x07\x8D\x02\x02\u05DC\u05ED\x07\xC2\x02\x02\u05DD\u05DE" + - "\x07\x07\x02\x02\u05DE\u05DF\x07\xA7\x02\x02\u05DF\u05E0\x07x\x02\x02" + - "\u05E0\u05ED\x07\xC2\x02\x02\u05E1\u05E2\x07\x07\x02\x02\u05E2\u05E3\x07" + - "\xDE\x02\x02\u05E3\u05E4\x07V\x02\x02\u05E4\u05ED\x05\xB0Y\x02\u05E5\u05E6" + - "\x07\x07\x02\x02\u05E6\u05E7\x07\xDE\x02\x02\u05E7\u05E8\x07x\x02\x02" + - "\u05E8\u05ED\x05\xB0Y\x02\u05E9\u05EA\x07\x07\x02\x02\u05EA\u05EB\x07" + - "\xDE\x02\x02\u05EB\u05ED\x05\xB0Y\x02\u05EC\u05D9\x03\x02\x02\x02\u05EC" + - "\u05DD\x03\x02\x02\x02\u05EC\u05E1\x03\x02\x02\x02\u05EC\u05E5\x03\x02" + - "\x02\x02\u05EC\u05E9\x03\x02\x02\x02\u05EDU\x03\x02\x02\x02\u05EE\u05EF" + - "\x05\xB0Y\x02\u05EF\u05F0\x07\xFB\x02\x02\u05F0\u05F1\x07\x04\x02\x02" + - "\u05F1\u05F6\x05\xB0Y\x02\u05F2\u05F3\x07\x06\x02\x02\u05F3\u05F5\x05" + - "\xB0Y\x02\u05F4\u05F2\x03\x02\x02\x02\u05F5\u05F8\x03\x02\x02\x02\u05F6" + - "\u05F4\x03\x02\x02\x02\u05F6\u05F7\x03\x02\x02\x02\u05F7\u05F9\x03\x02" + - "\x02\x02\u05F8\u05F6\x03\x02\x02\x02\u05F9\u05FA\x07\x05\x02\x02\u05FA" + - "W\x03\x02\x02\x02\u05FB\u05FC\x05\xB0Y\x02\u05FC\u05FD\x07\x1C\x02\x02" + - "\u05FD\u05FE\x05`1\x02\u05FEY\x03\x02\x02\x02\u05FF\u0607\x05^0\x02\u0600" + - "\u0602\x07\x1C\x02\x02\u0601\u0600\x03\x02\x02\x02\u0601\u0602\x03\x02" + - "\x02\x02\u0602\u0603\x03\x02\x02\x02\u0603\u0605\x05\xB0Y\x02\u0604\u0606" + - "\x05\\/\x02\u0605\u0604\x03\x02\x02\x02\u0605\u0606\x03\x02\x02\x02\u0606" + - "\u0608\x03\x02\x02\x02\u0607\u0601\x03\x02\x02\x02\u0607\u0608\x03\x02" + - "\x02\x02\u0608[\x03\x02\x02\x02\u0609\u060A\x07\x04\x02\x02\u060A\u060F" + - "\x05\xB0Y\x02\u060B\u060C\x07\x06\x02\x02\u060C\u060E\x05\xB0Y\x02\u060D" + - "\u060B\x03\x02\x02\x02\u060E\u0611\x03\x02\x02\x02\u060F\u060D\x03\x02" + - "\x02\x02\u060F\u0610\x03\x02\x02\x02\u0610\u0612\x03\x02\x02\x02\u0611" + - "\u060F\x03\x02\x02\x02\u0612\u0613\x07\x05\x02\x02\u0613]\x03\x02\x02" + - "\x02\u0614\u0632\x05\xA8U\x02\u0615\u0616\x07\x04\x02\x02\u0616\u0617" + - "\x05\x12\n\x02\u0617\u0618\x07\x05\x02\x02\u0618\u0632\x03\x02\x02\x02" + - "\u0619\u061A\x07\xE9\x02\x02\u061A\u061B\x07\x04\x02\x02\u061B\u0620\x05" + - "`1\x02\u061C\u061D\x07\x06\x02\x02\u061D\u061F\x05`1\x02\u061E\u061C\x03" + - "\x02\x02\x02\u061F\u0622\x03\x02\x02\x02\u0620\u061E\x03\x02\x02\x02\u0620" + - "\u0621\x03\x02\x02\x02\u0621\u0623\x03\x02\x02\x02\u0622\u0620\x03\x02" + - "\x02\x02\u0623\u0626\x07\x05\x02\x02\u0624\u0625\x07\xF5\x02\x02\u0625" + - "\u0627\x07\xA1\x02\x02\u0626\u0624\x03\x02\x02\x02\u0626\u0627\x03\x02" + - "\x02\x02\u0627\u0632\x03\x02\x02\x02\u0628\u0629\x07y\x02\x02\u0629\u062A" + - "\x07\x04\x02\x02\u062A\u062B\x05\x12\n\x02\u062B\u062C\x07\x05\x02\x02" + - "\u062C\u0632\x03\x02\x02\x02\u062D\u062E\x07\x04\x02\x02\u062E\u062F\x05" + - "B\"\x02\u062F\u0630\x07\x05\x02\x02\u0630\u0632\x03\x02\x02\x02\u0631" + - "\u0614\x03\x02\x02\x02\u0631\u0615\x03\x02\x02\x02\u0631\u0619\x03\x02" + - "\x02\x02\u0631\u0628\x03\x02\x02\x02\u0631\u062D\x03\x02\x02\x02\u0632" + - "_\x03\x02\x02\x02\u0633\u0634\x05b2\x02\u0634a\x03\x02\x02\x02\u0635\u0636" + - "\b2\x01\x02\u0636\u0638\x05f4\x02\u0637\u0639\x05d3\x02\u0638\u0637\x03" + - "\x02\x02\x02\u0638\u0639\x03\x02\x02\x02\u0639\u063D\x03\x02\x02\x02\u063A" + - "\u063B\x07\x95\x02\x02\u063B\u063D\x05b2\x05\u063C\u0635\x03\x02\x02\x02" + - "\u063C\u063A\x03\x02\x02\x02\u063D\u0646\x03\x02\x02\x02\u063E\u063F\f" + - "\x04\x02\x02\u063F\u0640\x07\x19\x02\x02\u0640\u0645\x05b2\x05\u0641\u0642" + - "\f\x03\x02\x02\u0642\u0643\x07\x9F\x02\x02\u0643\u0645\x05b2\x04\u0644" + - "\u063E\x03\x02\x02\x02\u0644\u0641\x03\x02\x02\x02\u0645\u0648\x03\x02" + - "\x02\x02\u0646\u0644\x03\x02\x02\x02\u0646\u0647\x03\x02\x02\x02\u0647" + - "c\x03\x02\x02\x02\u0648\u0646\x03\x02\x02\x02\u0649\u064A\x05r:\x02\u064A" + - "\u064B\x05f4\x02\u064B\u0687\x03\x02\x02\x02\u064C\u064D\x05r:\x02\u064D" + - "\u064E\x05t;\x02\u064E\u064F\x07\x04\x02\x02\u064F\u0650\x05\x12\n\x02" + - "\u0650\u0651\x07\x05\x02\x02\u0651\u0687\x03\x02\x02\x02\u0652\u0654\x07" + - "\x95\x02\x02\u0653\u0652\x03\x02\x02\x02\u0653\u0654\x03\x02\x02\x02\u0654" + - "\u0655\x03\x02\x02\x02\u0655\u0656\x07!\x02\x02\u0656\u0657\x05f4\x02" + - "\u0657\u0658\x07\x19\x02\x02\u0658\u0659\x05f4\x02\u0659\u0687\x03\x02" + - "\x02\x02\u065A\u065C\x07\x95\x02\x02\u065B\u065A\x03\x02\x02\x02\u065B" + - "\u065C\x03\x02\x02\x02\u065C\u065D\x03\x02\x02\x02\u065D\u065E\x07i\x02" + - "\x02\u065E\u065F\x07\x04\x02\x02\u065F\u0664\x05`1\x02\u0660\u0661\x07" + - "\x06\x02\x02\u0661\u0663\x05`1\x02\u0662\u0660\x03\x02\x02\x02\u0663\u0666" + - "\x03\x02\x02\x02\u0664\u0662\x03\x02\x02\x02\u0664\u0665\x03\x02\x02\x02" + - "\u0665\u0667\x03\x02\x02\x02\u0666\u0664\x03\x02\x02\x02\u0667\u0668\x07" + - "\x05\x02\x02\u0668\u0687\x03\x02\x02\x02\u0669\u066B\x07\x95\x02\x02\u066A" + - "\u0669\x03\x02\x02\x02\u066A\u066B\x03\x02\x02\x02\u066B\u066C\x03\x02" + - "\x02\x02\u066C\u066D\x07i\x02\x02\u066D\u066E\x07\x04\x02\x02\u066E\u066F" + - "\x05\x12\n\x02\u066F\u0670\x07\x05\x02\x02\u0670\u0687\x03\x02\x02\x02" + - "\u0671\u0673\x07\x95\x02\x02\u0672\u0671\x03\x02\x02\x02\u0672\u0673\x03" + - "\x02\x02\x02\u0673\u0674\x03\x02\x02\x02\u0674\u0675\x07|\x02\x02\u0675" + - "\u0678\x05f4\x02\u0676\u0677\x07K\x02\x02\u0677\u0679\x05f4\x02\u0678" + - "\u0676\x03\x02\x02\x02\u0678\u0679\x03\x02\x02\x02\u0679\u0687\x03\x02" + - "\x02\x02\u067A\u067C\x07t\x02\x02\u067B\u067D\x07\x95\x02\x02\u067C\u067B" + - "\x03\x02\x02\x02\u067C\u067D\x03\x02\x02\x02\u067D\u067E\x03\x02\x02\x02" + - "\u067E\u0687\x07\x96\x02\x02\u067F\u0681\x07t\x02\x02\u0680\u0682\x07" + - "\x95\x02\x02\u0681\u0680\x03\x02\x02\x02\u0681\u0682\x03\x02\x02\x02\u0682" + - "\u0683\x03\x02\x02\x02\u0683\u0684\x07D\x02\x02\u0684\u0685\x07Z\x02\x02" + - "\u0685\u0687\x05f4\x02\u0686\u0649\x03\x02\x02\x02\u0686\u064C\x03\x02" + - "\x02\x02\u0686\u0653\x03\x02\x02\x02\u0686\u065B\x03\x02\x02\x02\u0686" + - "\u066A\x03\x02\x02\x02\u0686\u0672\x03\x02\x02\x02\u0686\u067A\x03\x02" + - "\x02\x02\u0686\u067F\x03\x02\x02\x02\u0687e\x03\x02\x02\x02\u0688\u0689" + - "\b4\x01\x02\u0689\u068D\x05h5\x02\u068A\u068B\t\x10\x02\x02\u068B\u068D" + - "\x05f4\x06\u068C\u0688\x03\x02\x02\x02\u068C\u068A\x03\x02\x02\x02\u068D" + - "\u069C\x03\x02\x02\x02\u068E\u068F\f\x05\x02\x02\u068F\u0690\t\x11\x02" + - "\x02\u0690\u069B\x05f4\x06\u0691\u0692\f\x04\x02\x02\u0692\u0693\t\x10" + - "\x02\x02\u0693\u069B\x05f4\x05\u0694\u0695\f\x03\x02\x02\u0695\u0696\x07" + - "\u0106\x02\x02\u0696\u069B\x05f4\x04\u0697\u0698\f\x07\x02\x02\u0698\u0699" + - "\x07\x1E\x02\x02\u0699\u069B\x05p9\x02\u069A\u068E\x03\x02\x02\x02\u069A" + - "\u0691\x03\x02\x02\x02\u069A\u0694\x03\x02\x02\x02\u069A\u0697\x03\x02" + - "\x02\x02\u069B\u069E\x03\x02\x02\x02\u069C\u069A\x03\x02\x02\x02\u069C" + - "\u069D\x03\x02\x02\x02\u069Dg\x03\x02\x02\x02\u069E\u069C\x03\x02\x02" + - "\x02\u069F\u06A0\b5\x01\x02\u06A0\u0799\x07\x96\x02\x02\u06A1\u0799\x05" + - "x=\x02\u06A2\u06A3\x05\xB0Y\x02\u06A3\u06A4\x05n8\x02\u06A4\u0799\x03" + - "\x02\x02\x02\u06A5\u06A6\x07F\x02\x02\u06A6\u06A7\x07\xAE\x02\x02\u06A7" + - "\u0799\x05n8\x02\u06A8\u0799\x05\xB2Z\x02\u06A9\u0799\x05v<\x02\u06AA" + - "\u0799\x05n8\x02\u06AB\u0799\x07\u010A\x02\x02\u06AC\u0799\x07\u0107\x02" + - "\x02\u06AD\u06AE\x07\xAC\x02\x02\u06AE\u06AF\x07\x04\x02\x02\u06AF\u06B0" + - "\x05f4\x02\u06B0\u06B1\x07i\x02\x02\u06B1\u06B2\x05f4\x02\u06B2\u06B3" + - "\x07\x05\x02\x02\u06B3\u0799\x03\x02\x02\x02\u06B4\u06B5\x07\x04\x02\x02" + - "\u06B5\u06B8\x05`1\x02\u06B6\u06B7\x07\x06\x02\x02\u06B7\u06B9\x05`1\x02" + - "\u06B8\u06B6\x03\x02\x02\x02\u06B9\u06BA\x03\x02\x02\x02\u06BA\u06B8\x03" + - "\x02\x02\x02\u06BA\u06BB\x03\x02\x02\x02\u06BB\u06BC\x03\x02\x02\x02\u06BC" + - "\u06BD\x07\x05\x02\x02\u06BD\u0799\x03\x02\x02\x02\u06BE\u06BF\x07\xC2" + - "\x02\x02\u06BF\u06C0\x07\x04\x02\x02\u06C0\u06C5\x05`1\x02\u06C1\u06C2" + - "\x07\x06\x02\x02\u06C2\u06C4\x05`1\x02\u06C3\u06C1\x03\x02\x02\x02\u06C4" + - "\u06C7\x03\x02\x02\x02\u06C5\u06C3\x03\x02\x02\x02\u06C5\u06C6\x03\x02" + - "\x02\x02\u06C6\u06C8\x03\x02\x02\x02\u06C7\u06C5\x03\x02\x02\x02\u06C8" + - "\u06C9\x07\x05\x02\x02\u06C9\u0799\x03\x02\x02\x02\u06CA\u06CB\x05\xA8" + - "U\x02\u06CB\u06CC\x07\x04\x02\x02\u06CC\u06CD\x07\u0103\x02\x02\u06CD" + - "\u06CF\x07\x05\x02\x02\u06CE\u06D0\x05\x86D\x02\u06CF\u06CE\x03\x02\x02" + - "\x02\u06CF\u06D0\x03\x02\x02\x02\u06D0\u06D2\x03\x02\x02\x02\u06D1\u06D3" + - "\x05\x8AF\x02\u06D2\u06D1\x03\x02\x02\x02\u06D2\u06D3\x03\x02\x02\x02" + - "\u06D3\u0799\x03\x02\x02\x02\u06D4\u06D6\x05j6\x02\u06D5\u06D4\x03\x02" + - "\x02\x02\u06D5\u06D6\x03\x02\x02\x02\u06D6\u06D7\x03\x02\x02\x02\u06D7" + - "\u06D8\x05\xA8U\x02\u06D8\u06E4\x07\x04\x02\x02\u06D9\u06DB\x05> \x02" + - "\u06DA\u06D9\x03\x02\x02\x02\u06DA\u06DB\x03\x02\x02\x02\u06DB\u06DC\x03" + - "\x02\x02\x02\u06DC\u06E1\x05`1\x02\u06DD\u06DE\x07\x06\x02\x02\u06DE\u06E0" + - "\x05`1\x02\u06DF\u06DD\x03\x02\x02\x02\u06E0\u06E3\x03\x02\x02\x02\u06E1" + - "\u06DF\x03\x02\x02\x02\u06E1\u06E2\x03\x02\x02\x02\u06E2\u06E5\x03\x02" + - "\x02\x02\u06E3\u06E1\x03\x02\x02\x02\u06E4\u06DA\x03\x02\x02\x02\u06E4" + - "\u06E5\x03\x02\x02\x02\u06E5\u06F0\x03\x02\x02\x02\u06E6\u06E7\x07\xA0" + - "\x02\x02\u06E7\u06E8\x07\"\x02\x02\u06E8\u06ED\x05.\x18\x02\u06E9\u06EA" + - "\x07\x06\x02\x02\u06EA\u06EC\x05.\x18\x02\u06EB\u06E9\x03\x02\x02\x02" + - "\u06EC\u06EF\x03\x02\x02\x02\u06ED\u06EB\x03\x02\x02\x02\u06ED\u06EE\x03" + - "\x02\x02\x02\u06EE\u06F1\x03\x02\x02\x02\u06EF\u06ED\x03\x02\x02\x02\u06F0" + - "\u06E6\x03\x02\x02\x02\u06F0\u06F1\x03\x02\x02\x02\u06F1\u06F2\x03\x02" + - "\x02\x02\u06F2\u06F4\x07\x05\x02\x02\u06F3\u06F5\x05\x86D\x02\u06F4\u06F3" + - "\x03\x02\x02\x02\u06F4\u06F5\x03\x02\x02\x02\u06F5\u06FA\x03\x02\x02\x02" + - "\u06F6\u06F8\x05l7\x02\u06F7\u06F6\x03\x02\x02\x02\u06F7\u06F8\x03\x02" + - "\x02\x02\u06F8\u06F9\x03\x02\x02\x02\u06F9\u06FB\x05\x8AF\x02\u06FA\u06F7" + - "\x03\x02\x02\x02\u06FA\u06FB\x03\x02\x02\x02\u06FB\u0799\x03\x02\x02\x02" + - "\u06FC\u06FD\x05\xB0Y\x02\u06FD\u06FE\x05\x8AF\x02\u06FE\u0799\x03\x02" + - "\x02\x02\u06FF\u0700\x05\xB0Y\x02\u0700\u0701\x07\b\x02\x02\u0701\u0702" + - "\x05`1\x02\u0702\u0799\x03\x02\x02\x02\u0703\u070C\x07\x04\x02\x02\u0704" + - "\u0709\x05\xB0Y\x02\u0705\u0706\x07\x06\x02\x02\u0706\u0708\x05\xB0Y\x02" + - "\u0707\u0705\x03\x02\x02\x02\u0708\u070B\x03\x02\x02\x02\u0709\u0707\x03" + - "\x02\x02\x02\u0709\u070A\x03\x02\x02\x02\u070A\u070D\x03\x02\x02\x02\u070B" + - "\u0709\x03\x02\x02\x02\u070C\u0704\x03\x02\x02\x02\u070C\u070D\x03\x02" + - "\x02\x02\u070D\u070E\x03\x02\x02\x02\u070E\u070F\x07\x05\x02\x02\u070F" + - "\u0710\x07\b\x02\x02\u0710\u0799\x05`1\x02\u0711\u0712\x07\x04\x02\x02" + - "\u0712\u0713\x05\x12\n\x02\u0713\u0714\x07\x05\x02\x02\u0714\u0799\x03" + - "\x02\x02\x02\u0715\u0716\x07O\x02\x02\u0716\u0717\x07\x04\x02\x02\u0717" + - "\u0718\x05\x12\n\x02\u0718\u0719\x07\x05\x02\x02\u0719\u0799\x03\x02\x02" + - "\x02\u071A\u071B\x07%\x02\x02\u071B\u071D\x05`1\x02\u071C\u071E\x05\x84" + - "C\x02\u071D\u071C\x03\x02\x02\x02\u071E\u071F\x03\x02\x02\x02\u071F\u071D" + - "\x03\x02\x02\x02\u071F\u0720\x03\x02\x02\x02\u0720\u0723\x03\x02\x02\x02" + - "\u0721\u0722\x07H\x02\x02\u0722\u0724\x05`1\x02\u0723\u0721\x03\x02\x02" + - "\x02\u0723\u0724\x03\x02\x02\x02\u0724\u0725\x03\x02\x02\x02\u0725\u0726" + - "\x07J\x02\x02\u0726\u0799\x03\x02\x02\x02\u0727\u0729\x07%\x02\x02\u0728" + - "\u072A\x05\x84C\x02\u0729\u0728\x03\x02\x02\x02\u072A\u072B\x03\x02\x02" + - "\x02\u072B\u0729\x03\x02\x02\x02\u072B\u072C\x03\x02\x02\x02\u072C\u072F" + - "\x03\x02\x02\x02\u072D\u072E\x07H\x02\x02\u072E\u0730\x05`1\x02\u072F" + - "\u072D\x03\x02\x02\x02\u072F\u0730\x03\x02\x02\x02\u0730\u0731\x03\x02" + - "\x02\x02\u0731\u0732\x07J\x02\x02\u0732\u0799\x03\x02\x02\x02\u0733\u0734" + - "\x07&\x02\x02\u0734\u0735\x07\x04\x02\x02\u0735\u0736\x05`1\x02\u0736" + - "\u0737\x07\x1C\x02\x02\u0737\u0738\x05~@\x02\u0738\u0739\x07\x05\x02\x02" + - "\u0739\u0799\x03\x02\x02\x02\u073A\u073B\x07\xE2\x02\x02\u073B\u073C\x07" + - "\x04\x02\x02\u073C\u073D\x05`1\x02\u073D\u073E\x07\x1C\x02\x02\u073E\u073F" + - "\x05~@\x02\u073F\u0740\x07\x05\x02\x02\u0740\u0799\x03\x02\x02\x02\u0741" + - "\u0742\x07\x1B\x02\x02\u0742\u074B\x07\t\x02\x02\u0743\u0748\x05`1\x02" + - "\u0744\u0745\x07\x06\x02\x02\u0745\u0747\x05`1\x02\u0746\u0744\x03\x02" + - "\x02\x02\u0747\u074A\x03\x02\x02\x02\u0748\u0746\x03\x02\x02\x02\u0748" + - "\u0749\x03\x02\x02\x02\u0749\u074C\x03\x02\x02\x02\u074A\u0748\x03\x02" + - "\x02\x02\u074B\u0743\x03\x02\x02\x02\u074B\u074C\x03\x02\x02\x02\u074C" + - "\u074D\x03\x02\x02\x02\u074D\u0799\x07\n\x02\x02\u074E\u0799\x05\xB0Y" + - "\x02\u074F\u0799\x073\x02\x02\u0750\u0754\x077\x02\x02\u0751\u0752\x07" + - "\x04\x02\x02\u0752\u0753\x07\u010B\x02\x02\u0753\u0755\x07\x05\x02\x02" + - "\u0754\u0751\x03\x02\x02\x02\u0754\u0755\x03\x02\x02\x02\u0755\u0799\x03" + - "\x02\x02\x02\u0756\u075A\x078\x02\x02\u0757\u0758\x07\x04\x02\x02\u0758" + - "\u0759\x07\u010B\x02\x02\u0759\u075B\x07\x05\x02\x02\u075A\u0757\x03\x02" + - "\x02\x02\u075A\u075B\x03\x02\x02\x02\u075B\u0799\x03\x02\x02\x02\u075C" + - "\u0760\x07\x7F\x02\x02\u075D\u075E\x07\x04\x02\x02\u075E\u075F\x07\u010B" + - "\x02\x02\u075F\u0761\x07\x05\x02\x02\u0760\u075D\x03\x02\x02\x02\u0760" + - "\u0761\x03\x02\x02\x02\u0761\u0799\x03\x02\x02\x02\u0762\u0766\x07\x80" + - "\x02\x02\u0763\u0764\x07\x04\x02\x02\u0764\u0765\x07\u010B\x02\x02\u0765" + - "\u0767\x07\x05\x02\x02\u0766\u0763\x03\x02\x02\x02\u0766\u0767\x03\x02" + - "\x02\x02\u0767\u0799\x03\x02\x02\x02\u0768\u0799\x079\x02\x02\u0769\u0799" + - "\x072\x02\x02\u076A\u0799\x076\x02\x02\u076B\u0799\x074\x02\x02\u076C" + - "\u076D\x07\xD4\x02\x02\u076D\u076E\x07\x04\x02\x02\u076E\u076F\x05f4\x02" + - "\u076F\u0770\x07Z\x02\x02\u0770\u0773\x05f4\x02\u0771\u0772\x07X\x02\x02" + - "\u0772\u0774\x05f4\x02\u0773\u0771\x03\x02\x02\x02\u0773\u0774\x03\x02" + - "\x02\x02\u0774\u0775\x03\x02\x02\x02\u0775\u0776\x07\x05\x02\x02\u0776" + - "\u0799\x03\x02\x02\x02\u0777\u0778\x07\x94\x02\x02\u0778\u0779\x07\x04" + - "\x02\x02\u0779\u077C\x05f4\x02\u077A\u077B\x07\x06\x02\x02\u077B\u077D" + - "\x05|?\x02\u077C\u077A\x03\x02\x02\x02\u077C\u077D\x03\x02\x02\x02\u077D" + - "\u077E\x03\x02\x02\x02\u077E\u077F\x07\x05\x02\x02\u077F\u0799\x03\x02" + - "\x02\x02\u0780\u0781\x07Q\x02\x02\u0781\u0782\x07\x04\x02\x02\u0782\u0783" + - "\x05\xB0Y\x02\u0783\u0784\x07Z\x02\x02\u0784\u0785\x05f4\x02\u0785\u0786" + - "\x07\x05\x02\x02\u0786\u0799\x03\x02\x02\x02\u0787\u0788\x07\x04\x02\x02" + - "\u0788\u0789\x05`1\x02\u0789\u078A\x07\x05\x02\x02\u078A\u0799\x03\x02" + - "\x02\x02\u078B\u078C\x07c\x02\x02\u078C\u0795\x07\x04\x02\x02\u078D\u0792" + - "\x05\xA8U\x02\u078E\u078F\x07\x06\x02\x02\u078F\u0791\x05\xA8U\x02\u0790" + - "\u078E\x03\x02\x02\x02\u0791\u0794\x03\x02\x02\x02\u0792\u0790\x03\x02" + - "\x02\x02\u0792\u0793\x03\x02\x02\x02\u0793\u0796\x03\x02\x02\x02\u0794" + - "\u0792\x03\x02\x02\x02\u0795\u078D\x03\x02\x02\x02\u0795\u0796\x03\x02" + - "\x02\x02\u0796\u0797\x03\x02\x02\x02\u0797\u0799\x07\x05\x02\x02\u0798" + - "\u069F\x03\x02\x02\x02\u0798\u06A1\x03\x02\x02\x02\u0798\u06A2\x03\x02" + - "\x02\x02\u0798\u06A5\x03\x02\x02\x02\u0798\u06A8\x03\x02\x02\x02\u0798" + - "\u06A9\x03\x02\x02\x02\u0798\u06AA\x03\x02\x02\x02\u0798\u06AB\x03\x02" + - "\x02\x02\u0798\u06AC\x03\x02\x02\x02\u0798\u06AD\x03\x02\x02\x02\u0798" + - "\u06B4\x03\x02\x02\x02\u0798\u06BE\x03\x02\x02\x02\u0798\u06CA\x03\x02" + - "\x02\x02\u0798\u06D5\x03\x02\x02\x02\u0798\u06FC\x03\x02\x02\x02\u0798" + - "\u06FF\x03\x02\x02\x02\u0798\u0703\x03\x02\x02\x02\u0798\u0711\x03\x02" + - "\x02\x02\u0798\u0715\x03\x02\x02\x02\u0798\u071A\x03\x02\x02\x02\u0798" + - "\u0727\x03\x02\x02\x02\u0798\u0733\x03\x02\x02\x02\u0798\u073A\x03\x02" + - "\x02\x02\u0798\u0741\x03\x02\x02\x02\u0798\u074E\x03\x02\x02\x02\u0798" + - "\u074F\x03\x02\x02\x02\u0798\u0750\x03\x02\x02\x02\u0798\u0756\x03\x02" + - "\x02\x02\u0798\u075C\x03\x02\x02\x02\u0798\u0762\x03\x02\x02\x02\u0798" + - "\u0768\x03\x02\x02\x02\u0798\u0769\x03\x02\x02\x02\u0798\u076A\x03\x02" + - "\x02\x02\u0798\u076B\x03\x02\x02\x02\u0798\u076C\x03\x02\x02\x02\u0798" + - "\u0777\x03\x02\x02\x02\u0798\u0780\x03\x02\x02\x02\u0798\u0787\x03\x02" + - "\x02\x02\u0798\u078B\x03\x02\x02\x02\u0799\u07A4\x03\x02\x02\x02\u079A" + - "\u079B\f\x13\x02\x02\u079B\u079C\x07\t\x02\x02\u079C\u079D\x05f4\x02\u079D" + - "\u079E\x07\n\x02\x02\u079E\u07A3\x03\x02\x02\x02\u079F\u07A0\f\x11\x02" + - "\x02\u07A0\u07A1\x07\x03\x02\x02\u07A1\u07A3\x05\xB0Y\x02\u07A2\u079A" + - "\x03\x02\x02\x02\u07A2\u079F\x03\x02\x02\x02\u07A3\u07A6\x03\x02\x02\x02" + - "\u07A4\u07A2\x03\x02\x02\x02\u07A4\u07A5\x03\x02\x02\x02\u07A5i\x03\x02" + - "\x02\x02\u07A6\u07A4\x03\x02\x02\x02\u07A7\u07A8\t\x12\x02\x02\u07A8k" + - "\x03\x02\x02\x02\u07A9\u07AA\x07h\x02\x02\u07AA\u07AE\x07\x98\x02\x02" + - "\u07AB\u07AC\x07\xBA\x02\x02\u07AC\u07AE\x07\x98\x02\x02\u07AD\u07A9\x03" + - "\x02\x02\x02\u07AD\u07AB\x03\x02\x02\x02\u07AEm\x03\x02\x02\x02\u07AF" + - "\u07B6\x07\u0108\x02\x02\u07B0\u07B3\x07\u0109\x02\x02\u07B1\u07B2\x07" + - "\xE4\x02\x02\u07B2\u07B4\x07\u0108\x02\x02\u07B3\u07B1\x03\x02\x02\x02" + - "\u07B3\u07B4\x03\x02\x02\x02\u07B4\u07B6\x03\x02\x02\x02\u07B5\u07AF\x03" + - "\x02\x02\x02\u07B5\u07B0\x03\x02\x02\x02\u07B6o\x03\x02\x02\x02\u07B7" + - "\u07B8\x07\xDC\x02\x02\u07B8\u07B9\x07\xFA\x02\x02\u07B9\u07BE\x05x=\x02" + - "\u07BA\u07BB\x07\xDC\x02\x02\u07BB\u07BC\x07\xFA\x02\x02\u07BC\u07BE\x05" + - "n8\x02\u07BD\u07B7\x03\x02\x02\x02\u07BD\u07BA\x03\x02\x02\x02\u07BEq" + - "\x03\x02\x02\x02\u07BF\u07C0\t\x13\x02\x02\u07C0s\x03\x02\x02\x02\u07C1" + - "\u07C2\t\x14\x02\x02\u07C2u\x03\x02\x02\x02\u07C3\u07C4\t\x15\x02\x02" + - "\u07C4w\x03\x02\x02\x02\u07C5\u07C7\x07p\x02\x02\u07C6\u07C8\t\x10\x02" + - "\x02\u07C7\u07C6\x03\x02\x02\x02\u07C7\u07C8\x03\x02\x02\x02\u07C8\u07C9" + - "\x03\x02\x02\x02\u07C9\u07CA\x05n8\x02\u07CA\u07CD\x05z>\x02\u07CB\u07CC" + - "\x07\xDE\x02\x02\u07CC\u07CE\x05z>\x02\u07CD\u07CB\x03\x02\x02\x02\u07CD" + - "\u07CE\x03\x02\x02\x02\u07CEy\x03\x02\x02\x02\u07CF\u07D0\t\x16\x02\x02" + - "\u07D0{\x03\x02\x02\x02\u07D1\u07D2\t\x17\x02\x02\u07D2}\x03\x02\x02\x02" + - "\u07D3\u07D4\b@\x01\x02\u07D4\u07D5\x07\xC2\x02\x02\u07D5\u07D6\x07\x04" + - "\x02\x02\u07D6\u07DB\x05\x80A\x02\u07D7\u07D8\x07\x06\x02\x02\u07D8\u07DA" + - "\x05\x80A\x02\u07D9\u07D7\x03\x02\x02\x02\u07DA\u07DD\x03\x02\x02\x02" + - "\u07DB\u07D9\x03\x02\x02\x02\u07DB\u07DC\x03\x02\x02\x02\u07DC\u07DE\x03" + - "\x02\x02\x02\u07DD\u07DB\x03\x02\x02\x02\u07DE\u07DF\x07\x05\x02\x02\u07DF" + - "\u082F\x03\x02\x02\x02\u07E0\u07E1\x07p\x02\x02\u07E1\u07E4\x05z>\x02" + - "\u07E2\u07E3\x07\xDE\x02\x02\u07E3\u07E5\x05z>\x02\u07E4\u07E2\x03\x02" + - "\x02\x02\u07E4\u07E5\x03\x02\x02\x02\u07E5\u082F\x03\x02\x02\x02\u07E6" + - "\u07EB\x07\xDD\x02\x02\u07E7\u07E8\x07\x04\x02\x02\u07E8\u07E9\x05\x82" + - "B\x02\u07E9\u07EA\x07\x05\x02\x02\u07EA\u07EC\x03\x02\x02\x02\u07EB\u07E7" + - "\x03\x02\x02\x02\u07EB\u07EC\x03\x02\x02\x02\u07EC\u07F0\x03\x02\x02\x02" + - "\u07ED\u07EE\x07\xF6\x02\x02\u07EE\u07EF\x07\xDC\x02\x02\u07EF\u07F1\x07" + - "\xFA\x02\x02\u07F0\u07ED\x03\x02\x02\x02\u07F0\u07F1\x03\x02\x02\x02\u07F1" + - "\u082F\x03\x02\x02\x02\u07F2\u07F7\x07\xDD\x02\x02\u07F3\u07F4\x07\x04" + - "\x02\x02\u07F4\u07F5\x05\x82B\x02\u07F5\u07F6\x07\x05\x02\x02\u07F6\u07F8" + - "\x03\x02\x02\x02\u07F7\u07F3\x03\x02\x02\x02\u07F7\u07F8\x03\x02\x02\x02" + - "\u07F8\u07F9\x03\x02\x02\x02\u07F9\u07FA\x07\xF5\x02\x02\u07FA\u07FB\x07" + - "\xDC\x02\x02\u07FB\u082F\x07\xFA\x02\x02\u07FC\u0801\x07\xDC\x02\x02\u07FD" + - "\u07FE\x07\x04\x02\x02\u07FE\u07FF\x05\x82B\x02\u07FF\u0800\x07\x05\x02" + - "\x02\u0800\u0802\x03\x02\x02\x02\u0801\u07FD\x03\x02\x02\x02\u0801\u0802" + - "\x03\x02\x02\x02\u0802\u0806\x03\x02\x02\x02\u0803\u0804\x07\xF6\x02\x02" + - "\u0804\u0805\x07\xDC\x02\x02\u0805\u0807\x07\xFA\x02\x02\u0806\u0803\x03" + - "\x02\x02\x02\u0806\u0807\x03\x02"; + "\x05\\/\x02\u0545\u0543\x03\x02\x02\x02\u0545\u0546\x03\x02\x02\x02\u0546" + + "\u0549\x03\x02\x02\x02\u0547\u0549\x07\u0103\x02\x02\u0548\u0539\x03\x02" + + "\x02\x02\u0548\u0540\x03\x02\x02\x02\u0548\u0547\x03\x02\x02\x02\u0549" + + "A\x03\x02\x02\x02\u054A\u054B\b\"\x01\x02\u054B\u054C\x05H%\x02\u054C" + + "\u055F\x03\x02\x02\x02\u054D\u055B\f\x04\x02\x02\u054E\u054F\x07/\x02" + + "\x02\u054F\u0550\x07v\x02\x02\u0550\u055C\x05H%\x02\u0551\u0552\x05D#" + + "\x02\u0552\u0553\x07v\x02\x02\u0553\u0554\x05B\"\x02\u0554\u0555\x05F" + + "$\x02\u0555\u055C\x03\x02\x02\x02\u0556\u0557\x07\x8C\x02\x02\u0557\u0558" + + "\x05D#\x02\u0558\u0559\x07v\x02\x02\u0559\u055A\x05H%\x02\u055A\u055C" + + "\x03\x02\x02\x02\u055B\u054E\x03\x02\x02\x02\u055B\u0551\x03\x02\x02\x02" + + "\u055B\u0556\x03\x02\x02\x02\u055C\u055E\x03\x02\x02\x02\u055D\u054D\x03" + + "\x02\x02\x02\u055E\u0561\x03\x02\x02\x02\u055F\u055D\x03\x02\x02\x02\u055F" + + "\u0560\x03\x02\x02\x02\u0560C\x03\x02\x02\x02\u0561\u055F\x03\x02\x02" + + "\x02\u0562\u0564\x07l\x02\x02\u0563\u0562\x03\x02\x02\x02\u0563\u0564" + + "\x03\x02\x02\x02\u0564\u0572\x03\x02\x02\x02\u0565\u0567\x07z\x02\x02" + + "\u0566\u0568\x07\xA2\x02\x02\u0567\u0566\x03\x02\x02\x02\u0567\u0568\x03" + + "\x02\x02\x02\u0568\u0572\x03\x02\x02\x02\u0569\u056B\x07\xBD\x02\x02\u056A" + + "\u056C\x07\xA2\x02\x02\u056B\u056A\x03\x02\x02\x02\u056B\u056C\x03\x02" + + "\x02\x02\u056C\u0572\x03\x02\x02\x02\u056D\u056F\x07[\x02\x02\u056E\u0570" + + "\x07\xA2\x02\x02\u056F\u056E\x03\x02\x02\x02\u056F\u0570\x03\x02\x02\x02" + + "\u0570\u0572\x03\x02\x02\x02\u0571\u0563\x03\x02\x02\x02\u0571\u0565\x03" + + "\x02\x02\x02\u0571\u0569\x03\x02\x02\x02\u0571\u056D\x03\x02\x02\x02\u0572" + + "E\x03\x02\x02\x02\u0573\u0574\x07\x9B\x02\x02\u0574\u0582\x05b2\x02\u0575" + + "\u0576\x07\xED\x02\x02\u0576\u0577\x07\x03\x02\x02\u0577\u057C\x05\xCA" + + "f\x02\u0578\u0579\x07\x05\x02\x02\u0579\u057B\x05\xCAf\x02\u057A\u0578" + + "\x03\x02\x02\x02\u057B\u057E\x03\x02\x02\x02\u057C\u057A\x03\x02\x02\x02" + + "\u057C\u057D\x03\x02\x02\x02\u057D\u057F\x03\x02\x02\x02\u057E\u057C\x03" + + "\x02\x02\x02\u057F\u0580\x07\x04\x02\x02\u0580\u0582\x03\x02\x02\x02\u0581" + + "\u0573\x03\x02\x02\x02\u0581\u0575\x03\x02\x02\x02\u0582G\x03\x02\x02" + + "\x02\u0583\u058A\x05L\'\x02\u0584\u0585\x07\xD8\x02\x02\u0585\u0586\x05" + + "J&\x02\u0586\u0587\x07\x03\x02\x02\u0587\u0588\x05`1\x02\u0588\u0589\x07" + + "\x04\x02\x02\u0589\u058B\x03\x02\x02\x02\u058A\u0584\x03\x02\x02\x02\u058A" + + "\u058B\x03\x02\x02\x02\u058BI\x03\x02\x02\x02\u058C\u058D\t\r\x02\x02" + + "\u058DK\x03\x02\x02\x02\u058E\u05E1\x05Z.\x02\u058F\u0590\x07\x86\x02" + + "\x02\u0590\u059B\x07\x03\x02\x02\u0591\u0592\x07\xA5\x02\x02\u0592\u0593" + + "\x07\"\x02\x02\u0593\u0598\x05`1\x02\u0594\u0595\x07\x05\x02\x02\u0595" + + "\u0597\x05`1\x02\u0596\u0594\x03\x02\x02\x02\u0597\u059A\x03\x02\x02\x02" + + "\u0598\u0596\x03\x02\x02\x02\u0598\u0599\x03\x02\x02\x02\u0599\u059C\x03" + + "\x02\x02\x02\u059A\u0598\x03\x02\x02\x02\u059B\u0591\x03\x02\x02\x02\u059B" + + "\u059C\x03\x02\x02\x02\u059C\u05A7\x03\x02\x02\x02\u059D\u059E\x07\xA0" + + "\x02\x02\u059E\u059F\x07\"\x02\x02\u059F\u05A4\x05.\x18\x02\u05A0\u05A1" + + "\x07\x05\x02\x02\u05A1\u05A3\x05.\x18\x02\u05A2\u05A0\x03\x02\x02\x02" + + "\u05A3\u05A6\x03\x02\x02\x02\u05A4\u05A2\x03\x02\x02\x02\u05A4\u05A5\x03" + + "\x02\x02\x02\u05A5\u05A8\x03\x02\x02\x02\u05A6\u05A4\x03\x02\x02\x02\u05A7" + + "\u059D\x03\x02\x02\x02\u05A7\u05A8\x03\x02\x02\x02\u05A8\u05B2\x03\x02" + + "\x02\x02\u05A9\u05AA\x07\x88\x02\x02\u05AA\u05AF\x05N(\x02\u05AB\u05AC" + + "\x07\x05\x02\x02\u05AC\u05AE\x05N(\x02\u05AD\u05AB\x03\x02\x02\x02\u05AE" + + "\u05B1\x03\x02\x02\x02\u05AF\u05AD\x03\x02\x02\x02\u05AF\u05B0\x03\x02" + + "\x02\x02\u05B0\u05B3\x03\x02\x02\x02\u05B1\u05AF\x03\x02\x02\x02\u05B2" + + "\u05A9\x03\x02\x02\x02\u05B2\u05B3\x03\x02\x02\x02\u05B3\u05B5\x03\x02" + + "\x02\x02\u05B4\u05B6\x05P)\x02\u05B5\u05B4\x03\x02\x02\x02\u05B5\u05B6" + + "\x03\x02\x02\x02\u05B6\u05BA\x03\x02\x02\x02\u05B7\u05B8\x07\x15\x02\x02" + + "\u05B8\u05B9\x07\x83\x02\x02\u05B9\u05BB\x05T+\x02\u05BA\u05B7\x03\x02" + + "\x02\x02\u05BA\u05BB\x03\x02\x02\x02\u05BB\u05BD\x03\x02\x02\x02\u05BC" + + "\u05BE\t\x0E\x02\x02\u05BD\u05BC\x03\x02\x02\x02\u05BD\u05BE\x03\x02\x02" + + "\x02\u05BE\u05BF\x03\x02\x02\x02\u05BF\u05C0\x07\xA9\x02\x02\u05C0\u05C1" + + "\x07\x03\x02\x02\u05C1\u05C2\x05\x92J\x02\u05C2\u05CC\x07\x04\x02\x02" + + "\u05C3\u05C4\x07\xD3\x02\x02\u05C4\u05C9\x05V,\x02\u05C5\u05C6\x07\x05" + + "\x02\x02\u05C6\u05C8\x05V,\x02\u05C7\u05C5\x03\x02\x02\x02\u05C8\u05CB" + + "\x03\x02\x02\x02\u05C9\u05C7\x03\x02\x02\x02\u05C9\u05CA\x03\x02\x02\x02" + + "\u05CA\u05CD\x03\x02\x02\x02\u05CB\u05C9\x03\x02\x02\x02\u05CC\u05C3\x03" + + "\x02\x02\x02\u05CC\u05CD\x03\x02\x02\x02\u05CD\u05CE\x03\x02\x02\x02\u05CE" + + "\u05CF\x07C\x02\x02\u05CF\u05D4\x05X-\x02\u05D0\u05D1\x07\x05\x02\x02" + + "\u05D1\u05D3\x05X-\x02\u05D2\u05D0\x03\x02\x02\x02\u05D3\u05D6\x03\x02" + + "\x02\x02\u05D4\u05D2\x03\x02\x02\x02\u05D4\u05D5\x03\x02\x02\x02\u05D5" + + "\u05D7\x03\x02\x02\x02\u05D6\u05D4\x03\x02\x02\x02\u05D7\u05DF\x07\x04" + + "\x02\x02\u05D8\u05DA\x07\x1C\x02\x02\u05D9\u05D8\x03\x02\x02\x02\u05D9" + + "\u05DA\x03\x02\x02\x02\u05DA\u05DB\x03\x02\x02\x02\u05DB\u05DD\x05\xCA" + + "f\x02\u05DC\u05DE\x05\\/\x02\u05DD\u05DC\x03\x02\x02\x02\u05DD\u05DE\x03" + + "\x02\x02\x02\u05DE\u05E0\x03\x02\x02\x02\u05DF\u05D9\x03\x02\x02\x02\u05DF" + + "\u05E0\x03\x02\x02\x02\u05E0\u05E2\x03\x02\x02\x02\u05E1\u058F\x03\x02" + + "\x02\x02\u05E1\u05E2\x03\x02\x02\x02\u05E2M\x03\x02\x02\x02\u05E3\u05E4" + + "\x05`1\x02\u05E4\u05E5\x07\x1C\x02\x02\u05E5\u05E6\x05\xCAf\x02\u05E6" + + "O\x03\x02\x02\x02\u05E7\u05E8\x07\x9C\x02\x02\u05E8\u05E9\x07\xC2\x02" + + "\x02\u05E9\u05EA\x07\xAA\x02\x02\u05EA\u05F3\x07\x83\x02\x02\u05EB\u05EC" + + "\x07\x16\x02\x02\u05EC\u05ED\x07\xC3\x02\x02\u05ED\u05EE\x07\xAA\x02\x02" + + "\u05EE\u05F0\x07\x83\x02\x02\u05EF\u05F1\x05R*\x02\u05F0\u05EF\x03\x02" + + "\x02\x02\u05F0\u05F1\x03\x02\x02\x02\u05F1\u05F3\x03\x02\x02\x02\u05F2" + + "\u05E7\x03\x02\x02\x02\u05F2\u05EB\x03\x02\x02\x02\u05F3Q\x03\x02\x02" + + "\x02\u05F4\u05F5\x07\xCF\x02\x02\u05F5\u05F6\x07I\x02\x02\u05F6\u05FE" + + "\x07\x85\x02\x02\u05F7\u05F8\x07\x9A\x02\x02\u05F8\u05F9\x07I\x02\x02" + + "\u05F9\u05FE\x07\x85\x02\x02\u05FA\u05FB\x07\xF5\x02\x02\u05FB\u05FC\x07" + + "\xE8\x02\x02\u05FC\u05FE\x07\xC3\x02\x02\u05FD\u05F4\x03\x02\x02\x02\u05FD" + + "\u05F7\x03\x02\x02\x02\u05FD\u05FA\x03\x02\x02\x02\u05FES\x03\x02\x02" + + "\x02\u05FF\u0600\x07\x07\x02\x02\u0600\u0601\x07\xDE\x02\x02\u0601\u0602" + + "\x07\x8D\x02\x02\u0602\u0613\x07\xC2\x02\x02\u0603\u0604\x07\x07\x02\x02" + + "\u0604\u0605\x07\xA7\x02\x02\u0605\u0606\x07x\x02\x02\u0606\u0613\x07" + + "\xC2\x02\x02\u0607\u0608\x07\x07\x02\x02\u0608\u0609\x07\xDE\x02\x02\u0609" + + "\u060A\x07V\x02\x02\u060A\u0613\x05\xCAf\x02\u060B\u060C\x07\x07\x02\x02" + + "\u060C\u060D\x07\xDE\x02\x02\u060D\u060E\x07x\x02\x02\u060E\u0613\x05" + + "\xCAf\x02\u060F\u0610\x07\x07\x02\x02\u0610\u0611\x07\xDE\x02\x02\u0611" + + "\u0613\x05\xCAf\x02\u0612\u05FF\x03\x02\x02\x02\u0612\u0603\x03\x02\x02" + + "\x02\u0612\u0607\x03\x02\x02\x02\u0612\u060B\x03\x02\x02\x02\u0612\u060F" + + "\x03\x02\x02\x02\u0613U\x03\x02\x02\x02\u0614\u0615\x05\xCAf\x02\u0615" + + "\u0616\x07\xFB\x02\x02\u0616\u0617\x07\x03\x02\x02\u0617\u061C\x05\xCA" + + "f\x02\u0618\u0619\x07\x05\x02\x02\u0619\u061B\x05\xCAf\x02\u061A\u0618" + + "\x03\x02\x02\x02\u061B\u061E\x03\x02\x02\x02\u061C\u061A\x03\x02\x02\x02" + + "\u061C\u061D\x03\x02\x02\x02\u061D\u061F\x03\x02\x02\x02\u061E\u061C\x03" + + "\x02\x02\x02\u061F\u0620\x07\x04\x02\x02\u0620W\x03\x02\x02\x02\u0621" + + "\u0622\x05\xCAf\x02\u0622\u0623\x07\x1C\x02\x02\u0623\u0624\x05`1\x02" + + "\u0624Y\x03\x02\x02\x02\u0625\u062D\x05^0\x02\u0626\u0628\x07\x1C\x02" + + "\x02\u0627\u0626\x03\x02\x02\x02\u0627\u0628\x03\x02\x02\x02\u0628\u0629" + + "\x03\x02\x02\x02\u0629\u062B\x05\xCAf\x02\u062A\u062C\x05\\/\x02\u062B" + + "\u062A\x03\x02\x02\x02\u062B\u062C\x03\x02\x02\x02\u062C\u062E\x03\x02" + + "\x02\x02\u062D\u0627\x03\x02\x02\x02\u062D\u062E\x03\x02\x02\x02\u062E" + + "[\x03\x02\x02\x02\u062F\u0630\x07\x03\x02\x02\u0630\u0635\x05\xCAf\x02" + + "\u0631\u0632\x07\x05\x02\x02\u0632\u0634\x05\xCAf\x02\u0633\u0631\x03" + + "\x02\x02\x02\u0634\u0637\x03\x02\x02\x02\u0635\u0633\x03\x02\x02\x02\u0635" + + "\u0636\x03\x02\x02\x02\u0636\u0638\x03\x02\x02\x02\u0637\u0635\x03\x02" + + "\x02\x02\u0638\u0639\x07\x04\x02\x02\u0639]\x03\x02\x02\x02\u063A\u0658" + + "\x05\xA8U\x02\u063B\u063C\x07\x03\x02\x02\u063C\u063D\x05\x12\n\x02\u063D" + + "\u063E\x07\x04\x02\x02\u063E\u0658\x03\x02\x02\x02\u063F\u0640\x07\xE9" + + "\x02\x02\u0640\u0641\x07\x03\x02\x02\u0641\u0646\x05`1\x02\u0642\u0643" + + "\x07\x05\x02\x02\u0643\u0645\x05`1\x02\u0644\u0642\x03\x02\x02\x02\u0645" + + "\u0648\x03\x02\x02\x02\u0646\u0644\x03\x02\x02\x02\u0646\u0647\x03\x02" + + "\x02\x02\u0647\u0649\x03\x02\x02\x02\u0648\u0646\x03\x02\x02\x02\u0649" + + "\u064C\x07\x04\x02\x02\u064A\u064B\x07\xF5\x02\x02\u064B\u064D\x07\xA1" + + "\x02\x02\u064C\u064A\x03\x02\x02\x02\u064C\u064D\x03\x02\x02\x02\u064D" + + "\u0658\x03\x02\x02\x02\u064E\u064F\x07y\x02\x02\u064F\u0650\x07\x03\x02" + + "\x02\u0650\u0651\x05\x12\n\x02\u0651\u0652\x07\x04\x02\x02\u0652\u0658" + + "\x03\x02\x02\x02\u0653\u0654\x07\x03\x02\x02\u0654\u0655\x05B\"\x02\u0655" + + "\u0656\x07\x04\x02\x02\u0656\u0658\x03\x02\x02\x02\u0657\u063A\x03\x02" + + "\x02\x02\u0657\u063B\x03\x02\x02\x02\u0657\u063F\x03\x02\x02\x02\u0657" + + "\u064E\x03\x02\x02\x02\u0657\u0653\x03\x02\x02\x02\u0658_\x03\x02\x02" + + "\x02\u0659\u065A\x05b2\x02\u065Aa\x03\x02\x02\x02\u065B\u065C\b2\x01\x02" + + "\u065C\u065E\x05f4\x02\u065D\u065F\x05d3\x02\u065E\u065D\x03\x02\x02\x02" + + "\u065E\u065F\x03\x02\x02\x02\u065F\u0663\x03\x02\x02\x02\u0660\u0661\x07" + + "\x95\x02\x02\u0661\u0663\x05b2\x05\u0662\u065B\x03\x02\x02\x02\u0662\u0660" + + "\x03\x02\x02\x02\u0663\u066C\x03\x02\x02\x02\u0664\u0665\f\x04\x02\x02" + + "\u0665\u0666\x07\x19\x02\x02\u0666\u066B\x05b2\x05\u0667\u0668\f\x03\x02" + + "\x02\u0668\u0669\x07\x9F\x02\x02\u0669\u066B\x05b2\x04\u066A\u0664\x03" + + "\x02\x02\x02\u066A\u0667\x03\x02\x02\x02\u066B\u066E\x03\x02\x02\x02\u066C" + + "\u066A\x03\x02\x02\x02\u066C\u066D\x03\x02\x02\x02\u066Dc\x03\x02\x02" + + "\x02\u066E\u066C\x03\x02\x02\x02\u066F\u0670\x05r:\x02\u0670\u0671\x05" + + "f4\x02\u0671\u06AD\x03\x02\x02\x02\u0672\u0673\x05r:\x02\u0673\u0674\x05" + + "t;\x02\u0674\u0675\x07\x03\x02\x02\u0675\u0676\x05\x12\n\x02\u0676\u0677" + + "\x07\x04\x02\x02\u0677\u06AD\x03\x02\x02\x02\u0678\u067A\x07\x95\x02\x02" + + "\u0679\u0678\x03\x02\x02\x02\u0679\u067A\x03\x02\x02\x02\u067A\u067B\x03" + + "\x02\x02\x02\u067B\u067C\x07!\x02\x02\u067C\u067D\x05f4\x02\u067D\u067E" + + "\x07\x19\x02\x02\u067E\u067F\x05f4\x02\u067F\u06AD\x03\x02\x02\x02\u0680" + + "\u0682\x07\x95\x02\x02\u0681\u0680\x03\x02\x02\x02\u0681\u0682\x03\x02" + + "\x02\x02\u0682\u0683\x03\x02\x02\x02\u0683\u0684\x07i\x02\x02\u0684\u0685" + + "\x07\x03\x02\x02\u0685\u068A\x05`1\x02\u0686\u0687\x07\x05\x02\x02\u0687" + + "\u0689\x05`1\x02\u0688\u0686\x03\x02\x02\x02\u0689\u068C\x03\x02\x02\x02" + + "\u068A\u0688\x03\x02\x02\x02\u068A\u068B\x03\x02\x02\x02\u068B\u068D\x03" + + "\x02\x02\x02\u068C\u068A\x03\x02\x02\x02\u068D\u068E\x07\x04\x02\x02\u068E" + + "\u06AD\x03\x02\x02\x02\u068F\u0691\x07\x95\x02\x02\u0690\u068F\x03\x02" + + "\x02\x02\u0690\u0691\x03\x02\x02\x02\u0691\u0692\x03\x02\x02\x02\u0692" + + "\u0693\x07i\x02\x02\u0693\u0694\x07\x03\x02\x02\u0694\u0695\x05\x12\n" + + "\x02\u0695\u0696\x07\x04\x02\x02\u0696\u06AD\x03\x02\x02\x02\u0697\u0699" + + "\x07\x95\x02\x02\u0698\u0697\x03\x02\x02\x02\u0698\u0699\x03\x02\x02\x02" + + "\u0699\u069A\x03\x02\x02\x02\u069A\u069B\x07|\x02\x02\u069B\u069E\x05" + + "f4\x02\u069C\u069D\x07K\x02\x02\u069D\u069F\x05f4\x02\u069E\u069C\x03" + + "\x02\x02\x02\u069E\u069F\x03\x02\x02\x02\u069F\u06AD\x03\x02\x02\x02\u06A0" + + "\u06A2\x07t\x02\x02\u06A1\u06A3\x07\x95\x02\x02\u06A2\u06A1\x03\x02\x02" + + "\x02\u06A2\u06A3\x03\x02\x02\x02\u06A3\u06A4\x03\x02\x02\x02\u06A4\u06AD" + + "\x07\x96\x02\x02\u06A5\u06A7\x07t\x02\x02\u06A6\u06A8\x07\x95\x02\x02" + + "\u06A7\u06A6\x03\x02\x02\x02\u06A7\u06A8\x03\x02\x02\x02\u06A8\u06A9\x03" + + "\x02\x02\x02\u06A9\u06AA\x07D\x02\x02\u06AA\u06AB\x07Z\x02\x02\u06AB\u06AD" + + "\x05f4\x02\u06AC\u066F\x03\x02\x02\x02\u06AC\u0672\x03\x02\x02\x02\u06AC" + + "\u0679\x03\x02\x02\x02\u06AC\u0681\x03\x02\x02\x02\u06AC\u0690\x03\x02" + + "\x02\x02\u06AC\u0698\x03\x02\x02\x02\u06AC\u06A0\x03\x02\x02\x02\u06AC" + + "\u06A5\x03\x02\x02\x02\u06ADe\x03\x02\x02\x02\u06AE\u06AF\b4\x01\x02\u06AF" + + "\u06B3\x05h5\x02\u06B0\u06B1\t\x0F\x02\x02\u06B1\u06B3\x05f4\x06\u06B2" + + "\u06AE\x03\x02\x02\x02\u06B2\u06B0\x03\x02\x02\x02\u06B3\u06C2\x03\x02" + + "\x02\x02\u06B4\u06B5\f\x05\x02\x02\u06B5\u06B6\t\x10\x02\x02\u06B6\u06C1" + + "\x05f4\x06\u06B7\u06B8\f\x04\x02\x02\u06B8\u06B9\t\x0F\x02\x02\u06B9\u06C1" + + "\x05f4\x05\u06BA\u06BB\f\x03\x02\x02\u06BB\u06BC\x07\u0106\x02\x02\u06BC" + + "\u06C1\x05f4\x04\u06BD\u06BE\f\x07\x02\x02\u06BE\u06BF\x07\x1E\x02\x02" + + "\u06BF\u06C1\x05p9\x02\u06C0\u06B4\x03\x02\x02\x02\u06C0\u06B7\x03\x02" + + "\x02\x02\u06C0\u06BA\x03\x02\x02\x02\u06C0\u06BD\x03\x02\x02\x02\u06C1" + + "\u06C4\x03\x02\x02\x02\u06C2\u06C0\x03\x02\x02\x02\u06C2\u06C3\x03\x02" + + "\x02\x02\u06C3g\x03\x02\x02\x02\u06C4\u06C2\x03\x02\x02\x02\u06C5\u06C6" + + "\b5\x01\x02\u06C6\u07BF\x07\x96\x02\x02\u06C7\u07BF\x05x=\x02\u06C8\u06C9" + + "\x05\xCAf\x02\u06C9\u06CA\x05n8\x02\u06CA\u07BF\x03\x02\x02\x02\u06CB" + + "\u06CC\x07F\x02\x02\u06CC\u06CD\x07\xAE\x02\x02\u06CD\u07BF\x05n8\x02" + + "\u06CE\u07BF\x05\xCCg\x02\u06CF\u07BF\x05v<\x02\u06D0\u07BF\x05n8\x02" + + "\u06D1\u07BF\x07\u010A\x02\x02\u06D2\u07BF\x07\u0107\x02\x02\u06D3\u06D4" + + "\x07\xAC\x02\x02\u06D4\u06D5\x07\x03\x02\x02\u06D5\u06D6\x05f4\x02\u06D6" + + "\u06D7\x07i\x02\x02\u06D7\u06D8\x05f4\x02\u06D8\u06D9\x07\x04\x02\x02" + + "\u06D9\u07BF\x03\x02\x02\x02\u06DA\u06DB\x07\x03\x02\x02\u06DB\u06DE\x05" + + "`1\x02\u06DC\u06DD\x07\x05\x02\x02\u06DD\u06DF\x05`1\x02\u06DE\u06DC\x03" + + "\x02\x02\x02\u06DF\u06E0\x03\x02\x02\x02\u06E0\u06DE\x03\x02\x02\x02\u06E0" + + "\u06E1\x03\x02\x02\x02\u06E1\u06E2\x03\x02\x02\x02\u06E2\u06E3\x07\x04" + + "\x02\x02\u06E3\u07BF\x03\x02\x02\x02\u06E4\u06E5\x07\xC2\x02\x02\u06E5" + + "\u06E6\x07\x03\x02\x02\u06E6\u06EB\x05`1\x02\u06E7\u06E8\x07\x05\x02\x02" + + "\u06E8\u06EA\x05`1\x02\u06E9\u06E7\x03\x02\x02\x02\u06EA\u06ED\x03\x02" + + "\x02\x02\u06EB\u06E9\x03\x02\x02\x02\u06EB\u06EC\x03\x02\x02\x02\u06EC" + + "\u06EE\x03\x02\x02\x02\u06ED\u06EB\x03\x02\x02\x02\u06EE\u06EF\x07\x04" + + "\x02\x02\u06EF\u07BF\x03\x02\x02\x02\u06F0\u06F1\x05\xC0a\x02\u06F1\u06F2" + + "\x07\x03\x02\x02\u06F2\u06F3\x07\u0103\x02\x02\u06F3\u06F5\x07\x04\x02" + + "\x02\u06F4\u06F6\x05\x86D\x02\u06F5\u06F4\x03\x02\x02\x02\u06F5\u06F6" + + "\x03\x02\x02\x02\u06F6\u06F8\x03\x02\x02\x02\u06F7\u06F9\x05\x8AF\x02" + + "\u06F8\u06F7\x03\x02\x02\x02\u06F8\u06F9\x03\x02\x02\x02\u06F9\u07BF\x03" + + "\x02\x02\x02\u06FA\u06FC\x05j6\x02\u06FB\u06FA\x03\x02\x02\x02\u06FB\u06FC" + + "\x03\x02\x02\x02\u06FC\u06FD\x03\x02\x02\x02\u06FD\u06FE\x05\xC0a\x02" + + "\u06FE\u070A\x07\x03\x02\x02\u06FF\u0701\x05> \x02\u0700\u06FF\x03\x02" + + "\x02\x02\u0700\u0701\x03\x02\x02\x02\u0701\u0702\x03\x02\x02\x02\u0702" + + "\u0707\x05`1\x02\u0703\u0704\x07\x05\x02\x02\u0704\u0706\x05`1\x02\u0705" + + "\u0703\x03\x02\x02\x02\u0706\u0709\x03\x02\x02\x02\u0707\u0705\x03\x02" + + "\x02\x02\u0707\u0708\x03\x02\x02\x02\u0708\u070B\x03\x02\x02\x02\u0709" + + "\u0707\x03\x02\x02\x02\u070A\u0700\x03\x02\x02\x02\u070A\u070B\x03\x02" + + "\x02\x02\u070B\u0716\x03\x02\x02\x02\u070C\u070D\x07\xA0\x02\x02\u070D" + + "\u070E\x07\"\x02\x02\u070E\u0713\x05.\x18\x02\u070F\u0710\x07\x05\x02" + + "\x02\u0710\u0712\x05.\x18\x02\u0711\u070F\x03\x02\x02\x02\u0712\u0715" + + "\x03\x02\x02\x02\u0713\u0711\x03\x02\x02\x02\u0713\u0714\x03\x02\x02\x02" + + "\u0714\u0717\x03\x02\x02\x02\u0715\u0713\x03\x02\x02\x02\u0716\u070C\x03" + + "\x02\x02\x02\u0716\u0717\x03\x02\x02\x02\u0717\u0718\x03\x02\x02\x02\u0718" + + "\u071A\x07\x04\x02\x02\u0719\u071B\x05\x86D\x02\u071A\u0719\x03\x02\x02" + + "\x02\u071A\u071B\x03\x02\x02\x02\u071B\u0720\x03\x02\x02\x02\u071C\u071E" + + "\x05l7\x02\u071D\u071C\x03\x02\x02\x02\u071D\u071E\x03\x02\x02\x02\u071E" + + "\u071F\x03\x02\x02\x02\u071F\u0721\x05\x8AF\x02\u0720\u071D\x03\x02\x02" + + "\x02\u0720\u0721\x03\x02\x02\x02\u0721\u07BF\x03\x02\x02\x02\u0722\u0723" + + "\x05\xCAf\x02\u0723\u0724\x05\x8AF\x02\u0724\u07BF\x03\x02\x02\x02\u0725" + + "\u0726\x05\xCAf\x02\u0726\u0727\x07\b\x02\x02\u0727\u0728\x05`1\x02\u0728" + + "\u07BF\x03\x02\x02\x02\u0729\u0732\x07\x03\x02\x02\u072A\u072F\x05\xCA" + + "f\x02\u072B\u072C\x07\x05\x02\x02\u072C\u072E\x05\xCAf\x02\u072D\u072B" + + "\x03\x02\x02\x02\u072E\u0731\x03\x02\x02\x02\u072F\u072D\x03\x02\x02\x02" + + "\u072F\u0730\x03\x02\x02\x02\u0730\u0733\x03\x02\x02\x02\u0731\u072F\x03" + + "\x02\x02\x02\u0732\u072A\x03\x02\x02\x02\u0732\u0733\x03\x02\x02\x02\u0733" + + "\u0734\x03\x02\x02\x02\u0734\u0735\x07\x04\x02\x02\u0735\u0736\x07\b\x02" + + "\x02\u0736\u07BF\x05`1\x02\u0737\u0738\x07\x03\x02\x02\u0738\u0739\x05" + + "\x12\n\x02\u0739\u073A\x07\x04\x02\x02\u073A\u07BF\x03\x02\x02\x02\u073B" + + "\u073C\x07O\x02\x02\u073C\u073D\x07\x03\x02\x02\u073D\u073E\x05\x12\n" + + "\x02\u073E\u073F\x07\x04\x02\x02\u073F\u07BF\x03\x02\x02\x02\u0740\u0741" + + "\x07%\x02\x02\u0741\u0743\x05`1\x02\u0742\u0744\x05\x84C\x02\u0743\u0742" + + "\x03\x02\x02\x02\u0744\u0745\x03\x02\x02\x02\u0745\u0743\x03\x02\x02\x02" + + "\u0745\u0746\x03\x02\x02\x02\u0746\u0749\x03\x02\x02\x02\u0747\u0748\x07" + + "H\x02\x02\u0748\u074A\x05`1\x02\u0749\u0747\x03\x02\x02\x02\u0749\u074A" + + "\x03\x02\x02\x02\u074A\u074B\x03\x02\x02\x02\u074B\u074C\x07J\x02\x02" + + "\u074C\u07BF\x03\x02\x02\x02\u074D\u074F\x07%\x02\x02\u074E\u0750\x05" + + "\x84C\x02\u074F\u074E\x03\x02\x02\x02\u0750\u0751\x03\x02\x02\x02\u0751" + + "\u074F\x03\x02\x02\x02\u0751\u0752\x03\x02\x02\x02\u0752\u0755\x03\x02" + + "\x02\x02\u0753\u0754\x07H\x02\x02\u0754\u0756\x05`1\x02\u0755\u0753\x03" + + "\x02\x02\x02\u0755\u0756\x03\x02\x02\x02\u0756\u0757\x03\x02\x02\x02\u0757" + + "\u0758\x07J\x02\x02\u0758\u07BF\x03\x02\x02\x02\u0759\u075A\x07&\x02\x02" + + "\u075A\u075B\x07\x03\x02\x02\u075B\u075C\x05`1\x02\u075C\u075D\x07\x1C" + + "\x02\x02\u075D\u075E\x05~@\x02\u075E\u075F\x07\x04\x02\x02\u075F\u07BF" + + "\x03\x02\x02\x02\u0760\u0761\x07\xE2\x02\x02\u0761\u0762\x07\x03\x02\x02" + + "\u0762\u0763\x05`1\x02\u0763\u0764\x07\x1C\x02\x02\u0764\u0765\x05~@\x02" + + "\u0765\u0766\x07\x04\x02\x02\u0766\u07BF\x03\x02\x02\x02\u0767\u0768\x07" + + "\x1B\x02\x02\u0768\u0771\x07\t\x02\x02\u0769\u076E\x05`1\x02\u076A\u076B" + + "\x07\x05\x02\x02\u076B\u076D\x05`1\x02\u076C\u076A\x03\x02\x02\x02\u076D" + + "\u0770\x03\x02\x02\x02\u076E\u076C\x03\x02\x02\x02\u076E\u076F\x03\x02" + + "\x02\x02\u076F\u0772\x03\x02\x02\x02\u0770\u076E\x03\x02\x02\x02\u0771" + + "\u0769\x03\x02\x02\x02\u0771\u0772\x03\x02\x02\x02\u0772\u0773\x03\x02" + + "\x02\x02\u0773\u07BF\x07\n\x02\x02\u0774\u07BF\x05\xCAf\x02\u0775\u07BF" + + "\x073\x02\x02\u0776\u077A\x077\x02\x02\u0777\u0778\x07\x03\x02\x02\u0778" + + "\u0779\x07\u010B\x02\x02\u0779\u077B\x07\x04\x02\x02\u077A\u0777\x03\x02" + + "\x02\x02\u077A\u077B\x03\x02\x02\x02\u077B\u07BF\x03\x02\x02\x02\u077C" + + "\u0780\x078\x02\x02\u077D\u077E\x07\x03\x02\x02\u077E\u077F\x07\u010B" + + "\x02\x02\u077F\u0781\x07\x04\x02\x02\u0780\u077D\x03\x02\x02\x02\u0780" + + "\u0781\x03\x02\x02\x02\u0781\u07BF\x03\x02\x02\x02\u0782\u0786\x07\x7F" + + "\x02\x02\u0783\u0784\x07\x03\x02\x02\u0784\u0785\x07\u010B\x02\x02\u0785" + + "\u0787\x07\x04\x02\x02\u0786\u0783\x03\x02\x02\x02\u0786\u0787\x03\x02" + + "\x02\x02\u0787\u07BF\x03\x02\x02\x02\u0788\u078C\x07\x80\x02\x02\u0789" + + "\u078A\x07\x03\x02\x02\u078A\u078B\x07\u010B\x02\x02\u078B\u078D\x07\x04" + + "\x02\x02\u078C\u0789\x03\x02\x02\x02\u078C\u078D\x03\x02\x02\x02\u078D" + + "\u07BF\x03\x02\x02\x02\u078E\u07BF\x079\x02\x02\u078F\u07BF\x072\x02\x02" + + "\u0790\u07BF\x076\x02\x02\u0791\u07BF\x074\x02\x02\u0792\u0793\x07\xD4" + + "\x02\x02\u0793\u0794\x07\x03\x02\x02\u0794\u0795\x05f4\x02\u0795\u0796" + + "\x07Z\x02\x02\u0796\u0799\x05f4\x02\u0797\u0798\x07X\x02\x02\u0798\u079A" + + "\x05f4\x02\u0799\u0797\x03\x02\x02\x02\u0799\u079A\x03\x02\x02\x02\u079A" + + "\u079B\x03\x02\x02\x02\u079B\u079C\x07\x04\x02\x02\u079C\u07BF\x03\x02" + + "\x02\x02\u079D\u079E\x07\x94\x02\x02\u079E\u079F\x07\x03\x02\x02\u079F" + + "\u07A2\x05f4\x02\u07A0\u07A1\x07\x05\x02\x02\u07A1\u07A3\x05|?\x02\u07A2" + + "\u07A0\x03\x02\x02\x02\u07A2\u07A3\x03\x02\x02\x02\u07A3\u07A4\x03\x02" + + "\x02\x02\u07A4\u07A5\x07\x04\x02\x02\u07A5\u07BF\x03\x02\x02\x02\u07A6" + + "\u07A7\x07Q\x02\x02\u07A7\u07A8\x07\x03\x02\x02\u07A8\u07A9\x05\xCAf\x02" + + "\u07A9\u07AA\x07Z\x02\x02\u07AA\u07AB\x05f4\x02\u07AB\u07AC\x07\x04\x02" + + "\x02\u07AC\u07BF\x03\x02\x02\x02\u07AD\u07AE\x07\x03\x02\x02\u07AE\u07AF" + + "\x05`1\x02\u07AF\u07B0\x07\x04\x02\x02\u07B0\u07BF\x03\x02\x02\x02\u07B1" + + "\u07B2\x07c\x02\x02\u07B2\u07BB\x07\x03\x02\x02\u07B3\u07B8\x05\xC2b\x02" + + "\u07B4\u07B5\x07\x05\x02\x02\u07B5\u07B7\x05\xC2b\x02\u07B6\u07B4\x03" + + "\x02\x02\x02\u07B7\u07BA\x03\x02\x02\x02\u07B8\u07B6\x03\x02\x02\x02\u07B8" + + "\u07B9\x03\x02\x02\x02\u07B9\u07BC\x03\x02\x02\x02\u07BA\u07B8\x03\x02" + + "\x02\x02\u07BB\u07B3\x03\x02\x02\x02\u07BB\u07BC\x03\x02\x02\x02\u07BC" + + "\u07BD\x03\x02\x02\x02\u07BD\u07BF\x07\x04\x02\x02\u07BE\u06C5\x03\x02" + + "\x02\x02\u07BE\u06C7\x03\x02\x02\x02\u07BE\u06C8\x03\x02\x02\x02\u07BE" + + "\u06CB\x03\x02\x02\x02\u07BE\u06CE\x03\x02\x02\x02\u07BE\u06CF\x03\x02" + + "\x02\x02\u07BE\u06D0\x03\x02\x02\x02\u07BE\u06D1\x03\x02\x02\x02\u07BE" + + "\u06D2\x03\x02\x02\x02\u07BE\u06D3\x03\x02\x02\x02\u07BE\u06DA\x03\x02" + + "\x02\x02\u07BE\u06E4\x03\x02\x02\x02\u07BE\u06F0\x03\x02\x02\x02\u07BE" + + "\u06FB\x03\x02\x02\x02\u07BE\u0722\x03\x02\x02\x02\u07BE\u0725\x03\x02" + + "\x02\x02\u07BE\u0729\x03\x02\x02\x02\u07BE\u0737\x03\x02\x02\x02\u07BE" + + "\u073B\x03\x02\x02\x02\u07BE\u0740\x03\x02\x02\x02\u07BE\u074D\x03\x02" + + "\x02\x02\u07BE\u0759\x03\x02\x02\x02\u07BE\u0760\x03\x02\x02\x02\u07BE" + + "\u0767\x03\x02\x02\x02\u07BE\u0774\x03\x02\x02\x02\u07BE\u0775\x03\x02" + + "\x02\x02\u07BE\u0776\x03\x02\x02\x02\u07BE\u077C\x03\x02\x02\x02\u07BE" + + "\u0782\x03\x02\x02\x02\u07BE\u0788\x03\x02\x02\x02\u07BE\u078E\x03\x02" + + "\x02\x02\u07BE\u078F\x03\x02\x02\x02\u07BE\u0790\x03\x02\x02\x02\u07BE" + + "\u0791\x03\x02\x02\x02\u07BE\u0792\x03\x02\x02\x02\u07BE\u079D\x03\x02" + + "\x02\x02\u07BE\u07A6\x03\x02\x02\x02\u07BE\u07AD\x03\x02\x02\x02\u07BE" + + "\u07B1\x03\x02\x02\x02\u07BF\u07CA\x03\x02\x02\x02\u07C0\u07C1\f\x13\x02" + + "\x02\u07C1\u07C2\x07\t\x02\x02\u07C2\u07C3\x05f4\x02\u07C3\u07C4\x07\n" + + "\x02\x02\u07C4\u07C9\x03\x02\x02\x02\u07C5\u07C6\f\x11\x02\x02\u07C6\u07C7" + + "\x07\x06\x02\x02\u07C7\u07C9\x05\xCAf\x02\u07C8\u07C0\x03\x02\x02\x02" + + "\u07C8\u07C5\x03\x02\x02\x02\u07C9\u07CC\x03\x02\x02\x02\u07CA\u07C8\x03" + + "\x02\x02\x02\u07CA\u07CB\x03\x02\x02\x02\u07CBi\x03\x02\x02\x02\u07CC" + + "\u07CA\x03\x02\x02\x02\u07CD\u07CE\t\x11\x02\x02\u07CEk\x03\x02\x02\x02" + + "\u07CF\u07D0\x07h\x02\x02\u07D0\u07D4\x07\x98\x02\x02\u07D1\u07D2\x07" + + "\xBA\x02\x02\u07D2\u07D4\x07\x98\x02\x02\u07D3\u07CF\x03\x02\x02\x02\u07D3" + + "\u07D1\x03\x02\x02\x02\u07D4m\x03\x02\x02\x02\u07D5\u07DC\x07\u0108\x02" + + "\x02\u07D6\u07D9\x07\u0109\x02\x02\u07D7\u07D8\x07\xE4\x02\x02\u07D8\u07DA" + + "\x07\u0108\x02\x02\u07D9\u07D7\x03\x02\x02\x02\u07D9\u07DA\x03\x02\x02" + + "\x02\u07DA\u07DC\x03\x02\x02\x02\u07DB\u07D5\x03\x02\x02\x02\u07DB\u07D6" + + "\x03\x02\x02\x02\u07DCo\x03\x02\x02\x02\u07DD\u07DE\x07\xDC\x02\x02\u07DE" + + "\u07DF\x07\xFA\x02\x02\u07DF\u07E4\x05x=\x02\u07E0\u07E1\x07\xDC\x02\x02" + + "\u07E1\u07E2\x07\xFA\x02\x02\u07E2\u07E4\x05n8\x02\u07E3\u07DD\x03\x02" + + "\x02\x02\u07E3\u07E0\x03\x02\x02\x02\u07E4q\x03\x02\x02\x02\u07E5\u07E6" + + "\t\x12\x02\x02\u07E6s\x03\x02\x02\x02\u07E7\u07E8\t\x13\x02\x02\u07E8" + + "u\x03\x02\x02\x02\u07E9\u07EA\t\x14\x02\x02\u07EAw\x03\x02\x02\x02\u07EB" + + "\u07ED\x07p\x02\x02\u07EC\u07EE\t\x0F\x02\x02\u07ED\u07EC\x03\x02\x02" + + "\x02\u07ED\u07EE\x03\x02\x02\x02\u07EE\u07EF\x03\x02\x02\x02\u07EF\u07F0" + + "\x05n8\x02\u07F0\u07F3\x05z"; private static readonly _serializedATNSegment4: string = - "\x02\x02\u0807\u082F\x03\x02\x02\x02\u0808\u080D\x07\xDC\x02\x02\u0809" + - "\u080A\x07\x04\x02\x02\u080A\u080B\x05\x82B\x02\u080B\u080C\x07\x05\x02" + - "\x02\u080C\u080E\x03\x02\x02\x02\u080D\u0809\x03\x02\x02\x02\u080D\u080E" + - "\x03\x02\x02\x02\u080E\u080F\x03\x02\x02\x02\u080F\u0810\x07\xF5\x02\x02" + - "\u0810\u0811\x07\xDC\x02\x02\u0811\u082F\x07\xFA\x02\x02\u0812\u0813\x07" + - "F\x02\x02\u0813\u082F\x07\xAE\x02\x02\u0814\u0815\x07\x1B\x02\x02\u0815" + - "\u0816\x07\xFD\x02\x02\u0816\u0817\x05~@\x02\u0817\u0818\x07\xFF\x02\x02" + - "\u0818\u082F\x03\x02\x02\x02\u0819\u081A\x07\x82\x02\x02\u081A\u081B\x07" + - "\xFD\x02\x02\u081B\u081C\x05~@\x02\u081C\u081D\x07\x06\x02\x02\u081D\u081E" + - "\x05~@\x02\u081E\u081F\x07\xFF\x02\x02\u081F\u082F\x03\x02\x02\x02\u0820" + - "\u082C\x05\xB0Y\x02\u0821\u0822\x07\x04\x02\x02\u0822\u0827\x05\x82B\x02" + - "\u0823\u0824\x07\x06\x02\x02\u0824\u0826\x05\x82B\x02\u0825\u0823\x03" + - "\x02\x02\x02\u0826\u0829\x03\x02\x02\x02\u0827\u0825\x03\x02\x02\x02\u0827" + - "\u0828\x03\x02\x02\x02\u0828\u082A\x03\x02\x02\x02\u0829\u0827\x03\x02" + - "\x02\x02\u082A\u082B\x07\x05\x02\x02\u082B\u082D\x03\x02\x02\x02\u082C" + - "\u0821\x03\x02\x02\x02\u082C\u082D\x03\x02\x02\x02\u082D\u082F\x03\x02" + - "\x02\x02\u082E\u07D3\x03\x02\x02\x02\u082E\u07E0\x03\x02\x02\x02\u082E" + - "\u07E6\x03\x02\x02\x02\u082E\u07F2\x03\x02\x02\x02\u082E\u07FC\x03\x02" + - "\x02\x02\u082E\u0808\x03\x02\x02\x02\u082E\u0812\x03\x02\x02\x02\u082E" + - "\u0814\x03\x02\x02\x02\u082E\u0819\x03\x02\x02\x02\u082E\u0820\x03\x02" + - "\x02\x02\u082F\u0839\x03\x02\x02\x02\u0830\u0831\f\x04\x02\x02\u0831\u0835" + - "\x07\x1B\x02\x02\u0832\u0833\x07\t\x02\x02\u0833\u0834\x07\u010B\x02\x02" + - "\u0834\u0836\x07\n\x02\x02\u0835\u0832\x03\x02\x02\x02\u0835\u0836\x03" + - "\x02\x02\x02\u0836\u0838\x03\x02\x02\x02\u0837\u0830\x03\x02\x02\x02\u0838" + - "\u083B\x03\x02\x02\x02\u0839\u0837\x03\x02\x02\x02\u0839\u083A\x03\x02" + - "\x02\x02\u083A\x7F\x03\x02\x02\x02\u083B\u0839\x03\x02\x02\x02\u083C\u0841" + - "\x05~@\x02\u083D\u083E\x05\xB0Y\x02\u083E\u083F\x05~@\x02\u083F\u0841" + - "\x03\x02\x02\x02\u0840\u083C\x03\x02\x02\x02\u0840\u083D\x03\x02\x02\x02" + - "\u0841\x81\x03\x02\x02\x02\u0842\u0845\x07\u010B\x02\x02\u0843\u0845\x05" + - "~@\x02\u0844\u0842\x03\x02\x02\x02\u0844\u0843\x03\x02\x02\x02\u0845\x83" + - "\x03\x02\x02\x02\u0846\u0847\x07\xF2\x02\x02\u0847\u0848\x05`1\x02\u0848" + - "\u0849\x07\xDA\x02\x02\u0849\u084A\x05`1\x02\u084A\x85\x03\x02\x02\x02" + - "\u084B\u084C\x07T\x02\x02\u084C\u084D\x07\x04\x02\x02\u084D\u084E\x07" + - "\xF3\x02\x02\u084E\u084F\x05b2\x02\u084F\u0850\x07\x05\x02\x02\u0850\x87" + - "\x03\x02\x02\x02\u0851\u0852\x07\xF2\x02\x02\u0852\u0855\x07\x84\x02\x02" + - "\u0853\u0854\x07\x19\x02\x02\u0854\u0856\x05`1\x02\u0855\u0853\x03\x02" + - "\x02\x02\u0855\u0856\x03\x02\x02\x02\u0856\u0857\x03\x02\x02\x02\u0857" + - "\u0858\x07\xDA\x02\x02\u0858\u0859\x07\xEA\x02\x02\u0859\u085A\x07\xCD" + - "\x02\x02\u085A\u085B\x05\xB0Y\x02\u085B\u085C\x07\xFB\x02\x02\u085C\u0864" + - "\x05`1\x02\u085D\u085E\x07\x06\x02\x02\u085E\u085F\x05\xB0Y\x02\u085F" + - "\u0860\x07\xFB\x02\x02\u0860\u0861\x05`1\x02\u0861\u0863\x03\x02\x02\x02" + - "\u0862\u085D\x03\x02\x02\x02\u0863\u0866\x03\x02\x02\x02\u0864\u0862\x03" + - "\x02\x02\x02\u0864\u0865\x03\x02\x02\x02\u0865\u0892\x03\x02\x02\x02\u0866" + - "\u0864\x03\x02\x02\x02\u0867\u0868\x07\xF2\x02\x02\u0868\u086B\x07\x84" + - "\x02\x02\u0869\u086A\x07\x19\x02\x02\u086A\u086C\x05`1\x02\u086B\u0869" + - "\x03\x02\x02\x02\u086B\u086C\x03\x02\x02\x02\u086C\u086D\x03\x02\x02\x02" + - "\u086D\u086E\x07\xDA\x02\x02\u086E\u0892\x07@\x02\x02\u086F\u0870\x07" + - "\xF2\x02\x02\u0870\u0871\x07\x95\x02\x02\u0871\u0874\x07\x84\x02\x02\u0872" + - "\u0873\x07\x19\x02\x02\u0873\u0875\x05`1\x02\u0874\u0872\x03\x02\x02\x02" + - "\u0874\u0875\x03\x02\x02\x02\u0875\u0876\x03\x02\x02\x02\u0876\u0877\x07" + - "\xDA\x02\x02\u0877\u0883\x07n\x02\x02\u0878\u0879\x07\x04\x02\x02\u0879" + - "\u087E\x05\xB0Y\x02\u087A\u087B\x07\x06\x02\x02\u087B\u087D\x05\xB0Y\x02" + - "\u087C\u087A\x03\x02\x02\x02\u087D\u0880\x03\x02\x02\x02\u087E\u087C\x03" + - "\x02\x02\x02\u087E\u087F\x03\x02\x02\x02\u087F\u0881\x03\x02\x02\x02\u0880" + - "\u087E\x03\x02\x02\x02\u0881\u0882\x07\x05\x02\x02\u0882\u0884\x03\x02" + - "\x02\x02\u0883\u0878\x03\x02\x02\x02\u0883\u0884\x03\x02\x02\x02\u0884" + - "\u0885\x03\x02\x02\x02\u0885\u0886\x07\xEF\x02\x02\u0886\u0887\x07\x04" + - "\x02\x02\u0887\u088C\x05`1\x02\u0888\u0889\x07\x06\x02\x02\u0889\u088B" + - "\x05`1\x02\u088A\u0888\x03\x02\x02\x02\u088B\u088E\x03\x02\x02\x02\u088C" + - "\u088A\x03\x02\x02\x02\u088C\u088D\x03\x02\x02\x02\u088D\u088F\x03\x02" + - "\x02\x02\u088E\u088C\x03\x02\x02\x02\u088F\u0890\x07\x05\x02\x02\u0890" + - "\u0892\x03\x02\x02\x02\u0891\u0851\x03\x02\x02\x02\u0891\u0867\x03\x02" + - "\x02\x02\u0891\u086F\x03\x02\x02\x02\u0892\x89\x03\x02\x02\x02\u0893\u0899" + - "\x07\xA4\x02\x02\u0894\u089A\x05\xB0Y\x02\u0895\u0896\x07\x04\x02\x02" + - "\u0896\u0897\x05:\x1E\x02\u0897\u0898\x07\x05\x02\x02\u0898\u089A\x03" + - "\x02\x02\x02\u0899\u0894\x03\x02\x02\x02\u0899\u0895\x03\x02\x02\x02\u089A" + - "\x8B\x03\x02\x02\x02\u089B\u089C\x07\x88\x02\x02\u089C\u08A1\x05N(\x02" + - "\u089D\u089E\x07\x06\x02\x02\u089E\u08A0\x05N(\x02\u089F\u089D\x03\x02" + - "\x02\x02\u08A0\u08A3\x03\x02\x02\x02\u08A1\u089F\x03\x02\x02\x02\u08A1" + - "\u08A2\x03\x02\x02\x02\u08A2\u08A5\x03\x02\x02\x02\u08A3\u08A1\x03\x02" + - "\x02\x02\u08A4\u089B\x03\x02\x02\x02\u08A4\u08A5\x03\x02\x02\x02\u08A5" + - "\u08A6\x03\x02\x02\x02\u08A6\u08AA\x05\x8EH\x02\u08A7\u08A8\x07\x15\x02" + - "\x02\u08A8\u08A9\x07\x83\x02\x02\u08A9\u08AB\x05T+\x02\u08AA\u08A7\x03" + - "\x02\x02\x02\u08AA\u08AB\x03\x02\x02\x02\u08AB\u08AD\x03\x02\x02\x02\u08AC" + - "\u08AE\t\x0F\x02\x02\u08AD\u08AC\x03\x02\x02\x02\u08AD\u08AE\x03\x02\x02" + - "\x02\u08AE\u08B4\x03\x02\x02\x02\u08AF\u08B0\x07\xA9\x02\x02\u08B0\u08B1" + - "\x07\x04\x02\x02\u08B1\u08B2\x05\x92J\x02\u08B2\u08B3\x07\x05\x02\x02" + - "\u08B3\u08B5\x03\x02\x02\x02\u08B4\u08AF\x03\x02\x02\x02\u08B4\u08B5\x03" + - "\x02\x02\x02\u08B5\u08BF\x03\x02\x02\x02\u08B6\u08B7\x07\xD3\x02\x02\u08B7" + - "\u08BC\x05V,\x02\u08B8\u08B9\x07\x06\x02\x02\u08B9\u08BB\x05V,\x02\u08BA" + - "\u08B8\x03\x02\x02\x02\u08BB\u08BE\x03\x02\x02\x02\u08BC\u08BA\x03\x02" + - "\x02\x02\u08BC\u08BD\x03\x02\x02\x02\u08BD\u08C0\x03\x02\x02\x02\u08BE" + - "\u08BC\x03\x02\x02\x02\u08BF\u08B6\x03\x02\x02\x02\u08BF\u08C0\x03\x02" + - "\x02\x02\u08C0\u08CA\x03\x02\x02\x02\u08C1\u08C2\x07C\x02\x02\u08C2\u08C7" + - "\x05X-\x02\u08C3\u08C4\x07\x06\x02\x02\u08C4\u08C6\x05X-\x02\u08C5\u08C3" + - "\x03\x02\x02\x02\u08C6\u08C9\x03\x02\x02\x02\u08C7\u08C5\x03\x02\x02\x02" + - "\u08C7\u08C8\x03\x02\x02\x02\u08C8\u08CB\x03\x02\x02\x02\u08C9\u08C7\x03" + - "\x02\x02\x02\u08CA\u08C1\x03\x02\x02\x02\u08CA\u08CB\x03\x02\x02\x02\u08CB" + - "\x8D\x03\x02\x02\x02\u08CC\u08CD\x07\xB2\x02\x02\u08CD\u08E5\x05\x90I" + - "\x02\u08CE\u08CF\x07\xC3\x02\x02\u08CF\u08E5\x05\x90I\x02\u08D0\u08D1" + - "\x07d\x02\x02\u08D1\u08E5\x05\x90I\x02\u08D2\u08D3\x07\xB2\x02\x02\u08D3" + - "\u08D4\x07!\x02\x02\u08D4\u08D5\x05\x90I\x02\u08D5\u08D6\x07\x19\x02\x02" + - "\u08D6\u08D7\x05\x90I\x02\u08D7\u08E5\x03\x02\x02\x02\u08D8\u08D9\x07" + - "\xC3\x02\x02\u08D9\u08DA\x07!\x02\x02\u08DA\u08DB\x05\x90I\x02\u08DB\u08DC" + - "\x07\x19\x02\x02\u08DC\u08DD\x05\x90I\x02\u08DD\u08E5\x03\x02\x02\x02" + - "\u08DE\u08DF\x07d\x02\x02\u08DF\u08E0\x07!\x02\x02\u08E0\u08E1\x05\x90" + - "I\x02\u08E1\u08E2\x07\x19\x02\x02\u08E2\u08E3\x05\x90I\x02\u08E3\u08E5" + - "\x03\x02\x02\x02\u08E4\u08CC\x03\x02\x02\x02\u08E4\u08CE\x03\x02\x02\x02" + - "\u08E4\u08D0\x03\x02\x02\x02\u08E4\u08D2\x03\x02\x02\x02\u08E4\u08D8\x03" + - "\x02\x02\x02\u08E4\u08DE\x03\x02\x02\x02\u08E5\x8F\x03\x02\x02\x02\u08E6" + - "\u08E7\x07\xE5\x02\x02\u08E7\u08F0\x07\xAD\x02\x02\u08E8\u08E9\x07\xE5" + - "\x02\x02\u08E9\u08F0\x07W\x02\x02\u08EA\u08EB\x071\x02\x02\u08EB\u08F0" + - "\x07\xC2\x02\x02\u08EC\u08ED\x05`1\x02\u08ED\u08EE\t\x18\x02\x02\u08EE" + - "\u08F0\x03\x02\x02\x02\u08EF\u08E6\x03\x02\x02\x02\u08EF\u08E8\x03\x02" + - "\x02\x02\u08EF\u08EA\x03\x02\x02\x02\u08EF\u08EC\x03\x02\x02\x02\u08F0" + - "\x91\x03\x02\x02\x02\u08F1\u08F2\bJ\x01\x02\u08F2\u08F4\x05\x94K\x02\u08F3" + - "\u08F5\x05\x96L\x02\u08F4\u08F3\x03\x02\x02\x02\u08F4\u08F5\x03\x02\x02" + - "\x02\u08F5\u08FD\x03\x02\x02\x02\u08F6\u08F7\f\x04\x02\x02\u08F7\u08FC" + - "\x05\x92J\x05\u08F8\u08F9\f\x03\x02\x02\u08F9\u08FA\x07\v\x02\x02\u08FA" + - "\u08FC\x05\x92J\x04\u08FB\u08F6\x03\x02\x02\x02\u08FB\u08F8\x03\x02\x02" + - "\x02\u08FC\u08FF\x03\x02\x02\x02\u08FD\u08FB\x03\x02\x02\x02\u08FD\u08FE" + - "\x03\x02\x02\x02\u08FE\x93\x03\x02\x02\x02\u08FF\u08FD\x03\x02\x02\x02" + - "\u0900\u091A\x05\xB0Y\x02\u0901\u0902\x07\x04\x02\x02\u0902\u091A\x07" + - "\x05\x02\x02\u0903\u0904\x07\xAB\x02\x02\u0904\u0905\x07\x04\x02\x02\u0905" + - "\u090A\x05\x92J\x02\u0906\u0907\x07\x06\x02\x02\u0907\u0909\x05\x92J\x02" + - "\u0908\u0906\x03\x02\x02\x02\u0909\u090C\x03\x02\x02\x02\u090A\u0908\x03" + - "\x02\x02\x02\u090A\u090B\x03\x02\x02\x02\u090B\u090D\x03\x02\x02\x02\u090C" + - "\u090A\x03\x02\x02\x02\u090D\u090E\x07\x05\x02\x02\u090E\u091A\x03\x02" + - "\x02\x02\u090F\u0910\x07\x04\x02\x02\u0910\u0911\x05\x92J\x02\u0911\u0912" + - "\x07\x05\x02\x02\u0912\u091A\x03\x02\x02\x02\u0913\u091A\x07\f\x02\x02" + - "\u0914\u091A\x07\r\x02\x02\u0915\u0916\x07\x0E\x02\x02\u0916\u0917\x05" + - "\x92J\x02\u0917\u0918\x07\x0F\x02\x02\u0918\u091A\x03\x02\x02\x02\u0919" + - "\u0900\x03\x02\x02\x02\u0919\u0901\x03\x02\x02\x02\u0919\u0903\x03\x02" + - "\x02\x02\u0919\u090F\x03\x02\x02\x02\u0919\u0913\x03\x02\x02\x02\u0919" + - "\u0914\x03\x02\x02\x02\u0919\u0915\x03\x02\x02\x02\u091A\x95\x03\x02\x02" + - "\x02\u091B\u091D\x07\u0103\x02\x02\u091C\u091E\x07\u0107\x02\x02\u091D" + - "\u091C\x03\x02\x02\x02\u091D\u091E\x03\x02\x02\x02\u091E\u093A\x03\x02" + - "\x02\x02\u091F\u0921\x07\u0101\x02\x02\u0920\u0922\x07\u0107\x02\x02\u0921" + - "\u0920\x03\x02\x02\x02\u0921\u0922\x03\x02\x02\x02\u0922\u093A\x03\x02" + - "\x02\x02\u0923\u0925\x07\u0107\x02\x02\u0924\u0926\x07\u0107\x02\x02\u0925" + - "\u0924\x03\x02\x02\x02\u0925\u0926\x03\x02\x02\x02\u0926\u093A\x03\x02" + - "\x02\x02\u0927\u0928\x07\x10\x02\x02\u0928\u0929\x07\u010B\x02\x02\u0929" + - "\u092B\x07\x11\x02\x02\u092A\u092C\x07\u0107\x02\x02\u092B\u092A\x03\x02" + - "\x02\x02\u092B\u092C\x03\x02\x02\x02\u092C\u093A\x03\x02\x02\x02\u092D" + - "\u092F\x07\x10\x02\x02\u092E\u0930\x07\u010B\x02\x02\u092F\u092E\x03\x02" + - "\x02\x02\u092F\u0930\x03\x02\x02\x02\u0930\u0931\x03\x02\x02\x02\u0931" + - "\u0933\x07\x06\x02\x02\u0932\u0934\x07\u010B\x02\x02\u0933\u0932\x03\x02" + - "\x02\x02\u0933\u0934\x03\x02\x02\x02\u0934\u0935\x03\x02\x02\x02\u0935" + - "\u0937\x07\x11\x02\x02\u0936\u0938\x07\u0107\x02\x02\u0937\u0936\x03\x02" + - "\x02\x02\u0937\u0938\x03\x02\x02\x02\u0938\u093A\x03\x02\x02\x02\u0939" + - "\u091B\x03\x02\x02\x02\u0939\u091F\x03\x02\x02\x02\u0939\u0923\x03\x02" + - "\x02\x02\u0939\u0927\x03\x02\x02\x02\u0939\u092D\x03\x02\x02\x02\u093A" + - "\x97\x03\x02\x02\x02\u093B\u093C\x05\xB0Y\x02\u093C\u093D\x07\xFB\x02" + - "\x02\u093D\u093E\x05`1\x02\u093E\x99\x03\x02\x02\x02\u093F\u0940\x07Y" + - "\x02\x02\u0940\u0944\t\x19\x02\x02\u0941\u0942\x07\xE3\x02\x02\u0942\u0944" + - "\t\x1A\x02\x02\u0943\u093F\x03\x02\x02\x02\u0943\u0941\x03\x02\x02\x02" + - "\u0944\x9B\x03\x02\x02\x02\u0945\u0946\x07u\x02\x02\u0946\u0947\x07{\x02" + - "\x02\u0947\u094B\x05\x9EP\x02\u0948\u0949\x07\xB3\x02\x02\u0949\u094B" + - "\t\x1B\x02\x02\u094A\u0945\x03\x02\x02\x02\u094A\u0948\x03\x02\x02\x02" + - "\u094B\x9D\x03\x02\x02\x02\u094C\u094D\x07\xB3\x02\x02\u094D\u0954\x07" + - "\xE6\x02\x02\u094E\u094F\x07\xB3\x02\x02\u094F\u0954\x07,\x02\x02\u0950" + - "\u0951\x07\xB7\x02\x02\u0951\u0954\x07\xB3\x02\x02\u0952\u0954\x07\xCB" + - "\x02\x02\u0953\u094C\x03\x02\x02\x02\u0953\u094E\x03\x02\x02\x02\u0953" + - "\u0950\x03\x02\x02\x02\u0953\u0952\x03\x02\x02\x02\u0954\x9F\x03\x02\x02" + - "\x02\u0955\u095B\x05`1\x02\u0956\u0957\x05\xB0Y\x02\u0957\u0958\x07\x12" + - "\x02\x02\u0958\u0959\x05`1\x02\u0959\u095B\x03\x02\x02\x02\u095A\u0955" + - "\x03\x02\x02\x02\u095A\u0956\x03\x02\x02\x02\u095B\xA1\x03\x02\x02\x02" + - "\u095C\u095D\x05\xB0Y\x02\u095D\u095E\x07\x03\x02\x02\u095E\u095F\x05" + - "\xB0Y\x02\u095F\u0962\x03\x02\x02\x02\u0960\u0962\x05\xB0Y\x02\u0961\u095C" + - "\x03\x02\x02\x02\u0961\u0960\x03\x02\x02\x02\u0962\xA3\x03\x02\x02\x02" + - "\u0963\u0968\x05\xA2R\x02\u0964\u0965\x07\x06\x02\x02\u0965\u0967\x05" + - "\xA2R\x02\u0966\u0964\x03\x02\x02\x02\u0967\u096A\x03\x02\x02\x02\u0968" + - "\u0966\x03\x02\x02\x02\u0968\u0969\x03\x02\x02\x02\u0969\xA5\x03\x02\x02" + - "\x02\u096A\u0968\x03\x02\x02\x02\u096B\u096C\t\x1C\x02\x02\u096C\xA7\x03" + - "\x02\x02\x02\u096D\u0972\x05\xB0Y\x02\u096E\u096F\x07\x03\x02\x02\u096F" + - "\u0971\x05\xB0Y\x02\u0970\u096E\x03\x02\x02\x02\u0971\u0974\x03\x02\x02" + - "\x02\u0972\u0970\x03\x02\x02\x02\u0972\u0973\x03\x02\x02\x02\u0973\xA9" + - "\x03\x02\x02\x02\u0974\u0972\x03\x02\x02\x02\u0975\u0979\x05\xACW\x02" + - "\u0976\u0979\x079\x02\x02\u0977\u0979\x075\x02\x02\u0978\u0975\x03\x02" + - "\x02\x02\u0978\u0976\x03\x02\x02\x02\u0978\u0977\x03\x02\x02\x02\u0979" + - "\xAB\x03\x02\x02\x02\u097A\u0980\x05\xB0Y\x02\u097B\u097C\x07\xEC\x02" + - "\x02\u097C\u0980\x05\xB0Y\x02\u097D\u097E\x07\xBE\x02\x02\u097E\u0980" + - "\x05\xB0Y\x02\u097F\u097A\x03\x02\x02\x02\u097F\u097B\x03\x02\x02\x02" + - "\u097F\u097D\x03\x02\x02\x02\u0980\xAD\x03\x02\x02\x02\u0981\u0986\x05" + - "\xB0Y\x02\u0982\u0983\x07\x06\x02\x02\u0983\u0985\x05\xB0Y\x02\u0984\u0982" + - "\x03\x02\x02\x02\u0985\u0988\x03\x02\x02\x02\u0986\u0984\x03\x02\x02\x02" + - "\u0986\u0987\x03\x02\x02\x02\u0987\xAF\x03\x02\x02\x02\u0988\u0986\x03" + - "\x02\x02\x02\u0989\u098F\x07\u010E\x02\x02\u098A\u098F\x07\u0110\x02\x02" + - "\u098B\u098F\x05\xB4[\x02\u098C\u098F\x07\u0111\x02\x02\u098D\u098F\x07" + - "\u010F\x02\x02\u098E\u0989\x03\x02\x02\x02\u098E\u098A\x03\x02\x02\x02" + - "\u098E\u098B\x03\x02\x02\x02\u098E\u098C\x03\x02\x02\x02\u098E\u098D\x03" + - "\x02\x02\x02\u098F\xB1\x03\x02\x02\x02\u0990\u0992\x07\u0102\x02\x02\u0991" + - "\u0990\x03\x02\x02\x02\u0991\u0992\x03\x02\x02\x02\u0992\u0993\x03\x02" + - "\x02\x02\u0993\u099D\x07\u010C\x02\x02\u0994\u0996\x07\u0102\x02\x02\u0995" + - "\u0994\x03\x02\x02\x02\u0995\u0996\x03\x02\x02\x02\u0996\u0997\x03\x02" + - "\x02\x02\u0997\u099D\x07\u010D\x02\x02\u0998\u099A\x07\u0102\x02\x02\u0999" + - "\u0998\x03\x02\x02\x02\u0999\u099A\x03\x02\x02\x02\u099A\u099B\x03\x02" + - "\x02\x02\u099B\u099D\x07\u010B\x02\x02\u099C\u0991\x03\x02\x02\x02\u099C" + - "\u0995\x03\x02\x02\x02\u099C\u0999\x03\x02\x02\x02\u099D\xB3\x03\x02\x02" + - "\x02\u099E\u099F\t\x1D\x02\x02\u099F\xB5\x03\x02\x02\x02\u0146\xB9\xC3" + - "\xC7\xCB\xCF\xD3\xD7\xE6\xEB\xEF\xF5\xF9\u010E\u0112\u0116\u011A\u0122" + - "\u0126\u0129\u0130\u0139\u013F\u0143\u0149\u0150\u0159\u0162\u0170\u0179" + - "\u017F\u0186\u0190\u0197\u019F\u01A7\u01C4\u01C7\u01CA\u01CE\u01D4\u01D9" + - "\u01E0\u01E5\u01E9\u01F1\u01F7\u01FB\u0209\u0211\u0224\u023D\u0240\u024A" + - "\u024E\u025B\u0261\u0266\u026A\u0270\u0279\u027F\u0283\u028A\u028E\u0296" + - "\u029B\u029F\u02A7\u02AF\u02B4\u02B8\u02C2\u02C9\u02CE\u02D2\u02DC\u02DF" + - "\u02E3\u02E6\u02EE\u02F3\u030B\u0311\u0313\u0319\u031F\u0321\u0329\u032B" + - "\u0331\u0337\u0339\u0348\u034D\u0354\u0360\u0362\u036A\u036C\u037E\u0381" + - "\u0385\u0389\u039B\u039E\u03AE\u03B8\u03BD\u03C3\u03C6\u03CF\u03DB\u03DE" + - "\u03E4\u03EB\u03F0\u03F6\u03FA\u03FE\u0404\u040F\u0418\u0422\u0425\u042A" + - "\u042C\u0433\u0439\u043B\u043F\u0449\u044F\u0452\u0454\u0460\u0467\u046B" + - "\u046F\u0473\u047A\u0483\u0486\u048A\u048F\u0493\u049B\u049E\u04A1\u04A8" + - "\u04B3\u04B6\u04C0\u04C3\u04CE\u04D3\u04DB\u04DE\u04E2\u04EB\u04F4\u04F7" + - "\u0500\u0503\u0506\u050A\u0515\u0518\u051F\u0522\u0535\u0539\u053D\u0541" + - "\u0545\u0549\u054B\u0556\u055B\u0564\u0572\u0575\u057E\u0581\u0589\u058C" + - "\u058F\u0594\u0597\u05A3\u05A6\u05AE\u05B3\u05B7\u05B9\u05BB\u05CA\u05CC" + - "\u05D7\u05EC\u05F6\u0601\u0605\u0607\u060F\u0620\u0626\u0631\u0638\u063C" + - "\u0644\u0646\u0653\u065B\u0664\u066A\u0672\u0678\u067C\u0681\u0686\u068C" + - "\u069A\u069C\u06BA\u06C5\u06CF\u06D2\u06D5\u06DA\u06E1\u06E4\u06ED\u06F0" + - "\u06F4\u06F7\u06FA\u0709\u070C\u071F\u0723\u072B\u072F\u0748\u074B\u0754" + - "\u075A\u0760\u0766\u0773\u077C\u0792\u0795\u0798\u07A2\u07A4\u07AD\u07B3" + - "\u07B5\u07BD\u07C7\u07CD\u07DB\u07E4\u07EB\u07F0\u07F7\u0801\u0806\u080D" + - "\u0827\u082C\u082E\u0835\u0839\u0840\u0844\u0855\u0864\u086B\u0874\u087E" + - "\u0883\u088C\u0891\u0899\u08A1\u08A4\u08AA\u08AD\u08B4\u08BC\u08BF\u08C7" + - "\u08CA\u08E4\u08EF\u08F4\u08FB\u08FD\u090A\u0919\u091D\u0921\u0925\u092B" + - "\u092F\u0933\u0937\u0939\u0943\u094A\u0953\u095A\u0961\u0968\u0972\u0978" + - "\u097F\u0986\u098E\u0991\u0995\u0999\u099C"; + ">\x02\u07F1\u07F2\x07\xDE\x02\x02\u07F2\u07F4\x05z>\x02\u07F3\u07F1\x03" + + "\x02\x02\x02\u07F3\u07F4\x03\x02\x02\x02\u07F4y\x03\x02\x02\x02\u07F5" + + "\u07F6\t\x15\x02\x02\u07F6{\x03\x02\x02\x02\u07F7\u07F8\t\x16\x02\x02" + + "\u07F8}\x03\x02\x02\x02\u07F9\u07FA\b@\x01\x02\u07FA\u07FB\x07\xC2\x02" + + "\x02\u07FB\u07FC\x07\x03\x02\x02\u07FC\u0801\x05\x80A\x02\u07FD\u07FE" + + "\x07\x05\x02\x02\u07FE\u0800\x05\x80A\x02\u07FF\u07FD\x03\x02\x02\x02" + + "\u0800\u0803\x03\x02\x02\x02\u0801\u07FF\x03\x02\x02\x02\u0801\u0802\x03" + + "\x02\x02\x02\u0802\u0804\x03\x02\x02\x02\u0803\u0801\x03\x02\x02\x02\u0804" + + "\u0805\x07\x04\x02\x02\u0805\u0855\x03\x02\x02\x02\u0806\u0807\x07p\x02" + + "\x02\u0807\u080A\x05z>\x02\u0808\u0809\x07\xDE\x02\x02\u0809\u080B\x05" + + "z>\x02\u080A\u0808\x03\x02\x02\x02\u080A\u080B\x03\x02\x02\x02\u080B\u0855" + + "\x03\x02\x02\x02\u080C\u0811\x07\xDD\x02\x02\u080D\u080E\x07\x03\x02\x02" + + "\u080E\u080F\x05\x82B\x02\u080F\u0810\x07\x04\x02\x02\u0810\u0812\x03" + + "\x02\x02\x02\u0811\u080D\x03\x02\x02\x02\u0811\u0812\x03\x02\x02\x02\u0812" + + "\u0816\x03\x02\x02\x02\u0813\u0814\x07\xF6\x02\x02\u0814\u0815\x07\xDC" + + "\x02\x02\u0815\u0817\x07\xFA\x02\x02\u0816\u0813\x03\x02\x02\x02\u0816" + + "\u0817\x03\x02\x02\x02\u0817\u0855\x03\x02\x02\x02\u0818\u081D\x07\xDD" + + "\x02\x02\u0819\u081A\x07\x03\x02\x02\u081A\u081B\x05\x82B\x02\u081B\u081C" + + "\x07\x04\x02\x02\u081C\u081E\x03\x02\x02\x02\u081D\u0819\x03\x02\x02\x02" + + "\u081D\u081E\x03\x02\x02\x02\u081E\u081F\x03\x02\x02\x02\u081F\u0820\x07" + + "\xF5\x02\x02\u0820\u0821\x07\xDC\x02\x02\u0821\u0855\x07\xFA\x02\x02\u0822" + + "\u0827\x07\xDC\x02\x02\u0823\u0824\x07\x03\x02\x02\u0824\u0825\x05\x82" + + "B\x02\u0825\u0826\x07\x04\x02\x02\u0826\u0828\x03\x02\x02\x02\u0827\u0823" + + "\x03\x02\x02\x02\u0827\u0828\x03\x02\x02\x02\u0828\u082C\x03\x02\x02\x02" + + "\u0829\u082A\x07\xF6\x02\x02\u082A\u082B\x07\xDC\x02\x02\u082B\u082D\x07" + + "\xFA\x02\x02\u082C\u0829\x03\x02\x02\x02\u082C\u082D\x03\x02\x02\x02\u082D" + + "\u0855\x03\x02\x02\x02\u082E\u0833\x07\xDC\x02\x02\u082F\u0830\x07\x03" + + "\x02\x02\u0830\u0831\x05\x82B\x02\u0831\u0832\x07\x04\x02\x02\u0832\u0834" + + "\x03\x02\x02\x02\u0833\u082F\x03\x02\x02\x02\u0833\u0834\x03\x02\x02\x02" + + "\u0834\u0835\x03\x02\x02\x02\u0835\u0836\x07\xF5\x02\x02\u0836\u0837\x07" + + "\xDC\x02\x02\u0837\u0855\x07\xFA\x02\x02\u0838\u0839\x07F\x02\x02\u0839" + + "\u0855\x07\xAE\x02\x02\u083A\u083B\x07\x1B\x02\x02\u083B\u083C\x07\xFD" + + "\x02\x02\u083C\u083D\x05~@\x02\u083D\u083E\x07\xFF\x02\x02\u083E\u0855" + + "\x03\x02\x02\x02\u083F\u0840\x07\x82\x02\x02\u0840\u0841\x07\xFD\x02\x02" + + "\u0841\u0842\x05~@\x02\u0842\u0843\x07\x05\x02\x02\u0843\u0844\x05~@\x02" + + "\u0844\u0845\x07\xFF\x02\x02\u0845\u0855\x03\x02\x02\x02\u0846\u0852\x05" + + "\xCAf\x02\u0847\u0848\x07\x03\x02\x02\u0848\u084D\x05\x82B\x02\u0849\u084A" + + "\x07\x05\x02\x02\u084A\u084C\x05\x82B\x02\u084B\u0849\x03\x02\x02\x02" + + "\u084C\u084F\x03\x02\x02\x02\u084D\u084B\x03\x02\x02\x02\u084D\u084E\x03" + + "\x02\x02\x02\u084E\u0850\x03\x02\x02\x02\u084F\u084D\x03\x02\x02\x02\u0850" + + "\u0851\x07\x04\x02\x02\u0851\u0853\x03\x02\x02\x02\u0852\u0847\x03\x02" + + "\x02\x02\u0852\u0853\x03\x02\x02\x02\u0853\u0855\x03\x02\x02\x02\u0854" + + "\u07F9\x03\x02\x02\x02\u0854\u0806\x03\x02\x02\x02\u0854\u080C\x03\x02" + + "\x02\x02\u0854\u0818\x03\x02\x02\x02\u0854\u0822\x03\x02\x02\x02\u0854" + + "\u082E\x03\x02\x02\x02\u0854\u0838\x03\x02\x02\x02\u0854\u083A\x03\x02" + + "\x02\x02\u0854\u083F\x03\x02\x02\x02\u0854\u0846\x03\x02\x02\x02\u0855" + + "\u085F\x03\x02\x02\x02\u0856\u0857\f\x04\x02\x02\u0857\u085B\x07\x1B\x02" + + "\x02\u0858\u0859\x07\t\x02\x02\u0859\u085A\x07\u010B\x02\x02\u085A\u085C" + + "\x07\n\x02\x02\u085B\u0858\x03\x02\x02\x02\u085B\u085C\x03\x02\x02\x02" + + "\u085C\u085E\x03\x02\x02\x02\u085D\u0856\x03\x02\x02\x02\u085E\u0861\x03" + + "\x02\x02\x02\u085F\u085D\x03\x02\x02\x02\u085F\u0860\x03\x02\x02\x02\u0860" + + "\x7F\x03\x02\x02\x02\u0861\u085F\x03\x02\x02\x02\u0862\u0867\x05~@\x02" + + "\u0863\u0864\x05\xCAf\x02\u0864\u0865\x05~@\x02\u0865\u0867\x03\x02\x02" + + "\x02\u0866\u0862\x03\x02\x02\x02\u0866\u0863\x03\x02\x02\x02\u0867\x81" + + "\x03\x02\x02\x02\u0868\u086B\x07\u010B\x02\x02\u0869\u086B\x05~@\x02\u086A" + + "\u0868\x03\x02\x02\x02\u086A\u0869\x03\x02\x02\x02\u086B\x83\x03\x02\x02" + + "\x02\u086C\u086D\x07\xF2\x02\x02\u086D\u086E\x05`1\x02\u086E\u086F\x07" + + "\xDA\x02\x02\u086F\u0870\x05`1\x02\u0870\x85\x03\x02\x02\x02\u0871\u0872" + + "\x07T\x02\x02\u0872\u0873\x07\x03\x02\x02\u0873\u0874\x07\xF3\x02\x02" + + "\u0874\u0875\x05b2\x02\u0875\u0876\x07\x04\x02\x02\u0876\x87\x03\x02\x02" + + "\x02\u0877\u0878\x07\xF2\x02\x02\u0878\u087B\x07\x84\x02\x02\u0879\u087A" + + "\x07\x19\x02\x02\u087A\u087C\x05`1\x02\u087B\u0879\x03\x02\x02\x02\u087B" + + "\u087C\x03\x02\x02\x02\u087C\u087D\x03\x02\x02\x02\u087D\u087E\x07\xDA" + + "\x02\x02\u087E\u087F\x07\xEA\x02\x02\u087F\u0880\x07\xCD\x02\x02\u0880" + + "\u0881\x05\xCAf\x02\u0881\u0882\x07\xFB\x02\x02\u0882\u088A\x05`1\x02" + + "\u0883\u0884\x07\x05\x02\x02\u0884\u0885\x05\xCAf\x02\u0885\u0886\x07" + + "\xFB\x02\x02\u0886\u0887\x05`1\x02\u0887\u0889\x03\x02\x02\x02\u0888\u0883" + + "\x03\x02\x02\x02\u0889\u088C\x03\x02\x02\x02\u088A\u0888\x03\x02\x02\x02" + + "\u088A\u088B\x03\x02\x02\x02\u088B\u08B8\x03\x02\x02\x02\u088C\u088A\x03" + + "\x02\x02\x02\u088D\u088E\x07\xF2\x02\x02\u088E\u0891\x07\x84\x02\x02\u088F" + + "\u0890\x07\x19\x02\x02\u0890\u0892\x05`1\x02\u0891\u088F\x03\x02\x02\x02" + + "\u0891\u0892\x03\x02\x02\x02\u0892\u0893\x03\x02\x02\x02\u0893\u0894\x07" + + "\xDA\x02\x02\u0894\u08B8\x07@\x02\x02\u0895\u0896\x07\xF2\x02\x02\u0896" + + "\u0897\x07\x95\x02\x02\u0897\u089A\x07\x84\x02\x02\u0898\u0899\x07\x19" + + "\x02\x02\u0899\u089B\x05`1\x02\u089A\u0898\x03\x02\x02\x02\u089A\u089B" + + "\x03\x02\x02\x02\u089B\u089C\x03\x02\x02\x02\u089C\u089D\x07\xDA\x02\x02" + + "\u089D\u08A9\x07n\x02\x02\u089E\u089F\x07\x03\x02\x02\u089F\u08A4\x05" + + "\xCAf\x02\u08A0\u08A1\x07\x05\x02\x02\u08A1\u08A3\x05\xCAf\x02\u08A2\u08A0" + + "\x03\x02\x02\x02\u08A3\u08A6\x03\x02\x02\x02\u08A4\u08A2\x03\x02\x02\x02" + + "\u08A4\u08A5\x03\x02\x02\x02\u08A5\u08A7\x03\x02\x02\x02\u08A6\u08A4\x03" + + "\x02\x02\x02\u08A7\u08A8\x07\x04\x02\x02\u08A8\u08AA\x03\x02\x02\x02\u08A9" + + "\u089E\x03\x02\x02\x02\u08A9\u08AA\x03\x02\x02\x02\u08AA\u08AB\x03\x02" + + "\x02\x02\u08AB\u08AC\x07\xEF\x02\x02\u08AC\u08AD\x07\x03\x02\x02\u08AD" + + "\u08B2\x05`1\x02\u08AE\u08AF\x07\x05\x02\x02\u08AF\u08B1\x05`1\x02\u08B0" + + "\u08AE\x03\x02\x02\x02\u08B1\u08B4\x03\x02\x02\x02\u08B2\u08B0\x03\x02" + + "\x02\x02\u08B2\u08B3\x03\x02\x02\x02\u08B3\u08B5\x03\x02\x02\x02\u08B4" + + "\u08B2\x03\x02\x02\x02\u08B5\u08B6\x07\x04\x02\x02\u08B6\u08B8\x03\x02" + + "\x02\x02\u08B7\u0877\x03\x02\x02\x02\u08B7\u088D\x03\x02\x02\x02\u08B7" + + "\u0895\x03\x02\x02\x02\u08B8\x89\x03\x02\x02\x02\u08B9\u08BF\x07\xA4\x02" + + "\x02\u08BA\u08C0\x05\xCAf\x02\u08BB\u08BC\x07\x03\x02\x02\u08BC\u08BD" + + "\x05:\x1E\x02\u08BD\u08BE\x07\x04\x02\x02\u08BE\u08C0\x03\x02\x02\x02" + + "\u08BF\u08BA\x03\x02\x02\x02\u08BF\u08BB\x03\x02\x02\x02\u08C0\x8B\x03" + + "\x02\x02\x02\u08C1\u08C2\x07\x88\x02\x02\u08C2\u08C7\x05N(\x02\u08C3\u08C4" + + "\x07\x05\x02\x02\u08C4\u08C6\x05N(\x02\u08C5\u08C3\x03\x02\x02\x02\u08C6" + + "\u08C9\x03\x02\x02\x02\u08C7\u08C5\x03\x02\x02\x02\u08C7\u08C8\x03\x02" + + "\x02\x02\u08C8\u08CB\x03\x02\x02\x02\u08C9\u08C7\x03\x02\x02\x02\u08CA" + + "\u08C1\x03\x02\x02\x02\u08CA\u08CB\x03\x02\x02\x02\u08CB\u08CC\x03\x02" + + "\x02\x02\u08CC\u08D0\x05\x8EH\x02\u08CD\u08CE\x07\x15\x02\x02\u08CE\u08CF" + + "\x07\x83\x02\x02\u08CF\u08D1\x05T+\x02\u08D0\u08CD\x03\x02\x02\x02\u08D0" + + "\u08D1\x03\x02\x02\x02\u08D1\u08D3\x03\x02\x02\x02\u08D2\u08D4\t\x0E\x02" + + "\x02\u08D3\u08D2\x03\x02\x02\x02\u08D3\u08D4\x03\x02\x02\x02\u08D4\u08DA" + + "\x03\x02\x02\x02\u08D5\u08D6\x07\xA9\x02\x02\u08D6\u08D7\x07\x03\x02\x02" + + "\u08D7\u08D8\x05\x92J\x02\u08D8\u08D9\x07\x04\x02\x02\u08D9\u08DB\x03" + + "\x02\x02\x02\u08DA\u08D5\x03\x02\x02\x02\u08DA\u08DB\x03\x02\x02\x02\u08DB" + + "\u08E5\x03\x02\x02\x02\u08DC\u08DD\x07\xD3\x02\x02\u08DD\u08E2\x05V,\x02" + + "\u08DE\u08DF\x07\x05\x02\x02\u08DF\u08E1\x05V,\x02\u08E0\u08DE\x03\x02" + + "\x02\x02\u08E1\u08E4\x03\x02\x02\x02\u08E2\u08E0\x03\x02\x02\x02\u08E2" + + "\u08E3\x03\x02\x02\x02\u08E3\u08E6\x03\x02\x02\x02\u08E4\u08E2\x03\x02" + + "\x02\x02\u08E5\u08DC\x03\x02\x02\x02\u08E5\u08E6\x03\x02\x02\x02\u08E6" + + "\u08F0\x03\x02\x02\x02\u08E7\u08E8\x07C\x02\x02\u08E8\u08ED\x05X-\x02" + + "\u08E9\u08EA\x07\x05\x02\x02\u08EA\u08EC\x05X-\x02\u08EB\u08E9\x03\x02" + + "\x02\x02\u08EC\u08EF\x03\x02\x02\x02\u08ED\u08EB\x03\x02\x02\x02\u08ED" + + "\u08EE\x03\x02\x02\x02\u08EE\u08F1\x03\x02\x02\x02\u08EF\u08ED\x03\x02" + + "\x02\x02\u08F0\u08E7\x03\x02\x02\x02\u08F0\u08F1\x03\x02\x02\x02\u08F1" + + "\x8D\x03\x02\x02\x02\u08F2\u08F3\x07\xB2\x02\x02\u08F3\u090B\x05\x90I" + + "\x02\u08F4\u08F5\x07\xC3\x02\x02\u08F5\u090B\x05\x90I\x02\u08F6\u08F7" + + "\x07d\x02\x02\u08F7\u090B\x05\x90I\x02\u08F8\u08F9\x07\xB2\x02\x02\u08F9" + + "\u08FA\x07!\x02\x02\u08FA\u08FB\x05\x90I\x02\u08FB\u08FC\x07\x19\x02\x02" + + "\u08FC\u08FD\x05\x90I\x02\u08FD\u090B\x03\x02\x02\x02\u08FE\u08FF\x07" + + "\xC3\x02\x02\u08FF\u0900\x07!\x02\x02\u0900\u0901\x05\x90I\x02\u0901\u0902" + + "\x07\x19\x02\x02\u0902\u0903\x05\x90I\x02\u0903\u090B\x03\x02\x02\x02" + + "\u0904\u0905\x07d\x02\x02\u0905\u0906\x07!\x02\x02\u0906\u0907\x05\x90" + + "I\x02\u0907\u0908\x07\x19\x02\x02\u0908\u0909\x05\x90I\x02\u0909\u090B" + + "\x03\x02\x02\x02\u090A\u08F2\x03\x02\x02\x02\u090A\u08F4\x03\x02\x02\x02" + + "\u090A\u08F6\x03\x02\x02\x02\u090A\u08F8\x03\x02\x02\x02\u090A\u08FE\x03" + + "\x02\x02\x02\u090A\u0904\x03\x02\x02\x02\u090B\x8F\x03\x02\x02\x02\u090C" + + "\u090D\x07\xE5\x02\x02\u090D\u0916\x07\xAD\x02\x02\u090E\u090F\x07\xE5" + + "\x02\x02\u090F\u0916\x07W\x02\x02\u0910\u0911\x071\x02\x02\u0911\u0916" + + "\x07\xC2\x02\x02\u0912\u0913\x05`1\x02\u0913\u0914\t\x17\x02\x02\u0914" + + "\u0916\x03\x02\x02\x02\u0915\u090C\x03\x02\x02\x02\u0915\u090E\x03\x02" + + "\x02\x02\u0915\u0910\x03\x02\x02\x02\u0915\u0912\x03\x02\x02\x02\u0916" + + "\x91\x03\x02\x02\x02\u0917\u0918\bJ\x01\x02\u0918\u091A\x05\x94K\x02\u0919" + + "\u091B\x05\x96L\x02\u091A\u0919\x03\x02\x02\x02\u091A\u091B\x03\x02\x02" + + "\x02\u091B\u0923\x03\x02\x02\x02\u091C\u091D\f\x04\x02\x02\u091D\u0922" + + "\x05\x92J\x05\u091E\u091F\f\x03\x02\x02\u091F\u0920\x07\v\x02\x02\u0920" + + "\u0922\x05\x92J\x04\u0921\u091C\x03\x02\x02\x02\u0921\u091E\x03\x02\x02" + + "\x02\u0922\u0925\x03\x02\x02\x02\u0923\u0921\x03\x02\x02\x02\u0923\u0924" + + "\x03\x02\x02\x02\u0924\x93\x03\x02\x02\x02\u0925\u0923\x03\x02\x02\x02" + + "\u0926\u0940\x05\xCAf\x02\u0927\u0928\x07\x03\x02\x02\u0928\u0940\x07" + + "\x04\x02\x02\u0929\u092A\x07\xAB\x02\x02\u092A\u092B\x07\x03\x02\x02\u092B" + + "\u0930\x05\x92J\x02\u092C\u092D\x07\x05\x02\x02\u092D\u092F\x05\x92J\x02" + + "\u092E\u092C\x03\x02\x02\x02\u092F\u0932\x03\x02\x02\x02\u0930\u092E\x03" + + "\x02\x02\x02\u0930\u0931\x03\x02\x02\x02\u0931\u0933\x03\x02\x02\x02\u0932" + + "\u0930\x03\x02\x02\x02\u0933\u0934\x07\x04\x02\x02\u0934\u0940\x03\x02" + + "\x02\x02\u0935\u0936\x07\x03\x02\x02\u0936\u0937\x05\x92J\x02\u0937\u0938" + + "\x07\x04\x02\x02\u0938\u0940\x03\x02\x02\x02\u0939\u0940\x07\f\x02\x02" + + "\u093A\u0940\x07\r\x02\x02\u093B\u093C\x07\x0E\x02\x02\u093C\u093D\x05" + + "\x92J\x02\u093D\u093E\x07\x0F\x02\x02\u093E\u0940\x03\x02\x02\x02\u093F" + + "\u0926\x03\x02\x02\x02\u093F\u0927\x03\x02\x02\x02\u093F\u0929\x03\x02" + + "\x02\x02\u093F\u0935\x03\x02\x02\x02\u093F\u0939\x03\x02\x02\x02\u093F" + + "\u093A\x03\x02\x02\x02\u093F\u093B\x03\x02\x02\x02\u0940\x95\x03\x02\x02" + + "\x02\u0941\u0943\x07\u0103\x02\x02\u0942\u0944\x07\u0107\x02\x02\u0943" + + "\u0942\x03\x02\x02\x02\u0943\u0944\x03\x02\x02\x02\u0944\u0960\x03\x02" + + "\x02\x02\u0945\u0947\x07\u0101\x02\x02\u0946\u0948\x07\u0107\x02\x02\u0947" + + "\u0946\x03\x02\x02\x02\u0947\u0948\x03\x02\x02\x02\u0948\u0960\x03\x02" + + "\x02\x02\u0949\u094B\x07\u0107\x02\x02\u094A\u094C\x07\u0107\x02\x02\u094B" + + "\u094A\x03\x02\x02\x02\u094B\u094C\x03\x02\x02\x02\u094C\u0960\x03\x02" + + "\x02\x02\u094D\u094E\x07\x10\x02\x02\u094E\u094F\x07\u010B\x02\x02\u094F" + + "\u0951\x07\x11\x02\x02\u0950\u0952\x07\u0107\x02\x02\u0951\u0950\x03\x02" + + "\x02\x02\u0951\u0952\x03\x02\x02\x02\u0952\u0960\x03\x02\x02\x02\u0953" + + "\u0955\x07\x10\x02\x02\u0954\u0956\x07\u010B\x02\x02\u0955\u0954\x03\x02" + + "\x02\x02\u0955\u0956\x03\x02\x02\x02\u0956\u0957\x03\x02\x02\x02\u0957" + + "\u0959\x07\x05\x02\x02\u0958\u095A\x07\u010B\x02\x02\u0959\u0958\x03\x02" + + "\x02\x02\u0959\u095A\x03\x02\x02\x02\u095A\u095B\x03\x02\x02\x02\u095B" + + "\u095D\x07\x11\x02\x02\u095C\u095E\x07\u0107\x02\x02\u095D\u095C\x03\x02" + + "\x02\x02\u095D\u095E\x03\x02\x02\x02\u095E\u0960\x03\x02\x02\x02\u095F" + + "\u0941\x03\x02\x02\x02\u095F\u0945\x03\x02\x02\x02\u095F\u0949\x03\x02" + + "\x02\x02\u095F\u094D\x03\x02\x02\x02\u095F\u0953\x03\x02\x02\x02\u0960" + + "\x97\x03\x02\x02\x02\u0961\u0962\x05\xCAf\x02\u0962\u0963\x07\xFB\x02" + + "\x02\u0963\u0964\x05`1\x02\u0964\x99\x03\x02\x02\x02\u0965\u0966\x07Y" + + "\x02\x02\u0966\u096A\t\x18\x02\x02\u0967\u0968\x07\xE3\x02\x02\u0968\u096A" + + "\t\x19\x02\x02\u0969\u0965\x03\x02\x02\x02\u0969\u0967\x03\x02\x02\x02" + + "\u096A\x9B\x03\x02\x02\x02\u096B\u096C\x07u\x02\x02\u096C\u096D\x07{\x02" + + "\x02\u096D\u0971\x05\x9EP\x02\u096E\u096F\x07\xB3\x02\x02\u096F\u0971" + + "\t\x1A\x02\x02\u0970\u096B\x03\x02\x02\x02\u0970\u096E\x03\x02\x02\x02" + + "\u0971\x9D\x03\x02\x02\x02\u0972\u0973\x07\xB3\x02\x02\u0973\u097A\x07" + + "\xE6\x02\x02\u0974\u0975\x07\xB3\x02\x02\u0975\u097A\x07,\x02\x02\u0976" + + "\u0977\x07\xB7\x02\x02\u0977\u097A\x07\xB3\x02\x02\u0978\u097A\x07\xCB" + + "\x02\x02\u0979\u0972\x03\x02\x02\x02\u0979\u0974\x03\x02\x02\x02\u0979" + + "\u0976\x03\x02\x02\x02\u0979\u0978\x03\x02\x02\x02\u097A\x9F\x03\x02\x02" + + "\x02\u097B\u0981\x05`1\x02\u097C\u097D\x05\xCAf\x02\u097D\u097E\x07\x12" + + "\x02\x02\u097E\u097F\x05`1\x02\u097F\u0981\x03\x02\x02\x02\u0980\u097B" + + "\x03\x02\x02\x02\u0980\u097C\x03\x02\x02\x02\u0981\xA1\x03\x02\x02\x02" + + "\u0982\u0983\x05\xCAf\x02\u0983\u0984\x07\x06\x02\x02\u0984\u0985\x05" + + "\xCAf\x02\u0985\u0988\x03\x02\x02\x02\u0986\u0988\x05\xCAf\x02\u0987\u0982" + + "\x03\x02\x02\x02\u0987\u0986\x03\x02\x02\x02\u0988\xA3\x03\x02\x02\x02" + + "\u0989\u098E\x05\xA2R\x02\u098A\u098B\x07\x05\x02\x02\u098B\u098D\x05" + + "\xA2R\x02\u098C\u098A\x03\x02\x02\x02\u098D\u0990\x03\x02\x02\x02\u098E" + + "\u098C\x03\x02\x02\x02\u098E\u098F\x03\x02\x02\x02\u098F\xA5\x03\x02\x02" + + "\x02\u0990\u098E\x03\x02\x02\x02\u0991\u0992\t\x1B\x02\x02\u0992\xA7\x03" + + "\x02\x02\x02\u0993\u0996\x05\xAAV\x02\u0994\u0996\x05\xAEX\x02\u0995\u0993" + + "\x03\x02\x02\x02\u0995\u0994\x03\x02\x02\x02\u0996\xA9\x03\x02\x02\x02" + + "\u0997\u0998\x05\xB2Z\x02\u0998\xAB\x03\x02\x02\x02\u0999\u099A\x05\xB2" + + "Z\x02\u099A\xAD\x03\x02\x02\x02\u099B\u099C\x05\xB4[\x02\u099C\xAF\x03" + + "\x02\x02\x02\u099D\u099E\x05\xB4[\x02\u099E\xB1\x03\x02\x02\x02\u099F" + + "\u09AB\x05\xCAf\x02\u09A0\u09A1\x05\xCAf\x02\u09A1\u09A2\x07\x06\x02\x02" + + "\u09A2\u09A3\x05\xCAf\x02\u09A3\u09AB\x03\x02\x02\x02\u09A4\u09A5\x05" + + "\xCAf\x02\u09A5\u09A6\x07\x06\x02\x02\u09A6\u09A7\x05\xCAf\x02\u09A7\u09A8" + + "\x07\x06\x02\x02\u09A8\u09A9\x05\xCAf\x02\u09A9\u09AB\x03\x02\x02\x02" + + "\u09AA\u099F\x03\x02\x02\x02\u09AA\u09A0\x03\x02\x02\x02\u09AA\u09A4\x03" + + "\x02\x02\x02\u09AB\xB3\x03\x02\x02\x02\u09AC\u09B8\x05\xCAf\x02\u09AD" + + "\u09AE\x05\xCAf\x02\u09AE\u09AF\x07\x06\x02\x02\u09AF\u09B0\x05\xCAf\x02" + + "\u09B0\u09B8\x03\x02\x02\x02\u09B1\u09B2\x05\xCAf\x02\u09B2\u09B3\x07" + + "\x06\x02\x02\u09B3\u09B4\x05\xCAf\x02\u09B4\u09B5\x07\x06\x02\x02\u09B5" + + "\u09B6\x05\xCAf\x02\u09B6\u09B8\x03\x02\x02\x02\u09B7\u09AC\x03\x02\x02" + + "\x02\u09B7\u09AD\x03\x02\x02\x02\u09B7\u09B1\x03\x02\x02\x02\u09B8\xB5" + + "\x03\x02\x02\x02\u09B9\u09BA\x05\xBA^\x02\u09BA\xB7\x03\x02\x02\x02\u09BB" + + "\u09BC\x05\xBA^\x02\u09BC\xB9\x03\x02\x02\x02\u09BD\u09C3\x05\xCAf\x02" + + "\u09BE\u09BF\x05\xCAf\x02\u09BF\u09C0\x07\x06\x02\x02\u09C0\u09C1\x05" + + "\xCAf\x02\u09C1\u09C3\x03\x02\x02\x02\u09C2\u09BD\x03\x02\x02\x02\u09C2" + + "\u09BE\x03\x02\x02\x02\u09C3\xBB\x03\x02\x02\x02\u09C4\u09C5\x05\xCAf" + + "\x02\u09C5\xBD\x03\x02\x02\x02\u09C6\u09C7\x05\xCAf\x02\u09C7\xBF\x03" + + "\x02\x02\x02\u09C8\u09C9\x05\xC2b\x02\u09C9\xC1\x03\x02\x02\x02\u09CA" + + "\u09CF\x05\xCAf\x02\u09CB\u09CC\x07\x06\x02\x02\u09CC\u09CE\x05\xCAf\x02" + + "\u09CD\u09CB\x03\x02\x02\x02\u09CE\u09D1\x03\x02\x02\x02\u09CF\u09CD\x03" + + "\x02\x02\x02\u09CF\u09D0\x03\x02\x02\x02\u09D0\xC3\x03\x02\x02\x02\u09D1" + + "\u09CF\x03\x02\x02\x02\u09D2\u09D6\x05\xC6d\x02\u09D3\u09D6\x079\x02\x02" + + "\u09D4\u09D6\x075\x02\x02\u09D5\u09D2\x03\x02\x02\x02\u09D5\u09D3\x03" + + "\x02\x02\x02\u09D5\u09D4\x03\x02\x02\x02\u09D6\xC5\x03\x02\x02\x02\u09D7" + + "\u09DD\x05\xCAf\x02\u09D8\u09D9\x07\xEC\x02\x02\u09D9\u09DD\x05\xCAf\x02" + + "\u09DA\u09DB\x07\xBE\x02\x02\u09DB\u09DD\x05\xCAf\x02\u09DC\u09D7\x03" + + "\x02\x02\x02\u09DC\u09D8\x03\x02\x02\x02\u09DC\u09DA\x03\x02\x02\x02\u09DD" + + "\xC7\x03\x02\x02\x02\u09DE\u09E3\x05\xCAf\x02\u09DF\u09E0\x07\x05\x02" + + "\x02\u09E0\u09E2\x05\xCAf\x02\u09E1\u09DF\x03\x02\x02\x02\u09E2\u09E5" + + "\x03\x02\x02\x02\u09E3\u09E1\x03\x02\x02\x02\u09E3\u09E4\x03\x02\x02\x02" + + "\u09E4\xC9\x03\x02\x02\x02\u09E5\u09E3\x03\x02\x02\x02\u09E6\u09EC\x07" + + "\u010E\x02\x02\u09E7\u09EC\x07\u0110\x02\x02\u09E8\u09EC\x05\xCEh\x02" + + "\u09E9\u09EC\x07\u0111\x02\x02\u09EA\u09EC\x07\u010F\x02\x02\u09EB\u09E6" + + "\x03\x02\x02\x02\u09EB\u09E7\x03\x02\x02\x02\u09EB\u09E8\x03\x02\x02\x02" + + "\u09EB\u09E9\x03\x02\x02\x02\u09EB\u09EA\x03\x02\x02\x02\u09EC\xCB\x03" + + "\x02\x02\x02\u09ED\u09EF\x07\u0102\x02\x02\u09EE\u09ED\x03\x02\x02\x02" + + "\u09EE\u09EF\x03\x02\x02\x02\u09EF\u09F0\x03\x02\x02\x02\u09F0\u09FA\x07" + + "\u010C\x02\x02\u09F1\u09F3\x07\u0102\x02\x02\u09F2\u09F1\x03\x02\x02\x02" + + "\u09F2\u09F3\x03\x02\x02\x02\u09F3\u09F4\x03\x02\x02\x02\u09F4\u09FA\x07" + + "\u010D\x02\x02\u09F5\u09F7\x07\u0102\x02\x02\u09F6\u09F5\x03\x02\x02\x02" + + "\u09F6\u09F7\x03\x02\x02\x02\u09F7\u09F8\x03\x02\x02\x02\u09F8\u09FA\x07" + + "\u010B\x02\x02\u09F9\u09EE\x03\x02\x02\x02\u09F9\u09F2\x03\x02\x02\x02" + + "\u09F9\u09F6\x03\x02\x02\x02\u09FA\xCD\x03\x02\x02\x02\u09FB\u09FC\t\x1C" + + "\x02\x02\u09FC\xCF\x03\x02\x02\x02\u0150\xD3\xDD\xE1\xE5\xE9\xED\xF1\xFB" + + "\u0100\u0104\u010A\u010E\u0123\u0127\u012B\u012F\u0137\u013B\u013E\u0145" + + "\u014E\u0154\u0158\u015E\u0165\u016E\u0177\u0185\u018E\u0194\u019B\u01A5" + + "\u01AC\u01B4\u01BC\u01D9\u01DC\u01DF\u01E3\u01E9\u01EE\u01F5\u01FA\u01FE" + + "\u0206\u020C\u0210\u021E\u0226\u0239\u0252\u0255\u025F\u0263\u0270\u0276" + + "\u027B\u027F\u0285\u028E\u0294\u0298\u029F\u02A3\u02AB\u02B0\u02B4\u02B8" + + "\u02BB\u02C2\u02CA\u02CF\u02D3\u02D7\u02DA\u02E3\u02EA\u02EF\u02F3\u02F7" + + "\u02FA\u0302\u0305\u0309\u030C\u0314\u0319\u0331\u0337\u0339\u033F\u0345" + + "\u0347\u034F\u0351\u0357\u035D\u035F\u036E\u0373\u037A\u0386\u0388\u0390" + + "\u0392\u03A4\u03A7\u03AB\u03AF\u03C1\u03C4\u03D4\u03DE\u03E3\u03E9\u03EC" + + "\u03F5\u0401\u0404\u040A\u0411\u0416\u041C\u0420\u0424\u042A\u0435\u043E" + + "\u0448\u044B\u0450\u0452\u0459\u045F\u0461\u0465\u046F\u0475\u0478\u047A" + + "\u0486\u048D\u0491\u0495\u0499\u04A0\u04A9\u04AC\u04B0\u04B5\u04B9\u04C1" + + "\u04C4\u04C7\u04CE\u04D9\u04DC\u04E6\u04E9\u04F4\u04F9\u0501\u0504\u0508" + + "\u0511\u051A\u051D\u0526\u0529\u052C\u0530\u053B\u053E\u0545\u0548\u055B" + + "\u055F\u0563\u0567\u056B\u056F\u0571\u057C\u0581\u058A\u0598\u059B\u05A4" + + "\u05A7\u05AF\u05B2\u05B5\u05BA\u05BD\u05C9\u05CC\u05D4\u05D9\u05DD\u05DF" + + "\u05E1\u05F0\u05F2\u05FD\u0612\u061C\u0627\u062B\u062D\u0635\u0646\u064C" + + "\u0657\u065E\u0662\u066A\u066C\u0679\u0681\u068A\u0690\u0698\u069E\u06A2" + + "\u06A7\u06AC\u06B2\u06C0\u06C2\u06E0\u06EB\u06F5\u06F8\u06FB\u0700\u0707" + + "\u070A\u0713\u0716\u071A\u071D\u0720\u072F\u0732\u0745\u0749\u0751\u0755" + + "\u076E\u0771\u077A\u0780\u0786\u078C\u0799\u07A2\u07B8\u07BB\u07BE\u07C8" + + "\u07CA\u07D3\u07D9\u07DB\u07E3\u07ED\u07F3\u0801\u080A\u0811\u0816\u081D" + + "\u0827\u082C\u0833\u084D\u0852\u0854\u085B\u085F\u0866\u086A\u087B\u088A" + + "\u0891\u089A\u08A4\u08A9\u08B2\u08B7\u08BF\u08C7\u08CA\u08D0\u08D3\u08DA" + + "\u08E2\u08E5\u08ED\u08F0\u090A\u0915\u091A\u0921\u0923\u0930\u093F\u0943" + + "\u0947\u094B\u0951\u0955\u0959\u095D\u095F\u0969\u0970\u0979\u0980\u0987" + + "\u098E\u0995\u09AA\u09B7\u09C2\u09CF\u09D5\u09DC\u09E3\u09EB\u09EE\u09F2" + + "\u09F6\u09F9"; public static readonly _serializedATN: string = Utils.join( [ TrinoSqlParser._serializedATNSegment0, @@ -13120,17 +13643,9 @@ export class StatementDefaultContext extends StatementContext { } } export class UseContext extends StatementContext { - public _schema!: IdentifierContext; - public _catalog!: IdentifierContext; - public USE(): TerminalNode { return this.getToken(TrinoSqlParser.USE, 0); } - 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 KW_USE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_USE, 0); } + public schemaName(): SchemaNameContext { + return this.getRuleContext(0, SchemaNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -13158,19 +13673,19 @@ export class UseContext extends StatementContext { } } export class CreateSchemaContext extends StatementContext { - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.SCHEMA, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } + public schemaNameCreate(): SchemaNameCreateContext { + return this.getRuleContext(0, SchemaNameCreateContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } - public AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AUTHORIZATION, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } + public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } public principal(): PrincipalContext | undefined { return this.tryGetRuleContext(0, PrincipalContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } public properties(): PropertiesContext | undefined { return this.tryGetRuleContext(0, PropertiesContext); } @@ -13200,15 +13715,15 @@ export class CreateSchemaContext extends StatementContext { } } export class DropSchemaContext extends StatementContext { - public DROP(): TerminalNode { return this.getToken(TrinoSqlParser.DROP, 0); } - public SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.SCHEMA, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_DROP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DROP, 0); } + public KW_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } + public schemaName(): SchemaNameContext { + return this.getRuleContext(0, SchemaNameContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } - public CASCADE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CASCADE, 0); } - public RESTRICT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RESTRICT, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } + public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CASCADE, 0); } + public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RESTRICT, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13235,15 +13750,15 @@ export class DropSchemaContext extends StatementContext { } } export class RenameSchemaContext extends StatementContext { - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.SCHEMA, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } + public schemaName(): SchemaNameContext { + return this.getRuleContext(0, SchemaNameContext); } - public RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.RENAME, 0); } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext); + public KW_RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } + public schemaNameCreate(): SchemaNameCreateContext { + return this.getRuleContext(0, SchemaNameCreateContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -13271,13 +13786,13 @@ export class RenameSchemaContext extends StatementContext { } } export class SetSchemaAuthorizationContext extends StatementContext { - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.SCHEMA, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } + public schemaName(): SchemaNameContext { + return this.getRuleContext(0, SchemaNameContext); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public AUTHORIZATION(): TerminalNode { return this.getToken(TrinoSqlParser.AUTHORIZATION, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_AUTHORIZATION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } public principal(): PrincipalContext { return this.getRuleContext(0, PrincipalContext); } @@ -13307,39 +13822,39 @@ export class SetSchemaAuthorizationContext extends StatementContext { } } export class CreateTableAsSelectContext extends StatementContext { - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext); } - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public query(): QueryContext | undefined { return this.tryGetRuleContext(0, QueryContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } public columnAliases(): ColumnAliasesContext | undefined { return this.tryGetRuleContext(0, ColumnAliasesContext); } - public COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMENT, 0); } + public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMENT, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public WITH(): TerminalNode[]; - public WITH(i: number): TerminalNode; - public WITH(i?: number): TerminalNode | TerminalNode[] { + public KW_WITH(): TerminalNode[]; + public KW_WITH(i: number): TerminalNode; + public KW_WITH(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.WITH); + return this.getTokens(TrinoSqlParser.KW_WITH); } else { - return this.getToken(TrinoSqlParser.WITH, i); + return this.getToken(TrinoSqlParser.KW_WITH, i); } } public properties(): PropertiesContext | undefined { return this.tryGetRuleContext(0, PropertiesContext); } - public DATA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DATA, 0); } - public NO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NO, 0); } + public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DATA, 0); } + public KW_NO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NO, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13366,10 +13881,10 @@ export class CreateTableAsSelectContext extends StatementContext { } } export class CreateTableContext extends StatementContext { - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext); } public tableElement(): TableElementContext[]; public tableElement(i: number): TableElementContext; @@ -13380,14 +13895,14 @@ export class CreateTableContext extends StatementContext { return this.getRuleContext(i, TableElementContext); } } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } - public COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMENT, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } + public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMENT, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } public properties(): PropertiesContext | undefined { return this.tryGetRuleContext(0, PropertiesContext); } @@ -13417,13 +13932,13 @@ export class CreateTableContext extends StatementContext { } } export class DropTableContext extends StatementContext { - public DROP(): TerminalNode { return this.getToken(TrinoSqlParser.DROP, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_DROP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DROP, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13450,10 +13965,10 @@ export class DropTableContext extends StatementContext { } } export class InsertIntoContext extends StatementContext { - public INSERT(): TerminalNode { return this.getToken(TrinoSqlParser.INSERT, 0); } - public INTO(): TerminalNode { return this.getToken(TrinoSqlParser.INTO, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_INSERT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INSERT, 0); } + public KW_INTO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INTO, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); @@ -13487,12 +14002,12 @@ export class InsertIntoContext extends StatementContext { } } export class DeleteContext extends StatementContext { - public DELETE(): TerminalNode { return this.getToken(TrinoSqlParser.DELETE, 0); } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_DELETE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DELETE, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WHERE, 0); } + public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WHERE, 0); } public booleanExpression(): BooleanExpressionContext | undefined { return this.tryGetRuleContext(0, BooleanExpressionContext); } @@ -13522,10 +14037,10 @@ export class DeleteContext extends StatementContext { } } export class TruncateTableContext extends StatementContext { - public TRUNCATE(): TerminalNode { return this.getToken(TrinoSqlParser.TRUNCATE, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_TRUNCATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -13553,23 +14068,20 @@ export class TruncateTableContext extends StatementContext { } } export class RenameTableContext extends StatementContext { - public _from!: QualifiedNameContext; - public _to!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.RENAME, 0); } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } - public qualifiedName(): QualifiedNameContext[]; - public qualifiedName(i: number): QualifiedNameContext; - public qualifiedName(i?: number): QualifiedNameContext | QualifiedNameContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNameContext); - } else { - return this.getRuleContext(i, QualifiedNameContext); - } + public _from!: TableNameContext; + public _to!: TableNameCreateContext; + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public KW_RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext); + } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13596,17 +14108,17 @@ export class RenameTableContext extends StatementContext { } } export class CommentTableContext extends StatementContext { - public COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.COMMENT, 0); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COMMENT, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public IS(): TerminalNode { return this.getToken(TrinoSqlParser.IS, 0); } + public KW_IS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IS, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public NULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NULL, 0); } + public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NULL, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13633,17 +14145,17 @@ export class CommentTableContext extends StatementContext { } } export class CommentColumnContext extends StatementContext { - public COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.COMMENT, 0); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.COLUMN, 0); } + public KW_COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COMMENT, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COLUMN, 0); } public qualifiedName(): QualifiedNameContext { return this.getRuleContext(0, QualifiedNameContext); } - public IS(): TerminalNode { return this.getToken(TrinoSqlParser.IS, 0); } + public KW_IS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IS, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public NULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NULL, 0); } + public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NULL, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13670,17 +14182,16 @@ export class CommentColumnContext extends StatementContext { } } export class RenameColumnContext extends StatementContext { - public _tableName!: QualifiedNameContext; public _from!: IdentifierContext; public _to!: IdentifierContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.RENAME, 0); } - public COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.COLUMN, 0); } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } + public KW_RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COLUMN, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } public identifier(): IdentifierContext[]; public identifier(i: number): IdentifierContext; public identifier(i?: number): IdentifierContext | IdentifierContext[] { @@ -13690,22 +14201,22 @@ export class RenameColumnContext extends StatementContext { return this.getRuleContext(i, IdentifierContext); } } - public IF(): TerminalNode[]; - public IF(i: number): TerminalNode; - public IF(i?: number): TerminalNode | TerminalNode[] { + public KW_IF(): TerminalNode[]; + public KW_IF(i: number): TerminalNode; + public KW_IF(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.IF); + return this.getTokens(TrinoSqlParser.KW_IF); } else { - return this.getToken(TrinoSqlParser.IF, i); + return this.getToken(TrinoSqlParser.KW_IF, i); } } - public EXISTS(): TerminalNode[]; - public EXISTS(i: number): TerminalNode; - public EXISTS(i?: number): TerminalNode | TerminalNode[] { + public KW_EXISTS(): TerminalNode[]; + public KW_EXISTS(i: number): TerminalNode; + public KW_EXISTS(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.EXISTS); + return this.getTokens(TrinoSqlParser.KW_EXISTS); } else { - return this.getToken(TrinoSqlParser.EXISTS, i); + return this.getToken(TrinoSqlParser.KW_EXISTS, i); } } constructor(ctx: StatementContext) { @@ -13734,37 +14245,33 @@ export class RenameColumnContext extends StatementContext { } } export class DropColumnContext extends StatementContext { - public _tableName!: QualifiedNameContext; public _column!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public DROP(): TerminalNode { return this.getToken(TrinoSqlParser.DROP, 0); } - public COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.COLUMN, 0); } - public qualifiedName(): QualifiedNameContext[]; - public qualifiedName(i: number): QualifiedNameContext; - public qualifiedName(i?: number): QualifiedNameContext | QualifiedNameContext[] { + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); + } + public KW_DROP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DROP, 0); } + public KW_COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COLUMN, 0); } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext); + } + public KW_IF(): TerminalNode[]; + public KW_IF(i: number): TerminalNode; + public KW_IF(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getRuleContexts(QualifiedNameContext); + return this.getTokens(TrinoSqlParser.KW_IF); } else { - return this.getRuleContext(i, QualifiedNameContext); + return this.getToken(TrinoSqlParser.KW_IF, i); } } - public IF(): TerminalNode[]; - public IF(i: number): TerminalNode; - public IF(i?: number): TerminalNode | TerminalNode[] { + public KW_EXISTS(): TerminalNode[]; + public KW_EXISTS(i: number): TerminalNode; + public KW_EXISTS(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.IF); + return this.getTokens(TrinoSqlParser.KW_EXISTS); } else { - return this.getToken(TrinoSqlParser.IF, i); - } - } - public EXISTS(): TerminalNode[]; - public EXISTS(i: number): TerminalNode; - public EXISTS(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.EXISTS); - } else { - return this.getToken(TrinoSqlParser.EXISTS, i); + return this.getToken(TrinoSqlParser.KW_EXISTS, i); } } constructor(ctx: StatementContext) { @@ -13793,37 +14300,36 @@ export class DropColumnContext extends StatementContext { } } export class AddColumnContext extends StatementContext { - public _tableName!: QualifiedNameContext; public _column!: ColumnDefinitionContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public ADD(): TerminalNode { return this.getToken(TrinoSqlParser.ADD, 0); } - public COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.COLUMN, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } + public KW_ADD(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ADD, 0); } + public KW_COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COLUMN, 0); } public columnDefinition(): ColumnDefinitionContext { return this.getRuleContext(0, ColumnDefinitionContext); } - public IF(): TerminalNode[]; - public IF(i: number): TerminalNode; - public IF(i?: number): TerminalNode | TerminalNode[] { + public KW_IF(): TerminalNode[]; + public KW_IF(i: number): TerminalNode; + public KW_IF(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.IF); + return this.getTokens(TrinoSqlParser.KW_IF); } else { - return this.getToken(TrinoSqlParser.IF, i); + return this.getToken(TrinoSqlParser.KW_IF, i); } } - public EXISTS(): TerminalNode[]; - public EXISTS(i: number): TerminalNode; - public EXISTS(i?: number): TerminalNode | TerminalNode[] { + public KW_EXISTS(): TerminalNode[]; + public KW_EXISTS(i: number): TerminalNode; + public KW_EXISTS(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.EXISTS); + return this.getTokens(TrinoSqlParser.KW_EXISTS); } else { - return this.getToken(TrinoSqlParser.EXISTS, i); + return this.getToken(TrinoSqlParser.KW_EXISTS, i); } } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13850,17 +14356,16 @@ export class AddColumnContext extends StatementContext { } } export class SetTableAuthorizationContext extends StatementContext { - public _tableName!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public AUTHORIZATION(): TerminalNode { return this.getToken(TrinoSqlParser.AUTHORIZATION, 0); } + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); + } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_AUTHORIZATION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } public principal(): PrincipalContext { return this.getRuleContext(0, PrincipalContext); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13887,17 +14392,16 @@ export class SetTableAuthorizationContext extends StatementContext { } } export class SetTablePropertiesContext extends StatementContext { - public _tableName!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public PROPERTIES(): TerminalNode { return this.getToken(TrinoSqlParser.PROPERTIES, 0); } + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); + } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_PROPERTIES(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); } public propertyAssignments(): PropertyAssignmentsContext { return this.getRuleContext(0, PropertyAssignmentsContext); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -13924,19 +14428,18 @@ export class SetTablePropertiesContext extends StatementContext { } } export class TableExecuteContext extends StatementContext { - public _tableName!: QualifiedNameContext; public _procedureName!: IdentifierContext; public _where!: BooleanExpressionContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public EXECUTE(): TerminalNode { return this.getToken(TrinoSqlParser.EXECUTE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } + public KW_EXECUTE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_EXECUTE, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } - public WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WHERE, 0); } + public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WHERE, 0); } public booleanExpression(): BooleanExpressionContext | undefined { return this.tryGetRuleContext(0, BooleanExpressionContext); } @@ -13975,11 +14478,11 @@ export class TableExecuteContext extends StatementContext { } } export class AnalyzeContext extends StatementContext { - public ANALYZE(): TerminalNode { return this.getToken(TrinoSqlParser.ANALYZE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ANALYZE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ANALYZE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } public properties(): PropertiesContext | undefined { return this.tryGetRuleContext(0, PropertiesContext); } @@ -14009,26 +14512,26 @@ export class AnalyzeContext extends StatementContext { } } export class CreateMaterializedViewContext extends StatementContext { - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.MATERIALIZED, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext); } - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } - public OR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OR, 0); } - public REPLACE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.REPLACE, 0); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } - public COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMENT, 0); } + public KW_OR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OR, 0); } + public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_REPLACE, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } + public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMENT, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } public properties(): PropertiesContext | undefined { return this.tryGetRuleContext(0, PropertiesContext); } @@ -14058,24 +14561,24 @@ export class CreateMaterializedViewContext extends StatementContext { } } export class CreateViewContext extends StatementContext { - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext); } - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } - public OR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OR, 0); } - public REPLACE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.REPLACE, 0); } - public COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMENT, 0); } + public KW_OR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OR, 0); } + public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_REPLACE, 0); } + public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMENT, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public SECURITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SECURITY, 0); } - public DEFINER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DEFINER, 0); } - public INVOKER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INVOKER, 0); } + public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SECURITY, 0); } + public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DEFINER, 0); } + public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INVOKER, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14102,11 +14605,11 @@ export class CreateViewContext extends StatementContext { } } export class RefreshMaterializedViewContext extends StatementContext { - public REFRESH(): TerminalNode { return this.getToken(TrinoSqlParser.REFRESH, 0); } - public MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.MATERIALIZED, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_REFRESH(): TerminalNode { return this.getToken(TrinoSqlParser.KW_REFRESH, 0); } + public KW_MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14134,14 +14637,14 @@ export class RefreshMaterializedViewContext extends StatementContext { } } export class DropMaterializedViewContext extends StatementContext { - public DROP(): TerminalNode { return this.getToken(TrinoSqlParser.DROP, 0); } - public MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.MATERIALIZED, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_DROP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DROP, 0); } + public KW_MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14168,24 +14671,21 @@ export class DropMaterializedViewContext extends StatementContext { } } export class RenameMaterializedViewContext extends StatementContext { - public _from!: QualifiedNameContext; - public _to!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.MATERIALIZED, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.RENAME, 0); } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } - public qualifiedName(): QualifiedNameContext[]; - public qualifiedName(i: number): QualifiedNameContext; - public qualifiedName(i?: number): QualifiedNameContext | QualifiedNameContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNameContext); - } else { - return this.getRuleContext(i, QualifiedNameContext); - } + public _from!: ViewNameContext; + public _to!: ViewNameCreateContext; + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public KW_RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext); + } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14212,14 +14712,14 @@ export class RenameMaterializedViewContext extends StatementContext { } } export class SetMaterializedViewPropertiesContext extends StatementContext { - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.MATERIALIZED, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public PROPERTIES(): TerminalNode { return this.getToken(TrinoSqlParser.PROPERTIES, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_PROPERTIES(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); } public propertyAssignments(): PropertyAssignmentsContext { return this.getRuleContext(0, PropertyAssignmentsContext); } @@ -14249,13 +14749,13 @@ export class SetMaterializedViewPropertiesContext extends StatementContext { } } export class DropViewContext extends StatementContext { - public DROP(): TerminalNode { return this.getToken(TrinoSqlParser.DROP, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_DROP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DROP, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXISTS, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXISTS, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14282,20 +14782,17 @@ export class DropViewContext extends StatementContext { } } export class RenameViewContext extends StatementContext { - public _from!: QualifiedNameContext; - public _to!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.RENAME, 0); } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } - public qualifiedName(): QualifiedNameContext[]; - public qualifiedName(i: number): QualifiedNameContext; - public qualifiedName(i?: number): QualifiedNameContext | QualifiedNameContext[] { - if (i === undefined) { - return this.getRuleContexts(QualifiedNameContext); - } else { - return this.getRuleContext(i, QualifiedNameContext); - } + public _from!: ViewNameContext; + public _to!: ViewNameCreateContext; + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public KW_RENAME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14323,16 +14820,16 @@ export class RenameViewContext extends StatementContext { } } export class SetViewAuthorizationContext extends StatementContext { - public _from!: QualifiedNameContext; - public ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.ALTER, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public AUTHORIZATION(): TerminalNode { return this.getToken(TrinoSqlParser.AUTHORIZATION, 0); } + public _from!: ViewNameContext; + public KW_ALTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ALTER, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_AUTHORIZATION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } public principal(): PrincipalContext { return this.getRuleContext(0, PrincipalContext); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14360,9 +14857,9 @@ export class SetViewAuthorizationContext extends StatementContext { } } export class CallContext extends StatementContext { - public CALL(): TerminalNode { return this.getToken(TrinoSqlParser.CALL, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_CALL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CALL, 0); } + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext); } public callArgument(): CallArgumentContext[]; public callArgument(i: number): CallArgumentContext; @@ -14400,24 +14897,20 @@ export class CallContext extends StatementContext { } export class CreateRoleContext extends StatementContext { public _name!: IdentifierContext; - public _catalog!: IdentifierContext; - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.ROLE, 0); } - 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 KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLE, 0); } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } - public ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ADMIN, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } + public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ADMIN, 0); } public grantor(): GrantorContext | undefined { return this.tryGetRuleContext(0, GrantorContext); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } + public catalogName(): CatalogNameContext | undefined { + return this.tryGetRuleContext(0, CatalogNameContext); + } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14445,8 +14938,8 @@ export class CreateRoleContext extends StatementContext { } export class DropRoleContext extends StatementContext { public _name!: IdentifierContext; - public DROP(): TerminalNode { return this.getToken(TrinoSqlParser.DROP, 0); } - public ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.ROLE, 0); } + public KW_DROP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DROP, 0); } + public KW_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLE, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -14476,12 +14969,11 @@ export class DropRoleContext extends StatementContext { } } export class GrantRolesContext extends StatementContext { - public _catalog!: IdentifierContext; - public GRANT(): TerminalNode { return this.getToken(TrinoSqlParser.GRANT, 0); } + public KW_GRANT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_GRANT, 0); } public roles(): RolesContext { return this.getRuleContext(0, RolesContext); } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } public principal(): PrincipalContext[]; public principal(i: number): PrincipalContext; public principal(i?: number): PrincipalContext | PrincipalContext[] { @@ -14491,17 +14983,17 @@ export class GrantRolesContext extends StatementContext { return this.getRuleContext(i, PrincipalContext); } } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } - public ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ADMIN, 0); } - public OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OPTION, 0); } - public GRANTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRANTED, 0); } - public BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BY, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } + public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ADMIN, 0); } + public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OPTION, 0); } + public KW_GRANTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRANTED, 0); } + public KW_BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BY, 0); } public grantor(): GrantorContext | undefined { return this.tryGetRuleContext(0, GrantorContext); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } + public catalogName(): CatalogNameContext | undefined { + return this.tryGetRuleContext(0, CatalogNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14529,12 +15021,11 @@ export class GrantRolesContext extends StatementContext { } } export class RevokeRolesContext extends StatementContext { - public _catalog!: IdentifierContext; - public REVOKE(): TerminalNode { return this.getToken(TrinoSqlParser.REVOKE, 0); } + public KW_REVOKE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_REVOKE, 0); } public roles(): RolesContext { return this.getRuleContext(0, RolesContext); } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } public principal(): PrincipalContext[]; public principal(i: number): PrincipalContext; public principal(i?: number): PrincipalContext | PrincipalContext[] { @@ -14544,17 +15035,17 @@ export class RevokeRolesContext extends StatementContext { return this.getRuleContext(i, PrincipalContext); } } - public ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ADMIN, 0); } - public OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OPTION, 0); } - public FOR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FOR, 0); } - public GRANTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRANTED, 0); } - public BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BY, 0); } + public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ADMIN, 0); } + public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OPTION, 0); } + public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FOR, 0); } + public KW_GRANTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRANTED, 0); } + public KW_BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BY, 0); } public grantor(): GrantorContext | undefined { return this.tryGetRuleContext(0, GrantorContext); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } + public catalogName(): CatalogNameContext | undefined { + return this.tryGetRuleContext(0, CatalogNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14583,21 +15074,17 @@ export class RevokeRolesContext extends StatementContext { } export class SetRoleContext extends StatementContext { public _role!: IdentifierContext; - public _catalog!: IdentifierContext; - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.ROLE, 0); } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public NONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NONE, 0); } - 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 KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLE, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NONE, 0); } + public identifier(): IdentifierContext | undefined { + return this.tryGetRuleContext(0, IdentifierContext); + } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } + public catalogName(): CatalogNameContext | undefined { + return this.tryGetRuleContext(0, CatalogNameContext); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14625,20 +15112,17 @@ export class SetRoleContext extends StatementContext { } export class GrantContext extends StatementContext { public _grantee!: PrincipalContext; - public GRANT(): TerminalNode[]; - public GRANT(i: number): TerminalNode; - public GRANT(i?: number): TerminalNode | TerminalNode[] { + public KW_GRANT(): TerminalNode[]; + public KW_GRANT(i: number): TerminalNode; + public KW_GRANT(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.GRANT); + return this.getTokens(TrinoSqlParser.KW_GRANT); } else { - return this.getToken(TrinoSqlParser.GRANT, i); + return this.getToken(TrinoSqlParser.KW_GRANT, i); } } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } public principal(): PrincipalContext { return this.getRuleContext(0, PrincipalContext); } @@ -14651,12 +15135,18 @@ export class GrantContext extends StatementContext { return this.getRuleContext(i, PrivilegeContext); } } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRIVILEGES, 0); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } - public OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OPTION, 0); } - public SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SCHEMA, 0); } - public TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLE, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRIVILEGES, 0); } + public schemaName(): SchemaNameContext | undefined { + return this.tryGetRuleContext(0, SchemaNameContext); + } + public tableName(): TableNameContext | undefined { + return this.tryGetRuleContext(0, TableNameContext); + } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } + public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OPTION, 0); } + public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SCHEMA, 0); } + public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14684,12 +15174,9 @@ export class GrantContext extends StatementContext { } export class DenyContext extends StatementContext { public _grantee!: PrincipalContext; - public DENY(): TerminalNode { return this.getToken(TrinoSqlParser.DENY, 0); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } - public TO(): TerminalNode { return this.getToken(TrinoSqlParser.TO, 0); } + public KW_DENY(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DENY, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_TO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TO, 0); } public principal(): PrincipalContext { return this.getRuleContext(0, PrincipalContext); } @@ -14702,10 +15189,16 @@ export class DenyContext extends StatementContext { return this.getRuleContext(i, PrivilegeContext); } } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRIVILEGES, 0); } - public SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SCHEMA, 0); } - public TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLE, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRIVILEGES, 0); } + public schemaName(): SchemaNameContext | undefined { + return this.tryGetRuleContext(0, SchemaNameContext); + } + public tableName(): TableNameContext | undefined { + return this.tryGetRuleContext(0, TableNameContext); + } + public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SCHEMA, 0); } + public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14733,12 +15226,9 @@ export class DenyContext extends StatementContext { } export class RevokeContext extends StatementContext { public _grantee!: PrincipalContext; - public REVOKE(): TerminalNode { return this.getToken(TrinoSqlParser.REVOKE, 0); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); - } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } + public KW_REVOKE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_REVOKE, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } public principal(): PrincipalContext { return this.getRuleContext(0, PrincipalContext); } @@ -14751,13 +15241,19 @@ export class RevokeContext extends StatementContext { return this.getRuleContext(i, PrivilegeContext); } } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRIVILEGES, 0); } - public GRANT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRANT, 0); } - public OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OPTION, 0); } - public FOR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FOR, 0); } - public SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SCHEMA, 0); } - public TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLE, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRIVILEGES, 0); } + public KW_GRANT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRANT, 0); } + public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OPTION, 0); } + public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FOR, 0); } + public schemaName(): SchemaNameContext | undefined { + return this.tryGetRuleContext(0, SchemaNameContext); + } + public tableName(): TableNameContext | undefined { + return this.tryGetRuleContext(0, TableNameContext); + } + public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SCHEMA, 0); } + public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14784,13 +15280,13 @@ export class RevokeContext extends StatementContext { } } export class ShowGrantsContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public GRANTS(): TerminalNode { return this.getToken(TrinoSqlParser.GRANTS, 0); } - public ON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ON, 0); } - public qualifiedName(): QualifiedNameContext | undefined { - return this.tryGetRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_GRANTS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_GRANTS, 0); } + public KW_ON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ON, 0); } + public tableName(): TableNameContext | undefined { + return this.tryGetRuleContext(0, TableNameContext); } - public TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLE, 0); } + public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -14817,12 +15313,12 @@ export class ShowGrantsContext extends StatementContext { } } export class ExplainContext extends StatementContext { - public EXPLAIN(): TerminalNode { return this.getToken(TrinoSqlParser.EXPLAIN, 0); } + public KW_EXPLAIN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0); } public statement(): StatementContext { return this.getRuleContext(0, StatementContext); } - public ANALYZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ANALYZE, 0); } - public VERBOSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.VERBOSE, 0); } + public KW_ANALYZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ANALYZE, 0); } + public KW_VERBOSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_VERBOSE, 0); } public explainOption(): ExplainOptionContext[]; public explainOption(i: number): ExplainOptionContext; public explainOption(i?: number): ExplainOptionContext | ExplainOptionContext[] { @@ -14858,11 +15354,11 @@ export class ExplainContext extends StatementContext { } } export class ShowCreateTableContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14890,11 +15386,11 @@ export class ShowCreateTableContext extends StatementContext { } } export class ShowCreateSchemaContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.SCHEMA, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } + public schemaName(): SchemaNameContext { + return this.getRuleContext(0, SchemaNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14922,11 +15418,11 @@ export class ShowCreateSchemaContext extends StatementContext { } } export class ShowCreateViewContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14954,12 +15450,12 @@ export class ShowCreateViewContext extends StatementContext { } } export class ShowCreateMaterializedViewContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.CREATE, 0); } - public MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.MATERIALIZED, 0); } - public VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.VIEW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_CREATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CREATE, 0); } + public KW_MATERIALIZED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_VIEW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public viewName(): ViewNameContext { + return this.getRuleContext(0, ViewNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -14989,14 +15485,14 @@ export class ShowCreateMaterializedViewContext extends StatementContext { export class ShowTablesContext extends StatementContext { public _pattern!: StringContext; public _escape!: StringContext; - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public TABLES(): TerminalNode { return this.getToken(TrinoSqlParser.TABLES, 0); } - public qualifiedName(): QualifiedNameContext | undefined { - return this.tryGetRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_TABLES(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLES, 0); } + public schemaName(): SchemaNameContext | undefined { + return this.tryGetRuleContext(0, SchemaNameContext); } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIKE, 0); } - public FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FROM, 0); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } + public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIKE, 0); } + public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FROM, 0); } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } public string(): StringContext[]; public string(i: number): StringContext; public string(i?: number): StringContext | StringContext[] { @@ -15006,7 +15502,7 @@ export class ShowTablesContext extends StatementContext { return this.getRuleContext(i, StringContext); } } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15035,14 +15531,14 @@ export class ShowTablesContext extends StatementContext { export class ShowSchemasContext extends StatementContext { public _pattern!: StringContext; public _escape!: StringContext; - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public SCHEMAS(): TerminalNode { return this.getToken(TrinoSqlParser.SCHEMAS, 0); } - public identifier(): IdentifierContext | undefined { - return this.tryGetRuleContext(0, IdentifierContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_SCHEMAS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SCHEMAS, 0); } + public catalogName(): CatalogNameContext | undefined { + return this.tryGetRuleContext(0, CatalogNameContext); } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIKE, 0); } - public FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FROM, 0); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } + public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIKE, 0); } + public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FROM, 0); } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } public string(): StringContext[]; public string(i: number): StringContext; public string(i?: number): StringContext | StringContext[] { @@ -15052,7 +15548,7 @@ export class ShowSchemasContext extends StatementContext { return this.getRuleContext(i, StringContext); } } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15081,9 +15577,9 @@ export class ShowSchemasContext extends StatementContext { export class ShowCatalogsContext extends StatementContext { public _pattern!: StringContext; public _escape!: StringContext; - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public CATALOGS(): TerminalNode { return this.getToken(TrinoSqlParser.CATALOGS, 0); } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIKE, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_CATALOGS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CATALOGS, 0); } + public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIKE, 0); } public string(): StringContext[]; public string(i: number): StringContext; public string(i?: number): StringContext | StringContext[] { @@ -15093,7 +15589,7 @@ export class ShowCatalogsContext extends StatementContext { return this.getRuleContext(i, StringContext); } } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15122,14 +15618,14 @@ export class ShowCatalogsContext extends StatementContext { export class ShowColumnsContext extends StatementContext { public _pattern!: StringContext; public _escape!: StringContext; - public SHOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SHOW, 0); } - public COLUMNS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COLUMNS, 0); } - public FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FROM, 0); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } - public qualifiedName(): QualifiedNameContext | undefined { - return this.tryGetRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COLUMNS, 0); } + public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FROM, 0); } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } + public tableOrViewName(): TableOrViewNameContext | undefined { + return this.tryGetRuleContext(0, TableOrViewNameContext); } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIKE, 0); } + public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIKE, 0); } public string(): StringContext[]; public string(i: number): StringContext; public string(i?: number): StringContext | StringContext[] { @@ -15139,9 +15635,9 @@ export class ShowColumnsContext extends StatementContext { return this.getRuleContext(i, StringContext); } } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } - public DESCRIBE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DESCRIBE, 0); } - public DESC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DESC, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } + public KW_DESCRIBE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DESCRIBE, 0); } + public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DESC, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15168,11 +15664,11 @@ export class ShowColumnsContext extends StatementContext { } } export class ShowStatsContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public STATS(): TerminalNode { return this.getToken(TrinoSqlParser.STATS, 0); } - public FOR(): TerminalNode { return this.getToken(TrinoSqlParser.FOR, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_STATS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_STATS, 0); } + public KW_FOR(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FOR, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -15200,9 +15696,9 @@ export class ShowStatsContext extends StatementContext { } } export class ShowStatsForQueryContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public STATS(): TerminalNode { return this.getToken(TrinoSqlParser.STATS, 0); } - public FOR(): TerminalNode { return this.getToken(TrinoSqlParser.FOR, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_STATS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_STATS, 0); } + public KW_FOR(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FOR, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } @@ -15232,14 +15728,14 @@ export class ShowStatsForQueryContext extends StatementContext { } } export class ShowRolesContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public ROLES(): TerminalNode { return this.getToken(TrinoSqlParser.ROLES, 0); } - public CURRENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CURRENT, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_ROLES(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLES, 0); } + public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CURRENT, 0); } public identifier(): IdentifierContext | undefined { return this.tryGetRuleContext(0, IdentifierContext); } - public FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FROM, 0); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } + public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FROM, 0); } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15266,14 +15762,14 @@ export class ShowRolesContext extends StatementContext { } } export class ShowRoleGrantsContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.ROLE, 0); } - public GRANTS(): TerminalNode { return this.getToken(TrinoSqlParser.GRANTS, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLE, 0); } + public KW_GRANTS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_GRANTS, 0); } public identifier(): IdentifierContext | undefined { return this.tryGetRuleContext(0, IdentifierContext); } - public FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FROM, 0); } - public IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IN, 0); } + public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FROM, 0); } + public KW_IN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IN, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15302,9 +15798,9 @@ export class ShowRoleGrantsContext extends StatementContext { export class ShowFunctionsContext extends StatementContext { public _pattern!: StringContext; public _escape!: StringContext; - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public FUNCTIONS(): TerminalNode { return this.getToken(TrinoSqlParser.FUNCTIONS, 0); } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIKE, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_FUNCTIONS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0); } + public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIKE, 0); } public string(): StringContext[]; public string(i: number): StringContext; public string(i?: number): StringContext | StringContext[] { @@ -15314,7 +15810,7 @@ export class ShowFunctionsContext extends StatementContext { return this.getRuleContext(i, StringContext); } } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15343,9 +15839,9 @@ export class ShowFunctionsContext extends StatementContext { export class ShowSessionContext extends StatementContext { public _pattern!: StringContext; public _escape!: StringContext; - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public SESSION(): TerminalNode { return this.getToken(TrinoSqlParser.SESSION, 0); } - public LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIKE, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_SESSION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SESSION, 0); } + public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIKE, 0); } public string(): StringContext[]; public string(i: number): StringContext; public string(i?: number): StringContext | StringContext[] { @@ -15355,7 +15851,7 @@ export class ShowSessionContext extends StatementContext { return this.getRuleContext(i, StringContext); } } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15382,8 +15878,8 @@ export class ShowSessionContext extends StatementContext { } } export class SetSessionContext extends StatementContext { - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public SESSION(): TerminalNode { return this.getToken(TrinoSqlParser.SESSION, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_SESSION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SESSION, 0); } public qualifiedName(): QualifiedNameContext { return this.getRuleContext(0, QualifiedNameContext); } @@ -15417,8 +15913,8 @@ export class SetSessionContext extends StatementContext { } } export class ResetSessionContext extends StatementContext { - public RESET(): TerminalNode { return this.getToken(TrinoSqlParser.RESET, 0); } - public SESSION(): TerminalNode { return this.getToken(TrinoSqlParser.SESSION, 0); } + public KW_RESET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_RESET, 0); } + public KW_SESSION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SESSION, 0); } public qualifiedName(): QualifiedNameContext { return this.getRuleContext(0, QualifiedNameContext); } @@ -15448,8 +15944,8 @@ export class ResetSessionContext extends StatementContext { } } export class StartTransactionContext extends StatementContext { - public START(): TerminalNode { return this.getToken(TrinoSqlParser.START, 0); } - public TRANSACTION(): TerminalNode { return this.getToken(TrinoSqlParser.TRANSACTION, 0); } + public KW_START(): TerminalNode { return this.getToken(TrinoSqlParser.KW_START, 0); } + public KW_TRANSACTION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0); } public transactionMode(): TransactionModeContext[]; public transactionMode(i: number): TransactionModeContext; public transactionMode(i?: number): TransactionModeContext | TransactionModeContext[] { @@ -15485,8 +15981,8 @@ export class StartTransactionContext extends StatementContext { } } export class CommitContext extends StatementContext { - public COMMIT(): TerminalNode { return this.getToken(TrinoSqlParser.COMMIT, 0); } - public WORK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WORK, 0); } + public KW_COMMIT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COMMIT, 0); } + public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WORK, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15513,8 +16009,8 @@ export class CommitContext extends StatementContext { } } export class RollbackContext extends StatementContext { - public ROLLBACK(): TerminalNode { return this.getToken(TrinoSqlParser.ROLLBACK, 0); } - public WORK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WORK, 0); } + public KW_ROLLBACK(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLLBACK, 0); } + public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WORK, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15541,11 +16037,11 @@ export class RollbackContext extends StatementContext { } } export class PrepareContext extends StatementContext { - public PREPARE(): TerminalNode { return this.getToken(TrinoSqlParser.PREPARE, 0); } + public KW_PREPARE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PREPARE, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } public statement(): StatementContext { return this.getRuleContext(0, StatementContext); } @@ -15575,8 +16071,8 @@ export class PrepareContext extends StatementContext { } } export class DeallocateContext extends StatementContext { - public DEALLOCATE(): TerminalNode { return this.getToken(TrinoSqlParser.DEALLOCATE, 0); } - public PREPARE(): TerminalNode { return this.getToken(TrinoSqlParser.PREPARE, 0); } + public KW_DEALLOCATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DEALLOCATE, 0); } + public KW_PREPARE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PREPARE, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -15606,11 +16102,11 @@ export class DeallocateContext extends StatementContext { } } export class ExecuteContext extends StatementContext { - public EXECUTE(): TerminalNode { return this.getToken(TrinoSqlParser.EXECUTE, 0); } + public KW_EXECUTE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_EXECUTE, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } - public USING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.USING, 0); } + public KW_USING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_USING, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -15646,8 +16142,8 @@ export class ExecuteContext extends StatementContext { } } export class DescribeInputContext extends StatementContext { - public DESCRIBE(): TerminalNode { return this.getToken(TrinoSqlParser.DESCRIBE, 0); } - public INPUT(): TerminalNode { return this.getToken(TrinoSqlParser.INPUT, 0); } + public KW_DESCRIBE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0); } + public KW_INPUT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INPUT, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -15677,8 +16173,8 @@ export class DescribeInputContext extends StatementContext { } } export class DescribeOutputContext extends StatementContext { - public DESCRIBE(): TerminalNode { return this.getToken(TrinoSqlParser.DESCRIBE, 0); } - public OUTPUT(): TerminalNode { return this.getToken(TrinoSqlParser.OUTPUT, 0); } + public KW_DESCRIBE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0); } + public KW_OUTPUT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_OUTPUT, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -15708,8 +16204,8 @@ export class DescribeOutputContext extends StatementContext { } } export class SetPathContext extends StatementContext { - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public PATH(): TerminalNode { return this.getToken(TrinoSqlParser.PATH, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_PATH(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PATH, 0); } public pathSpecification(): PathSpecificationContext { return this.getRuleContext(0, PathSpecificationContext); } @@ -15739,10 +16235,10 @@ export class SetPathContext extends StatementContext { } } export class SetTimeZoneContext extends StatementContext { - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } - public TIME(): TerminalNode { return this.getToken(TrinoSqlParser.TIME, 0); } - public ZONE(): TerminalNode { return this.getToken(TrinoSqlParser.ZONE, 0); } - public LOCAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LOCAL, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } + public KW_TIME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TIME, 0); } + public KW_ZONE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ZONE, 0); } + public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LOCAL, 0); } public expression(): ExpressionContext | undefined { return this.tryGetRuleContext(0, ExpressionContext); } @@ -15773,11 +16269,11 @@ export class SetTimeZoneContext extends StatementContext { } export class UpdateContext extends StatementContext { public _where!: BooleanExpressionContext; - public UPDATE(): TerminalNode { return this.getToken(TrinoSqlParser.UPDATE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_UPDATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_UPDATE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } public updateAssignment(): UpdateAssignmentContext[]; public updateAssignment(i: number): UpdateAssignmentContext; public updateAssignment(i?: number): UpdateAssignmentContext | UpdateAssignmentContext[] { @@ -15787,7 +16283,7 @@ export class UpdateContext extends StatementContext { return this.getRuleContext(i, UpdateAssignmentContext); } } - public WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WHERE, 0); } + public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WHERE, 0); } public booleanExpression(): BooleanExpressionContext | undefined { return this.tryGetRuleContext(0, BooleanExpressionContext); } @@ -15817,16 +16313,16 @@ export class UpdateContext extends StatementContext { } } export class MergeContext extends StatementContext { - public MERGE(): TerminalNode { return this.getToken(TrinoSqlParser.MERGE, 0); } - public INTO(): TerminalNode { return this.getToken(TrinoSqlParser.INTO, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_MERGE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MERGE, 0); } + public KW_INTO(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INTO, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public USING(): TerminalNode { return this.getToken(TrinoSqlParser.USING, 0); } + public KW_USING(): TerminalNode { return this.getToken(TrinoSqlParser.KW_USING, 0); } public relation(): RelationContext { return this.getRuleContext(0, RelationContext); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext); } @@ -15842,7 +16338,7 @@ export class MergeContext extends StatementContext { return this.getRuleContext(i, MergeCaseContext); } } - public AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AS, 0); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -15869,12 +16365,12 @@ export class MergeContext extends StatementContext { } } export class ShowTableCommentContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.COMMENT, 0); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COMMENT, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); @@ -15902,10 +16398,10 @@ export class ShowTableCommentContext extends StatementContext { } } export class ShowColumnCommentContext extends StatementContext { - public SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.SHOW, 0); } - public COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.COMMENT, 0); } - public ON(): TerminalNode { return this.getToken(TrinoSqlParser.ON, 0); } - public COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.COLUMN, 0); } + public KW_SHOW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_COMMENT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COMMENT, 0); } + public KW_ON(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ON, 0); } + public KW_COLUMN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COLUMN, 0); } public qualifiedName(): QualifiedNameContext { return this.getRuleContext(0, QualifiedNameContext); } @@ -15972,7 +16468,7 @@ export class QueryContext extends ParserRuleContext { export class WithContext extends ParserRuleContext { - public WITH(): TerminalNode { return this.getToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode { return this.getToken(TrinoSqlParser.KW_WITH, 0); } public namedQuery(): NamedQueryContext[]; public namedQuery(i: number): NamedQueryContext; public namedQuery(i?: number): NamedQueryContext | NamedQueryContext[] { @@ -15982,7 +16478,7 @@ export class WithContext extends ParserRuleContext { return this.getRuleContext(i, NamedQueryContext); } } - public RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RECURSIVE, 0); } + public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RECURSIVE, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -16053,13 +16549,13 @@ export class ColumnDefinitionContext extends ParserRuleContext { public type(): TypeContext { return this.getRuleContext(0, TypeContext); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } - public NULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NULL, 0); } - public COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMENT, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } + public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NULL, 0); } + public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMENT, 0); } public string(): StringContext | undefined { return this.tryGetRuleContext(0, StringContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } public properties(): PropertiesContext | undefined { return this.tryGetRuleContext(0, PropertiesContext); } @@ -16093,13 +16589,13 @@ export class ColumnDefinitionContext extends ParserRuleContext { export class LikeClauseContext extends ParserRuleContext { public _optionType!: Token; - public LIKE(): TerminalNode { return this.getToken(TrinoSqlParser.LIKE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_LIKE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_LIKE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } - public PROPERTIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PROPERTIES, 0); } - public INCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INCLUDING, 0); } - public EXCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXCLUDING, 0); } + public KW_PROPERTIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PROPERTIES, 0); } + public KW_INCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INCLUDING, 0); } + public KW_EXCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXCLUDING, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -16245,7 +16741,7 @@ export class PropertyValueContext extends ParserRuleContext { } } export class DefaultPropertyValueContext extends PropertyValueContext { - public DEFAULT(): TerminalNode { return this.getToken(TrinoSqlParser.DEFAULT, 0); } + public KW_DEFAULT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } constructor(ctx: PropertyValueContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -16309,8 +16805,8 @@ export class QueryNoWithContext extends ParserRuleContext { public queryTerm(): QueryTermContext { return this.getRuleContext(0, QueryTermContext); } - public ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ORDER, 0); } - public BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BY, 0); } + public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ORDER, 0); } + public KW_BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BY, 0); } public sortItem(): SortItemContext[]; public sortItem(i: number): SortItemContext; public sortItem(i?: number): SortItemContext | SortItemContext[] { @@ -16320,7 +16816,7 @@ export class QueryNoWithContext extends ParserRuleContext { return this.getRuleContext(i, SortItemContext); } } - public OFFSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OFFSET, 0); } + public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OFFSET, 0); } public rowCount(): RowCountContext[]; public rowCount(i: number): RowCountContext; public rowCount(i?: number): RowCountContext | RowCountContext[] { @@ -16330,34 +16826,34 @@ export class QueryNoWithContext extends ParserRuleContext { return this.getRuleContext(i, RowCountContext); } } - public LIMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIMIT, 0); } - public FETCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FETCH, 0); } + public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIMIT, 0); } + public KW_FETCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FETCH, 0); } public limitRowCount(): LimitRowCountContext | undefined { return this.tryGetRuleContext(0, LimitRowCountContext); } - public FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FIRST, 0); } - public NEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NEXT, 0); } - public ROW(): TerminalNode[]; - public ROW(i: number): TerminalNode; - public ROW(i?: number): TerminalNode | TerminalNode[] { + public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FIRST, 0); } + public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NEXT, 0); } + public KW_ROW(): TerminalNode[]; + public KW_ROW(i: number): TerminalNode; + public KW_ROW(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.ROW); + return this.getTokens(TrinoSqlParser.KW_ROW); } else { - return this.getToken(TrinoSqlParser.ROW, i); + return this.getToken(TrinoSqlParser.KW_ROW, i); } } - public ROWS(): TerminalNode[]; - public ROWS(i: number): TerminalNode; - public ROWS(i?: number): TerminalNode | TerminalNode[] { + public KW_ROWS(): TerminalNode[]; + public KW_ROWS(i: number): TerminalNode; + public KW_ROWS(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.ROWS); + return this.getTokens(TrinoSqlParser.KW_ROWS); } else { - return this.getToken(TrinoSqlParser.ROWS, i); + return this.getToken(TrinoSqlParser.KW_ROWS, i); } } - public ONLY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ONLY, 0); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } - public TIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TIES, 0); } + public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ONLY, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } + public KW_TIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TIES, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -16387,7 +16883,7 @@ export class QueryNoWithContext extends ParserRuleContext { export class LimitRowCountContext extends ParserRuleContext { - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } public rowCount(): RowCountContext | undefined { return this.tryGetRuleContext(0, RowCountContext); } @@ -16502,12 +16998,12 @@ export class SetOperationContext extends QueryTermContext { return this.getRuleContext(i, QueryTermContext); } } - public INTERSECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INTERSECT, 0); } + public KW_INTERSECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INTERSECT, 0); } public setQuantifier(): SetQuantifierContext | undefined { return this.tryGetRuleContext(0, SetQuantifierContext); } - public UNION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UNION, 0); } - public EXCEPT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXCEPT, 0); } + public KW_UNION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UNION, 0); } + public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXCEPT, 0); } constructor(ctx: QueryTermContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -16575,9 +17071,9 @@ export class QueryPrimaryDefaultContext extends QueryPrimaryContext { } } export class TableContext extends QueryPrimaryContext { - public TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.TABLE, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public KW_TABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0); } + public tableName(): TableNameContext { + return this.getRuleContext(0, TableNameContext); } constructor(ctx: QueryPrimaryContext) { super(ctx.parent, ctx.invokingState); @@ -16605,7 +17101,7 @@ export class TableContext extends QueryPrimaryContext { } } export class InlineTableContext extends QueryPrimaryContext { - public VALUES(): TerminalNode { return this.getToken(TrinoSqlParser.VALUES, 0); } + public KW_VALUES(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VALUES, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -16677,11 +17173,11 @@ export class SortItemContext extends ParserRuleContext { public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext); } - public NULLS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NULLS, 0); } - public ASC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ASC, 0); } - public DESC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DESC, 0); } - public FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FIRST, 0); } - public LAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LAST, 0); } + public KW_NULLS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NULLS, 0); } + public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ASC, 0); } + public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DESC, 0); } + public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FIRST, 0); } + public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LAST, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -16713,7 +17209,7 @@ export class SortItemContext extends ParserRuleContext { export class QuerySpecificationContext extends ParserRuleContext { public _where!: BooleanExpressionContext; public _having!: BooleanExpressionContext; - public SELECT(): TerminalNode { return this.getToken(TrinoSqlParser.SELECT, 0); } + public KW_SELECT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SELECT, 0); } public selectItem(): SelectItemContext[]; public selectItem(i: number): SelectItemContext; public selectItem(i?: number): SelectItemContext | SelectItemContext[] { @@ -16726,7 +17222,7 @@ export class QuerySpecificationContext extends ParserRuleContext { public setQuantifier(): SetQuantifierContext | undefined { return this.tryGetRuleContext(0, SetQuantifierContext); } - public FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FROM, 0); } + public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FROM, 0); } public relation(): RelationContext[]; public relation(i: number): RelationContext; public relation(i?: number): RelationContext | RelationContext[] { @@ -16736,14 +17232,14 @@ export class QuerySpecificationContext extends ParserRuleContext { return this.getRuleContext(i, RelationContext); } } - public WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WHERE, 0); } - public GROUP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GROUP, 0); } - public BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BY, 0); } + public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WHERE, 0); } + public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GROUP, 0); } + public KW_BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BY, 0); } public groupBy(): GroupByContext | undefined { return this.tryGetRuleContext(0, GroupByContext); } - public HAVING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.HAVING, 0); } - public WINDOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WINDOW, 0); } + public KW_HAVING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_HAVING, 0); } + public KW_WINDOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WINDOW, 0); } public windowDefinition(): WindowDefinitionContext[]; public windowDefinition(i: number): WindowDefinitionContext; public windowDefinition(i?: number): WindowDefinitionContext | WindowDefinitionContext[] { @@ -16871,7 +17367,7 @@ export class SingleGroupingSetContext extends GroupingElementContext { } } export class RollupContext extends GroupingElementContext { - public ROLLUP(): TerminalNode { return this.getToken(TrinoSqlParser.ROLLUP, 0); } + public KW_ROLLUP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLLUP, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -16907,7 +17403,7 @@ export class RollupContext extends GroupingElementContext { } } export class CubeContext extends GroupingElementContext { - public CUBE(): TerminalNode { return this.getToken(TrinoSqlParser.CUBE, 0); } + public KW_CUBE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CUBE, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -16943,8 +17439,8 @@ export class CubeContext extends GroupingElementContext { } } export class MultipleGroupingSetsContext extends GroupingElementContext { - public GROUPING(): TerminalNode { return this.getToken(TrinoSqlParser.GROUPING, 0); } - public SETS(): TerminalNode { return this.getToken(TrinoSqlParser.SETS, 0); } + public KW_GROUPING(): TerminalNode { return this.getToken(TrinoSqlParser.KW_GROUPING, 0); } + public KW_SETS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SETS, 0); } public groupingSet(): GroupingSetContext[]; public groupingSet(i: number): GroupingSetContext; public groupingSet(i?: number): GroupingSetContext | GroupingSetContext[] { @@ -17021,7 +17517,7 @@ export class GroupingSetContext extends ParserRuleContext { export class WindowDefinitionContext extends ParserRuleContext { public _name!: IdentifierContext; - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public windowSpecification(): WindowSpecificationContext { return this.getRuleContext(0, WindowSpecificationContext); } @@ -17060,17 +17556,17 @@ export class WindowSpecificationContext extends ParserRuleContext { public _existingWindowName!: IdentifierContext; public _expression!: ExpressionContext; public _partition: ExpressionContext[] = []; - public PARTITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PARTITION, 0); } - public BY(): TerminalNode[]; - public BY(i: number): TerminalNode; - public BY(i?: number): TerminalNode | TerminalNode[] { + public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PARTITION, 0); } + public KW_BY(): TerminalNode[]; + public KW_BY(i: number): TerminalNode; + public KW_BY(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.BY); + return this.getTokens(TrinoSqlParser.KW_BY); } else { - return this.getToken(TrinoSqlParser.BY, i); + return this.getToken(TrinoSqlParser.KW_BY, i); } } - public ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ORDER, 0); } + public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ORDER, 0); } public sortItem(): SortItemContext[]; public sortItem(i: number): SortItemContext; public sortItem(i?: number): SortItemContext | SortItemContext[] { @@ -17125,7 +17621,7 @@ export class WindowSpecificationContext extends ParserRuleContext { export class NamedQueryContext extends ParserRuleContext { public _name!: IdentifierContext; - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } @@ -17164,8 +17660,8 @@ export class NamedQueryContext extends ParserRuleContext { export class SetQuantifierContext extends ParserRuleContext { - public DISTINCT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DISTINCT, 0); } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } + public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DISTINCT, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -17211,7 +17707,7 @@ export class SelectSingleContext extends SelectItemContext { public identifier(): IdentifierContext | undefined { return this.tryGetRuleContext(0, IdentifierContext); } - public AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AS, 0); } constructor(ctx: SelectItemContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -17242,7 +17738,7 @@ export class SelectAllContext extends SelectItemContext { return this.tryGetRuleContext(0, PrimaryExpressionContext); } public ASTERISK(): TerminalNode { return this.getToken(TrinoSqlParser.ASTERISK, 0); } - public AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AS, 0); } public columnAliases(): ColumnAliasesContext | undefined { return this.tryGetRuleContext(0, ColumnAliasesContext); } @@ -17296,15 +17792,15 @@ export class JoinRelationContext extends RelationContext { return this.getRuleContext(i, RelationContext); } } - public CROSS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CROSS, 0); } - public JOIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.JOIN, 0); } + public KW_CROSS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CROSS, 0); } + public KW_JOIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_JOIN, 0); } public joinType(): JoinTypeContext | undefined { return this.tryGetRuleContext(0, JoinTypeContext); } public joinCriteria(): JoinCriteriaContext | undefined { return this.tryGetRuleContext(0, JoinCriteriaContext); } - public NATURAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NATURAL, 0); } + public KW_NATURAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NATURAL, 0); } public sampledRelation(): SampledRelationContext | undefined { return this.tryGetRuleContext(0, SampledRelationContext); } @@ -17365,11 +17861,11 @@ export class RelationDefaultContext extends RelationContext { export class JoinTypeContext extends ParserRuleContext { - public INNER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INNER, 0); } - public LEFT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LEFT, 0); } - public OUTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OUTER, 0); } - public RIGHT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RIGHT, 0); } - public FULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FULL, 0); } + public KW_INNER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INNER, 0); } + public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LEFT, 0); } + public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OUTER, 0); } + public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RIGHT, 0); } + public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FULL, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -17399,11 +17895,11 @@ export class JoinTypeContext extends ParserRuleContext { export class JoinCriteriaContext extends ParserRuleContext { - public ON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ON, 0); } + public KW_ON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ON, 0); } public booleanExpression(): BooleanExpressionContext | undefined { return this.tryGetRuleContext(0, BooleanExpressionContext); } - public USING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.USING, 0); } + public KW_USING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_USING, 0); } public identifier(): IdentifierContext[]; public identifier(i: number): IdentifierContext; public identifier(i?: number): IdentifierContext | IdentifierContext[] { @@ -17446,7 +17942,7 @@ export class SampledRelationContext extends ParserRuleContext { public patternRecognition(): PatternRecognitionContext { return this.getRuleContext(0, PatternRecognitionContext); } - public TABLESAMPLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLESAMPLE, 0); } + public KW_TABLESAMPLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLESAMPLE, 0); } public sampleType(): SampleTypeContext | undefined { return this.tryGetRuleContext(0, SampleTypeContext); } @@ -17482,8 +17978,8 @@ export class SampledRelationContext extends ParserRuleContext { export class SampleTypeContext extends ParserRuleContext { - public BERNOULLI(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BERNOULLI, 0); } - public SYSTEM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SYSTEM, 0); } + public KW_BERNOULLI(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BERNOULLI, 0); } + public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SYSTEM, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -17518,12 +18014,12 @@ export class PatternRecognitionContext extends ParserRuleContext { public aliasedRelation(): AliasedRelationContext { return this.getRuleContext(0, AliasedRelationContext); } - public MATCH_RECOGNIZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCH_RECOGNIZE, 0); } - public PATTERN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PATTERN, 0); } + public KW_MATCH_RECOGNIZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCH_RECOGNIZE, 0); } + public KW_PATTERN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PATTERN, 0); } public rowPattern(): RowPatternContext | undefined { return this.tryGetRuleContext(0, RowPatternContext); } - public DEFINE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DEFINE, 0); } + public KW_DEFINE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DEFINE, 0); } public variableDefinition(): VariableDefinitionContext[]; public variableDefinition(i: number): VariableDefinitionContext; public variableDefinition(i?: number): VariableDefinitionContext | VariableDefinitionContext[] { @@ -17533,17 +18029,17 @@ export class PatternRecognitionContext extends ParserRuleContext { return this.getRuleContext(i, VariableDefinitionContext); } } - public PARTITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PARTITION, 0); } - public BY(): TerminalNode[]; - public BY(i: number): TerminalNode; - public BY(i?: number): TerminalNode | TerminalNode[] { + public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PARTITION, 0); } + public KW_BY(): TerminalNode[]; + public KW_BY(i: number): TerminalNode; + public KW_BY(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.BY); + return this.getTokens(TrinoSqlParser.KW_BY); } else { - return this.getToken(TrinoSqlParser.BY, i); + return this.getToken(TrinoSqlParser.KW_BY, i); } } - public ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ORDER, 0); } + public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ORDER, 0); } public sortItem(): SortItemContext[]; public sortItem(i: number): SortItemContext; public sortItem(i?: number): SortItemContext | SortItemContext[] { @@ -17553,7 +18049,7 @@ export class PatternRecognitionContext extends ParserRuleContext { return this.getRuleContext(i, SortItemContext); } } - public MEASURES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MEASURES, 0); } + public KW_MEASURES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MEASURES, 0); } public measureDefinition(): MeasureDefinitionContext[]; public measureDefinition(i: number): MeasureDefinitionContext; public measureDefinition(i?: number): MeasureDefinitionContext | MeasureDefinitionContext[] { @@ -17566,12 +18062,12 @@ export class PatternRecognitionContext extends ParserRuleContext { public rowsPerMatch(): RowsPerMatchContext | undefined { return this.tryGetRuleContext(0, RowsPerMatchContext); } - public AFTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AFTER, 0); } - public MATCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCH, 0); } + public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AFTER, 0); } + public KW_MATCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCH, 0); } public skipTo(): SkipToContext | undefined { return this.tryGetRuleContext(0, SkipToContext); } - public SUBSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SUBSET, 0); } + public KW_SUBSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SUBSET, 0); } public subsetDefinition(): SubsetDefinitionContext[]; public subsetDefinition(i: number): SubsetDefinitionContext; public subsetDefinition(i?: number): SubsetDefinitionContext | SubsetDefinitionContext[] { @@ -17593,9 +18089,9 @@ export class PatternRecognitionContext extends ParserRuleContext { return this.getRuleContext(i, ExpressionContext); } } - public INITIAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INITIAL, 0); } - public SEEK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SEEK, 0); } - public AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AS, 0); } + public KW_INITIAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INITIAL, 0); } + public KW_SEEK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SEEK, 0); } + public KW_AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AS, 0); } public columnAliases(): ColumnAliasesContext | undefined { return this.tryGetRuleContext(0, ColumnAliasesContext); } @@ -17631,7 +18127,7 @@ export class MeasureDefinitionContext extends ParserRuleContext { public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext); } - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -17664,12 +18160,12 @@ export class MeasureDefinitionContext extends ParserRuleContext { export class RowsPerMatchContext extends ParserRuleContext { - public ONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ONE, 0); } - public ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROW, 0); } - public PER(): TerminalNode { return this.getToken(TrinoSqlParser.PER, 0); } - public MATCH(): TerminalNode { return this.getToken(TrinoSqlParser.MATCH, 0); } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROWS, 0); } + public KW_ONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ONE, 0); } + public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROW, 0); } + public KW_PER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PER, 0); } + public KW_MATCH(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATCH, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROWS, 0); } public emptyMatchHandling(): EmptyMatchHandlingContext | undefined { return this.tryGetRuleContext(0, EmptyMatchHandlingContext); } @@ -17702,13 +18198,13 @@ export class RowsPerMatchContext extends ParserRuleContext { export class EmptyMatchHandlingContext extends ParserRuleContext { - public SHOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SHOW, 0); } - public EMPTY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EMPTY, 0); } - public MATCHES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCHES, 0); } - public OMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OMIT, 0); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } - public UNMATCHED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UNMATCHED, 0); } - public ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROWS, 0); } + public KW_SHOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_EMPTY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EMPTY, 0); } + public KW_MATCHES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCHES, 0); } + public KW_OMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OMIT, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } + public KW_UNMATCHED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UNMATCHED, 0); } + public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROWS, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -17738,12 +18234,12 @@ export class EmptyMatchHandlingContext extends ParserRuleContext { export class SkipToContext extends ParserRuleContext { - public TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TO, 0); } - public NEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NEXT, 0); } - public ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROW, 0); } - public PAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PAST, 0); } - public LAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LAST, 0); } - public FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FIRST, 0); } + public KW_TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TO, 0); } + public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NEXT, 0); } + public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROW, 0); } + public KW_PAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PAST, 0); } + public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LAST, 0); } + public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FIRST, 0); } public identifier(): IdentifierContext | undefined { return this.tryGetRuleContext(0, IdentifierContext); } @@ -17821,7 +18317,7 @@ export class VariableDefinitionContext extends ParserRuleContext { public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext); } @@ -17860,7 +18356,7 @@ export class AliasedRelationContext extends ParserRuleContext { public identifier(): IdentifierContext | undefined { return this.tryGetRuleContext(0, IdentifierContext); } - public AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AS, 0); } public columnAliases(): ColumnAliasesContext | undefined { return this.tryGetRuleContext(0, ColumnAliasesContext); } @@ -17940,9 +18436,9 @@ export class RelationPrimaryContext extends ParserRuleContext { super.copyFrom(ctx); } } -export class TableNameContext extends RelationPrimaryContext { - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); +export class TableOrViewRelationContext extends RelationPrimaryContext { + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext); } constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); @@ -17950,20 +18446,20 @@ export class TableNameContext extends RelationPrimaryContext { } // @Override public enterRule(listener: TrinoSqlListener): void { - if (listener.enterTableName) { - listener.enterTableName(this); + if (listener.enterTableOrViewRelation) { + listener.enterTableOrViewRelation(this); } } // @Override public exitRule(listener: TrinoSqlListener): void { - if (listener.exitTableName) { - listener.exitTableName(this); + if (listener.exitTableOrViewRelation) { + listener.exitTableOrViewRelation(this); } } // @Override public accept(visitor: TrinoSqlVisitor): Result { - if (visitor.visitTableName) { - return visitor.visitTableName(this); + if (visitor.visitTableOrViewRelation) { + return visitor.visitTableOrViewRelation(this); } else { return visitor.visitChildren(this); } @@ -17999,7 +18495,7 @@ export class SubqueryRelationContext extends RelationPrimaryContext { } } export class UnnestContext extends RelationPrimaryContext { - public UNNEST(): TerminalNode { return this.getToken(TrinoSqlParser.UNNEST, 0); } + public KW_UNNEST(): TerminalNode { return this.getToken(TrinoSqlParser.KW_UNNEST, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -18009,8 +18505,8 @@ export class UnnestContext extends RelationPrimaryContext { return this.getRuleContext(i, ExpressionContext); } } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } - public ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ORDINALITY, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } + public KW_ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ORDINALITY, 0); } constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -18037,7 +18533,7 @@ export class UnnestContext extends RelationPrimaryContext { } } export class LateralContext extends RelationPrimaryContext { - public LATERAL(): TerminalNode { return this.getToken(TrinoSqlParser.LATERAL, 0); } + public KW_LATERAL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_LATERAL, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } @@ -18173,7 +18669,7 @@ export class PredicatedContext extends BooleanExpressionContext { } } export class LogicalNotContext extends BooleanExpressionContext { - public NOT(): TerminalNode { return this.getToken(TrinoSqlParser.NOT, 0); } + public KW_NOT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_NOT, 0); } public booleanExpression(): BooleanExpressionContext { return this.getRuleContext(0, BooleanExpressionContext); } @@ -18215,8 +18711,8 @@ export class LogicalBinaryContext extends BooleanExpressionContext { return this.getRuleContext(i, BooleanExpressionContext); } } - public AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AND, 0); } - public OR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OR, 0); } + public KW_AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AND, 0); } + public KW_OR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OR, 0); } constructor(ctx: BooleanExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -18328,8 +18824,8 @@ export class QuantifiedComparisonContext extends PredicateContext { export class BetweenContext extends PredicateContext { public _lower!: ValueExpressionContext; public _upper!: ValueExpressionContext; - public BETWEEN(): TerminalNode { return this.getToken(TrinoSqlParser.BETWEEN, 0); } - public AND(): TerminalNode { return this.getToken(TrinoSqlParser.AND, 0); } + public KW_BETWEEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_BETWEEN, 0); } + public KW_AND(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AND, 0); } public valueExpression(): ValueExpressionContext[]; public valueExpression(i: number): ValueExpressionContext; public valueExpression(i?: number): ValueExpressionContext | ValueExpressionContext[] { @@ -18339,7 +18835,7 @@ export class BetweenContext extends PredicateContext { return this.getRuleContext(i, ValueExpressionContext); } } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } constructor(ctx: PredicateContext) { super(ctx.parent, ctx.invokingState, ctx.value); this.copyFrom(ctx); @@ -18366,7 +18862,7 @@ export class BetweenContext extends PredicateContext { } } export class InListContext extends PredicateContext { - public IN(): TerminalNode { return this.getToken(TrinoSqlParser.IN, 0); } + public KW_IN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IN, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -18376,7 +18872,7 @@ export class InListContext extends PredicateContext { return this.getRuleContext(i, ExpressionContext); } } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } constructor(ctx: PredicateContext) { super(ctx.parent, ctx.invokingState, ctx.value); this.copyFrom(ctx); @@ -18403,11 +18899,11 @@ export class InListContext extends PredicateContext { } } export class InSubqueryContext extends PredicateContext { - public IN(): TerminalNode { return this.getToken(TrinoSqlParser.IN, 0); } + public KW_IN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IN, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } constructor(ctx: PredicateContext) { super(ctx.parent, ctx.invokingState, ctx.value); this.copyFrom(ctx); @@ -18436,7 +18932,7 @@ export class InSubqueryContext extends PredicateContext { export class LikeContext extends PredicateContext { public _pattern!: ValueExpressionContext; public _escape!: ValueExpressionContext; - public LIKE(): TerminalNode { return this.getToken(TrinoSqlParser.LIKE, 0); } + public KW_LIKE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_LIKE, 0); } public valueExpression(): ValueExpressionContext[]; public valueExpression(i: number): ValueExpressionContext; public valueExpression(i?: number): ValueExpressionContext | ValueExpressionContext[] { @@ -18446,8 +18942,8 @@ export class LikeContext extends PredicateContext { return this.getRuleContext(i, ValueExpressionContext); } } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } - public ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ESCAPE, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } + public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ESCAPE, 0); } constructor(ctx: PredicateContext) { super(ctx.parent, ctx.invokingState, ctx.value); this.copyFrom(ctx); @@ -18474,9 +18970,9 @@ export class LikeContext extends PredicateContext { } } export class NullPredicateContext extends PredicateContext { - public IS(): TerminalNode { return this.getToken(TrinoSqlParser.IS, 0); } - public NULL(): TerminalNode { return this.getToken(TrinoSqlParser.NULL, 0); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } + public KW_IS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IS, 0); } + public KW_NULL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_NULL, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } constructor(ctx: PredicateContext) { super(ctx.parent, ctx.invokingState, ctx.value); this.copyFrom(ctx); @@ -18504,13 +19000,13 @@ export class NullPredicateContext extends PredicateContext { } export class DistinctFromContext extends PredicateContext { public _right!: ValueExpressionContext; - public IS(): TerminalNode { return this.getToken(TrinoSqlParser.IS, 0); } - public DISTINCT(): TerminalNode { return this.getToken(TrinoSqlParser.DISTINCT, 0); } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } + public KW_IS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IS, 0); } + public KW_DISTINCT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DISTINCT, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } public valueExpression(): ValueExpressionContext { return this.getRuleContext(0, ValueExpressionContext); } - public NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NOT, 0); } + public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NOT, 0); } constructor(ctx: PredicateContext) { super(ctx.parent, ctx.invokingState, ctx.value); this.copyFrom(ctx); @@ -18581,7 +19077,7 @@ export class AtTimeZoneContext extends ValueExpressionContext { public valueExpression(): ValueExpressionContext { return this.getRuleContext(0, ValueExpressionContext); } - public AT(): TerminalNode { return this.getToken(TrinoSqlParser.AT, 0); } + public KW_AT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AT, 0); } public timeZoneSpecifier(): TimeZoneSpecifierContext { return this.getRuleContext(0, TimeZoneSpecifierContext); } @@ -18736,7 +19232,7 @@ export class PrimaryExpressionContext extends ParserRuleContext { } } export class NullLiteralContext extends PrimaryExpressionContext { - public NULL(): TerminalNode { return this.getToken(TrinoSqlParser.NULL, 0); } + public KW_NULL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_NULL, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -18798,8 +19294,8 @@ export class TypeConstructorContext extends PrimaryExpressionContext { public string(): StringContext { return this.getRuleContext(0, StringContext); } - public DOUBLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DOUBLE, 0); } - public PRECISION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRECISION, 0); } + public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DOUBLE, 0); } + public KW_PRECISION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRECISION, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -18967,7 +19463,7 @@ export class ParameterContext extends PrimaryExpressionContext { } } export class PositionContext extends PrimaryExpressionContext { - public POSITION(): TerminalNode { return this.getToken(TrinoSqlParser.POSITION, 0); } + public KW_POSITION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_POSITION, 0); } public valueExpression(): ValueExpressionContext[]; public valueExpression(i: number): ValueExpressionContext; public valueExpression(i?: number): ValueExpressionContext | ValueExpressionContext[] { @@ -18977,7 +19473,7 @@ export class PositionContext extends PrimaryExpressionContext { return this.getRuleContext(i, ValueExpressionContext); } } - public IN(): TerminalNode { return this.getToken(TrinoSqlParser.IN, 0); } + public KW_IN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_IN, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19013,7 +19509,7 @@ export class RowConstructorContext extends PrimaryExpressionContext { return this.getRuleContext(i, ExpressionContext); } } - public ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROW, 0); } + public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROW, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19040,8 +19536,8 @@ export class RowConstructorContext extends PrimaryExpressionContext { } } export class FunctionCallContext extends PrimaryExpressionContext { - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext); + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext); } public ASTERISK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ASTERISK, 0); } public filter(): FilterContext | undefined { @@ -19062,8 +19558,8 @@ export class FunctionCallContext extends PrimaryExpressionContext { return this.getRuleContext(i, ExpressionContext); } } - public ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ORDER, 0); } - public BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BY, 0); } + public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ORDER, 0); } + public KW_BY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BY, 0); } public sortItem(): SortItemContext[]; public sortItem(i: number): SortItemContext; public sortItem(i?: number): SortItemContext | SortItemContext[] { @@ -19204,7 +19700,7 @@ export class SubqueryExpressionContext extends PrimaryExpressionContext { } } export class ExistsContext extends PrimaryExpressionContext { - public EXISTS(): TerminalNode { return this.getToken(TrinoSqlParser.EXISTS, 0); } + public KW_EXISTS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_EXISTS, 0); } public query(): QueryContext { return this.getRuleContext(0, QueryContext); } @@ -19236,8 +19732,8 @@ export class ExistsContext extends PrimaryExpressionContext { export class SimpleCaseContext extends PrimaryExpressionContext { public _operand!: ExpressionContext; public _elseExpression!: ExpressionContext; - public CASE(): TerminalNode { return this.getToken(TrinoSqlParser.CASE, 0); } - public END(): TerminalNode { return this.getToken(TrinoSqlParser.END, 0); } + public KW_CASE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CASE, 0); } + public KW_END(): TerminalNode { return this.getToken(TrinoSqlParser.KW_END, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -19256,7 +19752,7 @@ export class SimpleCaseContext extends PrimaryExpressionContext { return this.getRuleContext(i, WhenClauseContext); } } - public ELSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ELSE, 0); } + public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ELSE, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19284,8 +19780,8 @@ export class SimpleCaseContext extends PrimaryExpressionContext { } export class SearchedCaseContext extends PrimaryExpressionContext { public _elseExpression!: ExpressionContext; - public CASE(): TerminalNode { return this.getToken(TrinoSqlParser.CASE, 0); } - public END(): TerminalNode { return this.getToken(TrinoSqlParser.END, 0); } + public KW_CASE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CASE, 0); } + public KW_END(): TerminalNode { return this.getToken(TrinoSqlParser.KW_END, 0); } public whenClause(): WhenClauseContext[]; public whenClause(i: number): WhenClauseContext; public whenClause(i?: number): WhenClauseContext | WhenClauseContext[] { @@ -19295,7 +19791,7 @@ export class SearchedCaseContext extends PrimaryExpressionContext { return this.getRuleContext(i, WhenClauseContext); } } - public ELSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ELSE, 0); } + public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ELSE, 0); } public expression(): ExpressionContext | undefined { return this.tryGetRuleContext(0, ExpressionContext); } @@ -19325,15 +19821,15 @@ export class SearchedCaseContext extends PrimaryExpressionContext { } } export class CastContext extends PrimaryExpressionContext { - public CAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CAST, 0); } + public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CAST, 0); } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext); } - public AS(): TerminalNode { return this.getToken(TrinoSqlParser.AS, 0); } + public KW_AS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0); } public type(): TypeContext { return this.getRuleContext(0, TypeContext); } - public TRY_CAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TRY_CAST, 0); } + public KW_TRY_CAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TRY_CAST, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19360,7 +19856,7 @@ export class CastContext extends PrimaryExpressionContext { } } export class ArrayConstructorContext extends PrimaryExpressionContext { - public ARRAY(): TerminalNode { return this.getToken(TrinoSqlParser.ARRAY, 0); } + public KW_ARRAY(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ARRAY, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -19495,12 +19991,12 @@ export class DereferenceContext extends PrimaryExpressionContext { export class SpecialDateTimeFunctionContext extends PrimaryExpressionContext { public _name!: Token; public _precision!: Token; - public CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CURRENT_DATE, 0); } - public CURRENT_TIME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CURRENT_TIME, 0); } + public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CURRENT_DATE, 0); } + public KW_CURRENT_TIME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CURRENT_TIME, 0); } public INTEGER_VALUE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INTEGER_VALUE, 0); } - public CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CURRENT_TIMESTAMP, 0); } - public LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LOCALTIME, 0); } - public LOCALTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LOCALTIMESTAMP, 0); } + public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CURRENT_TIMESTAMP, 0); } + public KW_LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LOCALTIME, 0); } + public KW_LOCALTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LOCALTIMESTAMP, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19528,7 +20024,7 @@ export class SpecialDateTimeFunctionContext extends PrimaryExpressionContext { } export class CurrentUserContext extends PrimaryExpressionContext { public _name!: Token; - public CURRENT_USER(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT_USER, 0); } + public KW_CURRENT_USER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT_USER, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19556,7 +20052,7 @@ export class CurrentUserContext extends PrimaryExpressionContext { } export class CurrentCatalogContext extends PrimaryExpressionContext { public _name!: Token; - public CURRENT_CATALOG(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT_CATALOG, 0); } + public KW_CURRENT_CATALOG(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT_CATALOG, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19584,7 +20080,7 @@ export class CurrentCatalogContext extends PrimaryExpressionContext { } export class CurrentSchemaContext extends PrimaryExpressionContext { public _name!: Token; - public CURRENT_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT_SCHEMA, 0); } + public KW_CURRENT_SCHEMA(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT_SCHEMA, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19612,7 +20108,7 @@ export class CurrentSchemaContext extends PrimaryExpressionContext { } export class CurrentPathContext extends PrimaryExpressionContext { public _name!: Token; - public CURRENT_PATH(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT_PATH, 0); } + public KW_CURRENT_PATH(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT_PATH, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19639,7 +20135,7 @@ export class CurrentPathContext extends PrimaryExpressionContext { } } export class SubstringContext extends PrimaryExpressionContext { - public SUBSTRING(): TerminalNode { return this.getToken(TrinoSqlParser.SUBSTRING, 0); } + public KW_SUBSTRING(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SUBSTRING, 0); } public valueExpression(): ValueExpressionContext[]; public valueExpression(i: number): ValueExpressionContext; public valueExpression(i?: number): ValueExpressionContext | ValueExpressionContext[] { @@ -19649,8 +20145,8 @@ export class SubstringContext extends PrimaryExpressionContext { return this.getRuleContext(i, ValueExpressionContext); } } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } - public FOR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FOR, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } + public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FOR, 0); } constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -19677,7 +20173,7 @@ export class SubstringContext extends PrimaryExpressionContext { } } export class NormalizeContext extends PrimaryExpressionContext { - public NORMALIZE(): TerminalNode { return this.getToken(TrinoSqlParser.NORMALIZE, 0); } + public KW_NORMALIZE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_NORMALIZE, 0); } public valueExpression(): ValueExpressionContext { return this.getRuleContext(0, ValueExpressionContext); } @@ -19710,11 +20206,11 @@ export class NormalizeContext extends PrimaryExpressionContext { } } export class ExtractContext extends PrimaryExpressionContext { - public EXTRACT(): TerminalNode { return this.getToken(TrinoSqlParser.EXTRACT, 0); } + public KW_EXTRACT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_EXTRACT, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } - public FROM(): TerminalNode { return this.getToken(TrinoSqlParser.FROM, 0); } + public KW_FROM(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FROM, 0); } public valueExpression(): ValueExpressionContext { return this.getRuleContext(0, ValueExpressionContext); } @@ -19773,7 +20269,7 @@ export class ParenthesizedExpressionContext extends PrimaryExpressionContext { } } export class GroupingOperationContext extends PrimaryExpressionContext { - public GROUPING(): TerminalNode { return this.getToken(TrinoSqlParser.GROUPING, 0); } + public KW_GROUPING(): TerminalNode { return this.getToken(TrinoSqlParser.KW_GROUPING, 0); } public qualifiedName(): QualifiedNameContext[]; public qualifiedName(i: number): QualifiedNameContext; public qualifiedName(i?: number): QualifiedNameContext | QualifiedNameContext[] { @@ -19811,8 +20307,8 @@ export class GroupingOperationContext extends PrimaryExpressionContext { export class ProcessingModeContext extends ParserRuleContext { - public RUNNING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RUNNING, 0); } - public FINAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FINAL, 0); } + public KW_RUNNING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RUNNING, 0); } + public KW_FINAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FINAL, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -19842,9 +20338,9 @@ export class ProcessingModeContext extends ParserRuleContext { export class NullTreatmentContext extends ParserRuleContext { - public IGNORE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IGNORE, 0); } - public NULLS(): TerminalNode { return this.getToken(TrinoSqlParser.NULLS, 0); } - public RESPECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RESPECT, 0); } + public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IGNORE, 0); } + public KW_NULLS(): TerminalNode { return this.getToken(TrinoSqlParser.KW_NULLS, 0); } + public KW_RESPECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RESPECT, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -19912,7 +20408,7 @@ export class BasicStringLiteralContext extends StringContext { } export class UnicodeStringLiteralContext extends StringContext { public UNICODE_STRING(): TerminalNode { return this.getToken(TrinoSqlParser.UNICODE_STRING, 0); } - public UESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UESCAPE, 0); } + public KW_UESCAPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UESCAPE, 0); } public STRING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.STRING, 0); } constructor(ctx: StringContext) { super(ctx.parent, ctx.invokingState); @@ -19952,8 +20448,8 @@ export class TimeZoneSpecifierContext extends ParserRuleContext { } } export class TimeZoneIntervalContext extends TimeZoneSpecifierContext { - public TIME(): TerminalNode { return this.getToken(TrinoSqlParser.TIME, 0); } - public ZONE(): TerminalNode { return this.getToken(TrinoSqlParser.ZONE, 0); } + public KW_TIME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TIME, 0); } + public KW_ZONE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ZONE, 0); } public interval(): IntervalContext { return this.getRuleContext(0, IntervalContext); } @@ -19983,8 +20479,8 @@ export class TimeZoneIntervalContext extends TimeZoneSpecifierContext { } } export class TimeZoneStringContext extends TimeZoneSpecifierContext { - public TIME(): TerminalNode { return this.getToken(TrinoSqlParser.TIME, 0); } - public ZONE(): TerminalNode { return this.getToken(TrinoSqlParser.ZONE, 0); } + public KW_TIME(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TIME, 0); } + public KW_ZONE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ZONE, 0); } public string(): StringContext { return this.getRuleContext(0, StringContext); } @@ -20051,9 +20547,9 @@ export class ComparisonOperatorContext extends ParserRuleContext { export class ComparisonQuantifierContext extends ParserRuleContext { - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public SOME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SOME, 0); } - public ANY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ANY, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SOME, 0); } + public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ANY, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -20083,8 +20579,8 @@ export class ComparisonQuantifierContext extends ParserRuleContext { export class BooleanValueContext extends ParserRuleContext { - public TRUE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TRUE, 0); } - public FALSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FALSE, 0); } + public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TRUE, 0); } + public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FALSE, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -20117,7 +20613,7 @@ export class IntervalContext extends ParserRuleContext { public _sign!: Token; public _from!: IntervalFieldContext; public _to!: IntervalFieldContext; - public INTERVAL(): TerminalNode { return this.getToken(TrinoSqlParser.INTERVAL, 0); } + public KW_INTERVAL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INTERVAL, 0); } public string(): StringContext { return this.getRuleContext(0, StringContext); } @@ -20130,7 +20626,7 @@ export class IntervalContext extends ParserRuleContext { return this.getRuleContext(i, IntervalFieldContext); } } - public TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TO, 0); } + public KW_TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TO, 0); } public PLUS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PLUS, 0); } public MINUS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MINUS, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { @@ -20162,12 +20658,12 @@ export class IntervalContext extends ParserRuleContext { export class IntervalFieldContext extends ParserRuleContext { - public YEAR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.YEAR, 0); } - public MONTH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MONTH, 0); } - public DAY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DAY, 0); } - public HOUR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.HOUR, 0); } - public MINUTE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MINUTE, 0); } - public SECOND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SECOND, 0); } + public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_YEAR, 0); } + public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MONTH, 0); } + public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DAY, 0); } + public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_HOUR, 0); } + public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MINUTE, 0); } + public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SECOND, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -20197,10 +20693,10 @@ export class IntervalFieldContext extends ParserRuleContext { export class NormalFormContext extends ParserRuleContext { - public NFD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFD, 0); } - public NFC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFC, 0); } - public NFKD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFKD, 0); } - public NFKC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFKC, 0); } + public KW_NFD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFD, 0); } + public KW_NFC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFC, 0); } + public KW_NFKD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFKD, 0); } + public KW_NFKC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFKC, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -20240,7 +20736,7 @@ export class TypeContext extends ParserRuleContext { } } export class RowTypeContext extends TypeContext { - public ROW(): TerminalNode { return this.getToken(TrinoSqlParser.ROW, 0); } + public KW_ROW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROW, 0); } public rowField(): RowFieldContext[]; public rowField(i: number): RowFieldContext; public rowField(i?: number): RowFieldContext | RowFieldContext[] { @@ -20278,7 +20774,7 @@ export class RowTypeContext extends TypeContext { export class IntervalTypeContext extends TypeContext { public _from!: IntervalFieldContext; public _to!: IntervalFieldContext; - public INTERVAL(): TerminalNode { return this.getToken(TrinoSqlParser.INTERVAL, 0); } + public KW_INTERVAL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INTERVAL, 0); } public intervalField(): IntervalFieldContext[]; public intervalField(i: number): IntervalFieldContext; public intervalField(i?: number): IntervalFieldContext | IntervalFieldContext[] { @@ -20288,7 +20784,7 @@ export class IntervalTypeContext extends TypeContext { return this.getRuleContext(i, IntervalFieldContext); } } - public TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TO, 0); } + public KW_TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TO, 0); } constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -20317,22 +20813,22 @@ export class IntervalTypeContext extends TypeContext { export class DateTimeTypeContext extends TypeContext { public _base!: Token; public _precision!: TypeParameterContext; - public TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TIMESTAMP, 0); } - public WITHOUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITHOUT, 0); } - public TIME(): TerminalNode[]; - public TIME(i: number): TerminalNode; - public TIME(i?: number): TerminalNode | TerminalNode[] { + public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TIMESTAMP, 0); } + public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITHOUT, 0); } + public KW_TIME(): TerminalNode[]; + public KW_TIME(i: number): TerminalNode; + public KW_TIME(i?: number): TerminalNode | TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.TIME); + return this.getTokens(TrinoSqlParser.KW_TIME); } else { - return this.getToken(TrinoSqlParser.TIME, i); + return this.getToken(TrinoSqlParser.KW_TIME, i); } } - public ZONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ZONE, 0); } + public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ZONE, 0); } public typeParameter(): TypeParameterContext | undefined { return this.tryGetRuleContext(0, TypeParameterContext); } - public WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITH, 0); } + public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITH, 0); } constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -20359,8 +20855,8 @@ export class DateTimeTypeContext extends TypeContext { } } export class DoublePrecisionTypeContext extends TypeContext { - public DOUBLE(): TerminalNode { return this.getToken(TrinoSqlParser.DOUBLE, 0); } - public PRECISION(): TerminalNode { return this.getToken(TrinoSqlParser.PRECISION, 0); } + public KW_DOUBLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); } + public KW_PRECISION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PRECISION, 0); } constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -20387,7 +20883,7 @@ export class DoublePrecisionTypeContext extends TypeContext { } } export class LegacyArrayTypeContext extends TypeContext { - public ARRAY(): TerminalNode { return this.getToken(TrinoSqlParser.ARRAY, 0); } + public KW_ARRAY(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ARRAY, 0); } public LT(): TerminalNode { return this.getToken(TrinoSqlParser.LT, 0); } public type(): TypeContext { return this.getRuleContext(0, TypeContext); @@ -20421,7 +20917,7 @@ export class LegacyArrayTypeContext extends TypeContext { export class LegacyMapTypeContext extends TypeContext { public _keyType!: TypeContext; public _valueType!: TypeContext; - public MAP(): TerminalNode { return this.getToken(TrinoSqlParser.MAP, 0); } + public KW_MAP(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MAP, 0); } public LT(): TerminalNode { return this.getToken(TrinoSqlParser.LT, 0); } public GT(): TerminalNode { return this.getToken(TrinoSqlParser.GT, 0); } public type(): TypeContext[]; @@ -20462,7 +20958,7 @@ export class ArrayTypeContext extends TypeContext { public type(): TypeContext { return this.getRuleContext(0, TypeContext); } - public ARRAY(): TerminalNode { return this.getToken(TrinoSqlParser.ARRAY, 0); } + public KW_ARRAY(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ARRAY, 0); } public INTEGER_VALUE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INTEGER_VALUE, 0); } constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); @@ -20600,8 +21096,8 @@ export class TypeParameterContext extends ParserRuleContext { export class WhenClauseContext extends ParserRuleContext { public _condition!: ExpressionContext; public _result!: ExpressionContext; - public WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.WHEN, 0); } - public THEN(): TerminalNode { return this.getToken(TrinoSqlParser.THEN, 0); } + public KW_WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_WHEN, 0); } + public KW_THEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_THEN, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -20640,8 +21136,8 @@ export class WhenClauseContext extends ParserRuleContext { export class FilterContext extends ParserRuleContext { - public FILTER(): TerminalNode { return this.getToken(TrinoSqlParser.FILTER, 0); } - public WHERE(): TerminalNode { return this.getToken(TrinoSqlParser.WHERE, 0); } + public KW_FILTER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FILTER, 0); } + public KW_WHERE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_WHERE, 0); } public booleanExpression(): BooleanExpressionContext { return this.getRuleContext(0, BooleanExpressionContext); } @@ -20689,11 +21185,11 @@ export class MergeUpdateContext extends MergeCaseContext { public _targets: IdentifierContext[] = []; public _expression!: ExpressionContext; public _values: ExpressionContext[] = []; - public WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.WHEN, 0); } - public MATCHED(): TerminalNode { return this.getToken(TrinoSqlParser.MATCHED, 0); } - public THEN(): TerminalNode { return this.getToken(TrinoSqlParser.THEN, 0); } - public UPDATE(): TerminalNode { return this.getToken(TrinoSqlParser.UPDATE, 0); } - public SET(): TerminalNode { return this.getToken(TrinoSqlParser.SET, 0); } + public KW_WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_WHEN, 0); } + public KW_MATCHED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATCHED, 0); } + public KW_THEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_THEN, 0); } + public KW_UPDATE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_UPDATE, 0); } + public KW_SET(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SET, 0); } public EQ(): TerminalNode[]; public EQ(i: number): TerminalNode; public EQ(i?: number): TerminalNode | TerminalNode[] { @@ -20721,7 +21217,7 @@ export class MergeUpdateContext extends MergeCaseContext { return this.getRuleContext(i, ExpressionContext); } } - public AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AND, 0); } + public KW_AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AND, 0); } constructor(ctx: MergeCaseContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -20749,11 +21245,11 @@ export class MergeUpdateContext extends MergeCaseContext { } export class MergeDeleteContext extends MergeCaseContext { public _condition!: ExpressionContext; - public WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.WHEN, 0); } - public MATCHED(): TerminalNode { return this.getToken(TrinoSqlParser.MATCHED, 0); } - public THEN(): TerminalNode { return this.getToken(TrinoSqlParser.THEN, 0); } - public DELETE(): TerminalNode { return this.getToken(TrinoSqlParser.DELETE, 0); } - public AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AND, 0); } + public KW_WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_WHEN, 0); } + public KW_MATCHED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATCHED, 0); } + public KW_THEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_THEN, 0); } + public KW_DELETE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_DELETE, 0); } + public KW_AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AND, 0); } public expression(): ExpressionContext | undefined { return this.tryGetRuleContext(0, ExpressionContext); } @@ -20788,12 +21284,12 @@ export class MergeInsertContext extends MergeCaseContext { public _targets: IdentifierContext[] = []; public _expression!: ExpressionContext; public _values: ExpressionContext[] = []; - public WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.WHEN, 0); } - public NOT(): TerminalNode { return this.getToken(TrinoSqlParser.NOT, 0); } - public MATCHED(): TerminalNode { return this.getToken(TrinoSqlParser.MATCHED, 0); } - public THEN(): TerminalNode { return this.getToken(TrinoSqlParser.THEN, 0); } - public INSERT(): TerminalNode { return this.getToken(TrinoSqlParser.INSERT, 0); } - public VALUES(): TerminalNode { return this.getToken(TrinoSqlParser.VALUES, 0); } + public KW_WHEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_WHEN, 0); } + public KW_NOT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_NOT, 0); } + public KW_MATCHED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_MATCHED, 0); } + public KW_THEN(): TerminalNode { return this.getToken(TrinoSqlParser.KW_THEN, 0); } + public KW_INSERT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_INSERT, 0); } + public KW_VALUES(): TerminalNode { return this.getToken(TrinoSqlParser.KW_VALUES, 0); } public expression(): ExpressionContext[]; public expression(i: number): ExpressionContext; public expression(i?: number): ExpressionContext | ExpressionContext[] { @@ -20803,7 +21299,7 @@ export class MergeInsertContext extends MergeCaseContext { return this.getRuleContext(i, ExpressionContext); } } - public AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AND, 0); } + public KW_AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AND, 0); } public identifier(): IdentifierContext[]; public identifier(i: number): IdentifierContext; public identifier(i?: number): IdentifierContext | IdentifierContext[] { @@ -20842,7 +21338,7 @@ export class MergeInsertContext extends MergeCaseContext { export class OverContext extends ParserRuleContext { public _windowName!: IdentifierContext; - public OVER(): TerminalNode { return this.getToken(TrinoSqlParser.OVER, 0); } + public KW_OVER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_OVER, 0); } public windowSpecification(): WindowSpecificationContext | undefined { return this.tryGetRuleContext(0, WindowSpecificationContext); } @@ -20881,7 +21377,7 @@ export class WindowFrameContext extends ParserRuleContext { public frameExtent(): FrameExtentContext { return this.getRuleContext(0, FrameExtentContext); } - public MEASURES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MEASURES, 0); } + public KW_MEASURES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MEASURES, 0); } public measureDefinition(): MeasureDefinitionContext[]; public measureDefinition(i: number): MeasureDefinitionContext; public measureDefinition(i?: number): MeasureDefinitionContext | MeasureDefinitionContext[] { @@ -20891,16 +21387,16 @@ export class WindowFrameContext extends ParserRuleContext { return this.getRuleContext(i, MeasureDefinitionContext); } } - public AFTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AFTER, 0); } - public MATCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCH, 0); } + public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AFTER, 0); } + public KW_MATCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCH, 0); } public skipTo(): SkipToContext | undefined { return this.tryGetRuleContext(0, SkipToContext); } - public PATTERN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PATTERN, 0); } + public KW_PATTERN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PATTERN, 0); } public rowPattern(): RowPatternContext | undefined { return this.tryGetRuleContext(0, RowPatternContext); } - public SUBSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SUBSET, 0); } + public KW_SUBSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SUBSET, 0); } public subsetDefinition(): SubsetDefinitionContext[]; public subsetDefinition(i: number): SubsetDefinitionContext; public subsetDefinition(i?: number): SubsetDefinitionContext | SubsetDefinitionContext[] { @@ -20910,7 +21406,7 @@ export class WindowFrameContext extends ParserRuleContext { return this.getRuleContext(i, SubsetDefinitionContext); } } - public DEFINE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DEFINE, 0); } + public KW_DEFINE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DEFINE, 0); } public variableDefinition(): VariableDefinitionContext[]; public variableDefinition(i: number): VariableDefinitionContext; public variableDefinition(i?: number): VariableDefinitionContext | VariableDefinitionContext[] { @@ -20920,8 +21416,8 @@ export class WindowFrameContext extends ParserRuleContext { return this.getRuleContext(i, VariableDefinitionContext); } } - public INITIAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INITIAL, 0); } - public SEEK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SEEK, 0); } + public KW_INITIAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INITIAL, 0); } + public KW_SEEK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SEEK, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -20954,7 +21450,7 @@ export class FrameExtentContext extends ParserRuleContext { public _frameType!: Token; public _frameStart!: FrameBoundContext; public _end!: FrameBoundContext; - public RANGE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RANGE, 0); } + public KW_RANGE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RANGE, 0); } public frameBound(): FrameBoundContext[]; public frameBound(i: number): FrameBoundContext; public frameBound(i?: number): FrameBoundContext | FrameBoundContext[] { @@ -20964,10 +21460,10 @@ export class FrameExtentContext extends ParserRuleContext { return this.getRuleContext(i, FrameBoundContext); } } - public ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROWS, 0); } - public GROUPS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GROUPS, 0); } - public BETWEEN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BETWEEN, 0); } - public AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AND, 0); } + public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROWS, 0); } + public KW_GROUPS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GROUPS, 0); } + public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BETWEEN, 0); } + public KW_AND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AND, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -21008,9 +21504,9 @@ export class FrameBoundContext extends ParserRuleContext { } export class UnboundedFrameContext extends FrameBoundContext { public _boundType!: Token; - public UNBOUNDED(): TerminalNode { return this.getToken(TrinoSqlParser.UNBOUNDED, 0); } - public PRECEDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRECEDING, 0); } - public FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FOLLOWING, 0); } + public KW_UNBOUNDED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_UNBOUNDED, 0); } + public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRECEDING, 0); } + public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FOLLOWING, 0); } constructor(ctx: FrameBoundContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21037,8 +21533,8 @@ export class UnboundedFrameContext extends FrameBoundContext { } } export class CurrentRowBoundContext extends FrameBoundContext { - public CURRENT(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT, 0); } - public ROW(): TerminalNode { return this.getToken(TrinoSqlParser.ROW, 0); } + public KW_CURRENT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT, 0); } + public KW_ROW(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROW, 0); } constructor(ctx: FrameBoundContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21069,8 +21565,8 @@ export class BoundedFrameContext extends FrameBoundContext { public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext); } - public PRECEDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRECEDING, 0); } - public FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FOLLOWING, 0); } + public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRECEDING, 0); } + public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FOLLOWING, 0); } constructor(ctx: FrameBoundContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21278,7 +21774,7 @@ export class EmptyPatternContext extends PatternPrimaryContext { } } export class PatternPermutationContext extends PatternPrimaryContext { - public PERMUTE(): TerminalNode { return this.getToken(TrinoSqlParser.PERMUTE, 0); } + public KW_PERMUTE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_PERMUTE, 0); } public rowPattern(): RowPatternContext[]; public rowPattern(i: number): RowPatternContext; public rowPattern(i?: number): RowPatternContext | RowPatternContext[] { @@ -21619,10 +22115,10 @@ export class ExplainOptionContext extends ParserRuleContext { } export class ExplainFormatContext extends ExplainOptionContext { public _value!: Token; - public FORMAT(): TerminalNode { return this.getToken(TrinoSqlParser.FORMAT, 0); } - public TEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TEXT, 0); } - public GRAPHVIZ(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRAPHVIZ, 0); } - public JSON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.JSON, 0); } + public KW_FORMAT(): TerminalNode { return this.getToken(TrinoSqlParser.KW_FORMAT, 0); } + public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TEXT, 0); } + public KW_GRAPHVIZ(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRAPHVIZ, 0); } + public KW_JSON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_JSON, 0); } constructor(ctx: ExplainOptionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21650,11 +22146,11 @@ export class ExplainFormatContext extends ExplainOptionContext { } export class ExplainTypeContext extends ExplainOptionContext { public _value!: Token; - public TYPE(): TerminalNode { return this.getToken(TrinoSqlParser.TYPE, 0); } - public LOGICAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LOGICAL, 0); } - public DISTRIBUTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DISTRIBUTED, 0); } - public VALIDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.VALIDATE, 0); } - public IO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IO, 0); } + public KW_TYPE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_TYPE, 0); } + public KW_LOGICAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LOGICAL, 0); } + public KW_DISTRIBUTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DISTRIBUTED, 0); } + public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_VALIDATE, 0); } + public KW_IO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IO, 0); } constructor(ctx: ExplainOptionContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21693,8 +22189,8 @@ export class TransactionModeContext extends ParserRuleContext { } } export class IsolationLevelContext extends TransactionModeContext { - public ISOLATION(): TerminalNode { return this.getToken(TrinoSqlParser.ISOLATION, 0); } - public LEVEL(): TerminalNode { return this.getToken(TrinoSqlParser.LEVEL, 0); } + public KW_ISOLATION(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ISOLATION, 0); } + public KW_LEVEL(): TerminalNode { return this.getToken(TrinoSqlParser.KW_LEVEL, 0); } public levelOfIsolation(): LevelOfIsolationContext { return this.getRuleContext(0, LevelOfIsolationContext); } @@ -21725,9 +22221,9 @@ export class IsolationLevelContext extends TransactionModeContext { } export class TransactionAccessModeContext extends TransactionModeContext { public _accessMode!: Token; - public READ(): TerminalNode { return this.getToken(TrinoSqlParser.READ, 0); } - public ONLY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ONLY, 0); } - public WRITE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WRITE, 0); } + public KW_READ(): TerminalNode { return this.getToken(TrinoSqlParser.KW_READ, 0); } + public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ONLY, 0); } + public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WRITE, 0); } constructor(ctx: TransactionModeContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21766,8 +22262,8 @@ export class LevelOfIsolationContext extends ParserRuleContext { } } export class ReadUncommittedContext extends LevelOfIsolationContext { - public READ(): TerminalNode { return this.getToken(TrinoSqlParser.READ, 0); } - public UNCOMMITTED(): TerminalNode { return this.getToken(TrinoSqlParser.UNCOMMITTED, 0); } + public KW_READ(): TerminalNode { return this.getToken(TrinoSqlParser.KW_READ, 0); } + public KW_UNCOMMITTED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0); } constructor(ctx: LevelOfIsolationContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21794,8 +22290,8 @@ export class ReadUncommittedContext extends LevelOfIsolationContext { } } export class ReadCommittedContext extends LevelOfIsolationContext { - public READ(): TerminalNode { return this.getToken(TrinoSqlParser.READ, 0); } - public COMMITTED(): TerminalNode { return this.getToken(TrinoSqlParser.COMMITTED, 0); } + public KW_READ(): TerminalNode { return this.getToken(TrinoSqlParser.KW_READ, 0); } + public KW_COMMITTED(): TerminalNode { return this.getToken(TrinoSqlParser.KW_COMMITTED, 0); } constructor(ctx: LevelOfIsolationContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21822,8 +22318,8 @@ export class ReadCommittedContext extends LevelOfIsolationContext { } } export class RepeatableReadContext extends LevelOfIsolationContext { - public REPEATABLE(): TerminalNode { return this.getToken(TrinoSqlParser.REPEATABLE, 0); } - public READ(): TerminalNode { return this.getToken(TrinoSqlParser.READ, 0); } + public KW_REPEATABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0); } + public KW_READ(): TerminalNode { return this.getToken(TrinoSqlParser.KW_READ, 0); } constructor(ctx: LevelOfIsolationContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -21850,7 +22346,7 @@ export class RepeatableReadContext extends LevelOfIsolationContext { } } export class SerializableContext extends LevelOfIsolationContext { - public SERIALIZABLE(): TerminalNode { return this.getToken(TrinoSqlParser.SERIALIZABLE, 0); } + public KW_SERIALIZABLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_SERIALIZABLE, 0); } constructor(ctx: LevelOfIsolationContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -22066,10 +22562,10 @@ export class PathSpecificationContext extends ParserRuleContext { export class PrivilegeContext extends ParserRuleContext { - public SELECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SELECT, 0); } - public DELETE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DELETE, 0); } - public INSERT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INSERT, 0); } - public UPDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UPDATE, 0); } + public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SELECT, 0); } + public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DELETE, 0); } + public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INSERT, 0); } + public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UPDATE, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -22098,6 +22594,453 @@ export class PrivilegeContext extends ParserRuleContext { } +export class TableOrViewNameContext extends ParserRuleContext { + public tableName(): TableNameContext | undefined { + return this.tryGetRuleContext(0, TableNameContext); + } + public viewName(): ViewNameContext | undefined { + return this.tryGetRuleContext(0, ViewNameContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_tableOrViewName; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterTableOrViewName) { + listener.enterTableOrViewName(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitTableOrViewName) { + listener.exitTableOrViewName(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitTableOrViewName) { + return visitor.visitTableOrViewName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TableNameContext extends ParserRuleContext { + public tablePath(): TablePathContext { + return this.getRuleContext(0, TablePathContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_tableName; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterTableName) { + listener.enterTableName(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitTableName) { + listener.exitTableName(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitTableName) { + return visitor.visitTableName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TableNameCreateContext extends ParserRuleContext { + public tablePath(): TablePathContext { + return this.getRuleContext(0, TablePathContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_tableNameCreate; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterTableNameCreate) { + listener.enterTableNameCreate(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitTableNameCreate) { + listener.exitTableNameCreate(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitTableNameCreate) { + return visitor.visitTableNameCreate(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ViewNameContext extends ParserRuleContext { + public viewPath(): ViewPathContext { + return this.getRuleContext(0, ViewPathContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_viewName; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterViewName) { + listener.enterViewName(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitViewName) { + listener.exitViewName(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitViewName) { + return visitor.visitViewName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ViewNameCreateContext extends ParserRuleContext { + public viewPath(): ViewPathContext { + return this.getRuleContext(0, ViewPathContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_viewNameCreate; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterViewNameCreate) { + listener.enterViewNameCreate(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitViewNameCreate) { + listener.exitViewNameCreate(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitViewNameCreate) { + return visitor.visitViewNameCreate(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class TablePathContext extends ParserRuleContext { + public _table!: IdentifierContext; + public _schema!: IdentifierContext; + public _catalog!: IdentifierContext; + 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); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_tablePath; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterTablePath) { + listener.enterTablePath(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitTablePath) { + listener.exitTablePath(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitTablePath) { + return visitor.visitTablePath(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ViewPathContext extends ParserRuleContext { + public _view!: IdentifierContext; + public _schema!: IdentifierContext; + public _catalog!: IdentifierContext; + 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); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_viewPath; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterViewPath) { + listener.enterViewPath(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitViewPath) { + listener.exitViewPath(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitViewPath) { + return visitor.visitViewPath(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SchemaNameContext extends ParserRuleContext { + public schemaPath(): SchemaPathContext { + return this.getRuleContext(0, SchemaPathContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_schemaName; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterSchemaName) { + listener.enterSchemaName(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitSchemaName) { + listener.exitSchemaName(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitSchemaName) { + return visitor.visitSchemaName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SchemaNameCreateContext extends ParserRuleContext { + public schemaPath(): SchemaPathContext { + return this.getRuleContext(0, SchemaPathContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_schemaNameCreate; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterSchemaNameCreate) { + listener.enterSchemaNameCreate(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitSchemaNameCreate) { + listener.exitSchemaNameCreate(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitSchemaNameCreate) { + return visitor.visitSchemaNameCreate(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SchemaPathContext extends ParserRuleContext { + public _schema!: IdentifierContext; + public _catalog!: IdentifierContext; + 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); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_schemaPath; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterSchemaPath) { + listener.enterSchemaPath(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitSchemaPath) { + listener.exitSchemaPath(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitSchemaPath) { + return visitor.visitSchemaPath(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CatalogNameContext extends ParserRuleContext { + public _catalog!: IdentifierContext; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_catalogName; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterCatalogName) { + listener.enterCatalogName(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitCatalogName) { + listener.exitCatalogName(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitCatalogName) { + return visitor.visitCatalogName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CatalogNameCreateContext extends ParserRuleContext { + public _catalog!: IdentifierContext; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_catalogNameCreate; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterCatalogNameCreate) { + listener.enterCatalogNameCreate(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitCatalogNameCreate) { + listener.exitCatalogNameCreate(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitCatalogNameCreate) { + return visitor.visitCatalogNameCreate(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FunctionNameContext extends ParserRuleContext { + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return TrinoSqlParser.RULE_functionName; } + // @Override + public enterRule(listener: TrinoSqlListener): void { + if (listener.enterFunctionName) { + listener.enterFunctionName(this); + } + } + // @Override + public exitRule(listener: TrinoSqlListener): void { + if (listener.exitFunctionName) { + listener.exitFunctionName(this); + } + } + // @Override + public accept(visitor: TrinoSqlVisitor): Result { + if (visitor.visitFunctionName) { + return visitor.visitFunctionName(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class QualifiedNameContext extends ParserRuleContext { public identifier(): IdentifierContext[]; public identifier(i: number): IdentifierContext; @@ -22176,7 +23119,7 @@ export class SpecifiedPrincipalContext extends GrantorContext { } } export class CurrentUserGrantorContext extends GrantorContext { - public CURRENT_USER(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT_USER, 0); } + public KW_CURRENT_USER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT_USER, 0); } constructor(ctx: GrantorContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -22203,7 +23146,7 @@ export class CurrentUserGrantorContext extends GrantorContext { } } export class CurrentRoleGrantorContext extends GrantorContext { - public CURRENT_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.CURRENT_ROLE, 0); } + public KW_CURRENT_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_CURRENT_ROLE, 0); } constructor(ctx: GrantorContext) { super(ctx.parent, ctx.invokingState); this.copyFrom(ctx); @@ -22271,7 +23214,7 @@ export class UnspecifiedPrincipalContext extends PrincipalContext { } } export class UserPrincipalContext extends PrincipalContext { - public USER(): TerminalNode { return this.getToken(TrinoSqlParser.USER, 0); } + public KW_USER(): TerminalNode { return this.getToken(TrinoSqlParser.KW_USER, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -22301,7 +23244,7 @@ export class UserPrincipalContext extends PrincipalContext { } } export class RolePrincipalContext extends PrincipalContext { - public ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.ROLE, 0); } + public KW_ROLE(): TerminalNode { return this.getToken(TrinoSqlParser.KW_ROLE, 0); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext); } @@ -22590,165 +23533,165 @@ export class IntegerLiteralContext extends NumberContext { export class NonReservedContext extends ParserRuleContext { - public ADD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ADD, 0); } - public ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ADMIN, 0); } - public AFTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AFTER, 0); } - public ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ALL, 0); } - public ANALYZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ANALYZE, 0); } - public ANY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ANY, 0); } - public ARRAY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ARRAY, 0); } - public ASC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ASC, 0); } - public AT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AT, 0); } - public AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.AUTHORIZATION, 0); } - public BERNOULLI(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.BERNOULLI, 0); } - public CALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CALL, 0); } - public CASCADE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CASCADE, 0); } - public CATALOGS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CATALOGS, 0); } - public COLUMN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COLUMN, 0); } - public COLUMNS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COLUMNS, 0); } - public COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMENT, 0); } - public COMMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMIT, 0); } - public COMMITTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.COMMITTED, 0); } - public CURRENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.CURRENT, 0); } - public DATA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DATA, 0); } - public DATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DATE, 0); } - public DAY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DAY, 0); } - public DEFAULT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DEFAULT, 0); } - public DEFINE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DEFINE, 0); } - public DEFINER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DEFINER, 0); } - public DESC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DESC, 0); } - public DISTRIBUTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DISTRIBUTED, 0); } - public DOUBLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DOUBLE, 0); } - public EMPTY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EMPTY, 0); } - public EXCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXCLUDING, 0); } - public EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.EXPLAIN, 0); } - public FETCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FETCH, 0); } - public FILTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FILTER, 0); } - public FINAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FINAL, 0); } - public FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FIRST, 0); } - public FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FOLLOWING, 0); } - public FORMAT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FORMAT, 0); } - public FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.FUNCTIONS, 0); } - public GRANT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRANT, 0); } - public GRANTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRANTED, 0); } - public GRANTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRANTS, 0); } - public DENY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.DENY, 0); } - public GRAPHVIZ(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GRAPHVIZ, 0); } - public GROUPS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.GROUPS, 0); } - public HOUR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.HOUR, 0); } - public IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IF, 0); } - public IGNORE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IGNORE, 0); } - public INCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INCLUDING, 0); } - public INITIAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INITIAL, 0); } - public INPUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INPUT, 0); } - public INTERVAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INTERVAL, 0); } - public INVOKER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.INVOKER, 0); } - public IO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.IO, 0); } - public ISOLATION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ISOLATION, 0); } - public JSON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.JSON, 0); } - public LAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LAST, 0); } - public LATERAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LATERAL, 0); } - public LEVEL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LEVEL, 0); } - public LIMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LIMIT, 0); } - public LOCAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LOCAL, 0); } - public LOGICAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.LOGICAL, 0); } - public MAP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MAP, 0); } - public MATCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCH, 0); } - public MATCHED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCHED, 0); } - public MATCHES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCHES, 0); } - public MATCH_RECOGNIZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATCH_RECOGNIZE, 0); } - public MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MATERIALIZED, 0); } - public MEASURES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MEASURES, 0); } - public MERGE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MERGE, 0); } - public MINUTE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MINUTE, 0); } - public MONTH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.MONTH, 0); } - public NEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NEXT, 0); } - public NFC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFC, 0); } - public NFD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFD, 0); } - public NFKC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFKC, 0); } - public NFKD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NFKD, 0); } - public NO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NO, 0); } - public NONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NONE, 0); } - public NULLIF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NULLIF, 0); } - public NULLS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.NULLS, 0); } - public OFFSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OFFSET, 0); } - public OMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OMIT, 0); } - public ONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ONE, 0); } - public ONLY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ONLY, 0); } - public OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OPTION, 0); } - public ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ORDINALITY, 0); } - public OUTPUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OUTPUT, 0); } - public OVER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.OVER, 0); } - public PARTITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PARTITION, 0); } - public PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PARTITIONS, 0); } - public PAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PAST, 0); } - public PATH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PATH, 0); } - public PATTERN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PATTERN, 0); } - public PER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PER, 0); } - public PERMUTE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PERMUTE, 0); } - public POSITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.POSITION, 0); } - public PRECEDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRECEDING, 0); } - public PRECISION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRECISION, 0); } - public PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PRIVILEGES, 0); } - public PROPERTIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.PROPERTIES, 0); } - public RANGE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RANGE, 0); } - public READ(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.READ, 0); } - public REFRESH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.REFRESH, 0); } - public RENAME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RENAME, 0); } - public REPEATABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.REPEATABLE, 0); } - public REPLACE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.REPLACE, 0); } - public RESET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RESET, 0); } - public RESPECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RESPECT, 0); } - public RESTRICT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RESTRICT, 0); } - public REVOKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.REVOKE, 0); } - public ROLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROLE, 0); } - public ROLES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROLES, 0); } - public ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROLLBACK, 0); } - public ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROW, 0); } - public ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ROWS, 0); } - public RUNNING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.RUNNING, 0); } - public SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SCHEMA, 0); } - public SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SCHEMAS, 0); } - public SECOND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SECOND, 0); } - public SECURITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SECURITY, 0); } - public SEEK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SEEK, 0); } - public SERIALIZABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SERIALIZABLE, 0); } - public SESSION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SESSION, 0); } - public SET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SET, 0); } - public SETS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SETS, 0); } - public SHOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SHOW, 0); } - public SOME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SOME, 0); } - public START(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.START, 0); } - public STATS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.STATS, 0); } - public SUBSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SUBSET, 0); } - public SUBSTRING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SUBSTRING, 0); } - public SYSTEM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.SYSTEM, 0); } - public TABLES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLES, 0); } - public TABLESAMPLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TABLESAMPLE, 0); } - public TEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TEXT, 0); } - public TIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TIES, 0); } - public TIME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TIME, 0); } - public TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TIMESTAMP, 0); } - public TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TO, 0); } - public TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TRANSACTION, 0); } - public TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TRUNCATE, 0); } - public TRY_CAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TRY_CAST, 0); } - public TYPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.TYPE, 0); } - public UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UNBOUNDED, 0); } - public UNCOMMITTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UNCOMMITTED, 0); } - public UNMATCHED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UNMATCHED, 0); } - public UPDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.UPDATE, 0); } - public USE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.USE, 0); } - public USER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.USER, 0); } - public VALIDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.VALIDATE, 0); } - public VERBOSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.VERBOSE, 0); } - public VIEW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.VIEW, 0); } - public WINDOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WINDOW, 0); } - public WITHOUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WITHOUT, 0); } - public WORK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WORK, 0); } - public WRITE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.WRITE, 0); } - public YEAR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.YEAR, 0); } - public ZONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.ZONE, 0); } + public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ADD, 0); } + public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ADMIN, 0); } + public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AFTER, 0); } + public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ALL, 0); } + public KW_ANALYZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ANALYZE, 0); } + public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ANY, 0); } + public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ARRAY, 0); } + public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ASC, 0); } + public KW_AT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AT, 0); } + public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } + public KW_BERNOULLI(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_BERNOULLI, 0); } + public KW_CALL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CALL, 0); } + public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CASCADE, 0); } + public KW_CATALOGS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CATALOGS, 0); } + public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COLUMN, 0); } + public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COLUMNS, 0); } + public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMENT, 0); } + public KW_COMMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMIT, 0); } + public KW_COMMITTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_COMMITTED, 0); } + public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_CURRENT, 0); } + public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DATA, 0); } + public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DATE, 0); } + public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DAY, 0); } + public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DEFAULT, 0); } + public KW_DEFINE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DEFINE, 0); } + public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DEFINER, 0); } + public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DESC, 0); } + public KW_DISTRIBUTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DISTRIBUTED, 0); } + public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DOUBLE, 0); } + public KW_EMPTY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EMPTY, 0); } + public KW_EXCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXCLUDING, 0); } + public KW_EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_EXPLAIN, 0); } + public KW_FETCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FETCH, 0); } + public KW_FILTER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FILTER, 0); } + public KW_FINAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FINAL, 0); } + public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FIRST, 0); } + public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FOLLOWING, 0); } + public KW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FORMAT, 0); } + public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_FUNCTIONS, 0); } + public KW_GRANT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRANT, 0); } + public KW_GRANTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRANTED, 0); } + public KW_GRANTS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRANTS, 0); } + public KW_DENY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_DENY, 0); } + public KW_GRAPHVIZ(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GRAPHVIZ, 0); } + public KW_GROUPS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_GROUPS, 0); } + public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_HOUR, 0); } + public KW_IF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IF, 0); } + public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IGNORE, 0); } + public KW_INCLUDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INCLUDING, 0); } + public KW_INITIAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INITIAL, 0); } + public KW_INPUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INPUT, 0); } + public KW_INTERVAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INTERVAL, 0); } + public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_INVOKER, 0); } + public KW_IO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_IO, 0); } + public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ISOLATION, 0); } + public KW_JSON(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_JSON, 0); } + public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LAST, 0); } + public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LATERAL, 0); } + public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LEVEL, 0); } + public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LIMIT, 0); } + public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LOCAL, 0); } + public KW_LOGICAL(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_LOGICAL, 0); } + public KW_MAP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MAP, 0); } + public KW_MATCH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCH, 0); } + public KW_MATCHED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCHED, 0); } + public KW_MATCHES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCHES, 0); } + public KW_MATCH_RECOGNIZE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATCH_RECOGNIZE, 0); } + public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MATERIALIZED, 0); } + public KW_MEASURES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MEASURES, 0); } + public KW_MERGE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MERGE, 0); } + public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MINUTE, 0); } + public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_MONTH, 0); } + public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NEXT, 0); } + public KW_NFC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFC, 0); } + public KW_NFD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFD, 0); } + public KW_NFKC(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFKC, 0); } + public KW_NFKD(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NFKD, 0); } + public KW_NO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NO, 0); } + public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NONE, 0); } + public KW_NULLIF(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NULLIF, 0); } + public KW_NULLS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_NULLS, 0); } + public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OFFSET, 0); } + public KW_OMIT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OMIT, 0); } + public KW_ONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ONE, 0); } + public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ONLY, 0); } + public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OPTION, 0); } + public KW_ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ORDINALITY, 0); } + public KW_OUTPUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OUTPUT, 0); } + public KW_OVER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_OVER, 0); } + public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PARTITION, 0); } + public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PARTITIONS, 0); } + public KW_PAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PAST, 0); } + public KW_PATH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PATH, 0); } + public KW_PATTERN(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PATTERN, 0); } + public KW_PER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PER, 0); } + public KW_PERMUTE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PERMUTE, 0); } + public KW_POSITION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_POSITION, 0); } + public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRECEDING, 0); } + public KW_PRECISION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRECISION, 0); } + public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PRIVILEGES, 0); } + public KW_PROPERTIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_PROPERTIES, 0); } + public KW_RANGE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RANGE, 0); } + public KW_READ(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_READ, 0); } + public KW_REFRESH(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_REFRESH, 0); } + public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_REPEATABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_REPEATABLE, 0); } + public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_REPLACE, 0); } + public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RESET, 0); } + public KW_RESPECT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RESPECT, 0); } + public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RESTRICT, 0); } + public KW_REVOKE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_REVOKE, 0); } + public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROLE, 0); } + public KW_ROLES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROLES, 0); } + public KW_ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROLLBACK, 0); } + public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROW, 0); } + public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ROWS, 0); } + public KW_RUNNING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_RUNNING, 0); } + public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SCHEMA, 0); } + public KW_SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SCHEMAS, 0); } + public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SECOND, 0); } + public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SECURITY, 0); } + public KW_SEEK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SEEK, 0); } + public KW_SERIALIZABLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SERIALIZABLE, 0); } + public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SESSION, 0); } + public KW_SET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SET, 0); } + public KW_SETS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SETS, 0); } + public KW_SHOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SHOW, 0); } + public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SOME, 0); } + public KW_START(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_START, 0); } + public KW_STATS(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_STATS, 0); } + public KW_SUBSET(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SUBSET, 0); } + public KW_SUBSTRING(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SUBSTRING, 0); } + public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_SYSTEM, 0); } + public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLES, 0); } + public KW_TABLESAMPLE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TABLESAMPLE, 0); } + public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TEXT, 0); } + public KW_TIES(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TIES, 0); } + public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TIME, 0); } + public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TIMESTAMP, 0); } + public KW_TO(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TO, 0); } + public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TRANSACTION, 0); } + public KW_TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TRUNCATE, 0); } + public KW_TRY_CAST(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TRY_CAST, 0); } + public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_TYPE, 0); } + public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UNBOUNDED, 0); } + public KW_UNCOMMITTED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UNCOMMITTED, 0); } + public KW_UNMATCHED(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UNMATCHED, 0); } + public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_UPDATE, 0); } + public KW_USE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_USE, 0); } + public KW_USER(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_USER, 0); } + public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_VALIDATE, 0); } + public KW_VERBOSE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_VERBOSE, 0); } + public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_VIEW, 0); } + public KW_WINDOW(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WINDOW, 0); } + public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WITHOUT, 0); } + public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WORK, 0); } + public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_WRITE, 0); } + public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_YEAR, 0); } + public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(TrinoSqlParser.KW_ZONE, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } diff --git a/src/lib/trinosql/TrinoSqlVisitor.ts b/src/lib/trinosql/TrinoSqlVisitor.ts index d86274e..d2e3aa9 100644 --- a/src/lib/trinosql/TrinoSqlVisitor.ts +++ b/src/lib/trinosql/TrinoSqlVisitor.ts @@ -1,9 +1,9 @@ -// Generated from /Users/ziv/github.com/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT +// Generated from /Users/hayden/Desktop/dt-works/dt-sql-parser/src/grammar/trinosql/TrinoSql.g4 by ANTLR 4.9.0-SNAPSHOT import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; -import { TableNameContext } from "./TrinoSqlParser"; +import { TableOrViewRelationContext } from "./TrinoSqlParser"; import { SubqueryRelationContext } from "./TrinoSqlParser"; import { UnnestContext } from "./TrinoSqlParser"; import { LateralContext } from "./TrinoSqlParser"; @@ -42,10 +42,6 @@ import { GroupedPatternContext } from "./TrinoSqlParser"; import { PartitionStartAnchorContext } from "./TrinoSqlParser"; import { PartitionEndAnchorContext } from "./TrinoSqlParser"; import { ExcludedPatternContext } from "./TrinoSqlParser"; -import { ZeroOrMoreQuantifierContext } from "./TrinoSqlParser"; -import { OneOrMoreQuantifierContext } from "./TrinoSqlParser"; -import { ZeroOrOneQuantifierContext } from "./TrinoSqlParser"; -import { RangeQuantifierContext } from "./TrinoSqlParser"; import { DefaultPropertyValueContext } from "./TrinoSqlParser"; import { NonDefaultPropertyValueContext } from "./TrinoSqlParser"; import { ExplainFormatContext } from "./TrinoSqlParser"; @@ -54,29 +50,78 @@ import { SingleGroupingSetContext } from "./TrinoSqlParser"; import { RollupContext } from "./TrinoSqlParser"; import { CubeContext } from "./TrinoSqlParser"; import { MultipleGroupingSetsContext } from "./TrinoSqlParser"; -import { ReadUncommittedContext } from "./TrinoSqlParser"; -import { ReadCommittedContext } from "./TrinoSqlParser"; -import { RepeatableReadContext } from "./TrinoSqlParser"; -import { SerializableContext } from "./TrinoSqlParser"; import { ValueExpressionDefaultContext } from "./TrinoSqlParser"; import { AtTimeZoneContext } from "./TrinoSqlParser"; import { ArithmeticUnaryContext } from "./TrinoSqlParser"; import { ArithmeticBinaryContext } from "./TrinoSqlParser"; import { ConcatenationContext } from "./TrinoSqlParser"; -import { BasicStringLiteralContext } from "./TrinoSqlParser"; -import { UnicodeStringLiteralContext } from "./TrinoSqlParser"; import { QuantifiedPrimaryContext } from "./TrinoSqlParser"; import { PatternConcatenationContext } from "./TrinoSqlParser"; import { PatternAlternationContext } from "./TrinoSqlParser"; import { SpecifiedPrincipalContext } from "./TrinoSqlParser"; import { CurrentUserGrantorContext } from "./TrinoSqlParser"; import { CurrentRoleGrantorContext } from "./TrinoSqlParser"; -import { UnspecifiedPrincipalContext } from "./TrinoSqlParser"; -import { UserPrincipalContext } from "./TrinoSqlParser"; -import { RolePrincipalContext } from "./TrinoSqlParser"; import { UnboundedFrameContext } from "./TrinoSqlParser"; import { CurrentRowBoundContext } from "./TrinoSqlParser"; import { BoundedFrameContext } from "./TrinoSqlParser"; +import { QueryPrimaryDefaultContext } from "./TrinoSqlParser"; +import { TableContext } from "./TrinoSqlParser"; +import { InlineTableContext } from "./TrinoSqlParser"; +import { SubqueryContext } from "./TrinoSqlParser"; +import { NullLiteralContext } from "./TrinoSqlParser"; +import { IntervalLiteralContext } from "./TrinoSqlParser"; +import { TypeConstructorContext } from "./TrinoSqlParser"; +import { NumericLiteralContext } from "./TrinoSqlParser"; +import { BooleanLiteralContext } from "./TrinoSqlParser"; +import { StringLiteralContext } from "./TrinoSqlParser"; +import { BinaryLiteralContext } from "./TrinoSqlParser"; +import { ParameterContext } from "./TrinoSqlParser"; +import { PositionContext } from "./TrinoSqlParser"; +import { RowConstructorContext } from "./TrinoSqlParser"; +import { FunctionCallContext } from "./TrinoSqlParser"; +import { MeasureContext } from "./TrinoSqlParser"; +import { LambdaContext } from "./TrinoSqlParser"; +import { SubqueryExpressionContext } from "./TrinoSqlParser"; +import { ExistsContext } from "./TrinoSqlParser"; +import { SimpleCaseContext } from "./TrinoSqlParser"; +import { SearchedCaseContext } from "./TrinoSqlParser"; +import { CastContext } from "./TrinoSqlParser"; +import { ArrayConstructorContext } from "./TrinoSqlParser"; +import { SubscriptContext } from "./TrinoSqlParser"; +import { ColumnReferenceContext } from "./TrinoSqlParser"; +import { DereferenceContext } from "./TrinoSqlParser"; +import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser"; +import { CurrentUserContext } from "./TrinoSqlParser"; +import { CurrentCatalogContext } from "./TrinoSqlParser"; +import { CurrentSchemaContext } from "./TrinoSqlParser"; +import { CurrentPathContext } from "./TrinoSqlParser"; +import { SubstringContext } from "./TrinoSqlParser"; +import { NormalizeContext } from "./TrinoSqlParser"; +import { ExtractContext } from "./TrinoSqlParser"; +import { ParenthesizedExpressionContext } from "./TrinoSqlParser"; +import { GroupingOperationContext } from "./TrinoSqlParser"; +import { SelectSingleContext } from "./TrinoSqlParser"; +import { SelectAllContext } from "./TrinoSqlParser"; +import { QualifiedArgumentContext } from "./TrinoSqlParser"; +import { UnqualifiedArgumentContext } from "./TrinoSqlParser"; +import { PositionalArgumentContext } from "./TrinoSqlParser"; +import { NamedArgumentContext } from "./TrinoSqlParser"; +import { MergeUpdateContext } from "./TrinoSqlParser"; +import { MergeDeleteContext } from "./TrinoSqlParser"; +import { MergeInsertContext } from "./TrinoSqlParser"; +import { ZeroOrMoreQuantifierContext } from "./TrinoSqlParser"; +import { OneOrMoreQuantifierContext } from "./TrinoSqlParser"; +import { ZeroOrOneQuantifierContext } from "./TrinoSqlParser"; +import { RangeQuantifierContext } from "./TrinoSqlParser"; +import { ReadUncommittedContext } from "./TrinoSqlParser"; +import { ReadCommittedContext } from "./TrinoSqlParser"; +import { RepeatableReadContext } from "./TrinoSqlParser"; +import { SerializableContext } from "./TrinoSqlParser"; +import { BasicStringLiteralContext } from "./TrinoSqlParser"; +import { UnicodeStringLiteralContext } from "./TrinoSqlParser"; +import { UnspecifiedPrincipalContext } from "./TrinoSqlParser"; +import { UserPrincipalContext } from "./TrinoSqlParser"; +import { RolePrincipalContext } from "./TrinoSqlParser"; import { StatementDefaultContext } from "./TrinoSqlParser"; import { UseContext } from "./TrinoSqlParser"; import { CreateSchemaContext } from "./TrinoSqlParser"; @@ -151,56 +196,11 @@ import { ShowTableCommentContext } from "./TrinoSqlParser"; import { ShowColumnCommentContext } from "./TrinoSqlParser"; import { TimeZoneIntervalContext } from "./TrinoSqlParser"; import { TimeZoneStringContext } from "./TrinoSqlParser"; -import { QueryPrimaryDefaultContext } from "./TrinoSqlParser"; -import { TableContext } from "./TrinoSqlParser"; -import { InlineTableContext } from "./TrinoSqlParser"; -import { SubqueryContext } from "./TrinoSqlParser"; -import { NullLiteralContext } from "./TrinoSqlParser"; -import { IntervalLiteralContext } from "./TrinoSqlParser"; -import { TypeConstructorContext } from "./TrinoSqlParser"; -import { NumericLiteralContext } from "./TrinoSqlParser"; -import { BooleanLiteralContext } from "./TrinoSqlParser"; -import { StringLiteralContext } from "./TrinoSqlParser"; -import { BinaryLiteralContext } from "./TrinoSqlParser"; -import { ParameterContext } from "./TrinoSqlParser"; -import { PositionContext } from "./TrinoSqlParser"; -import { RowConstructorContext } from "./TrinoSqlParser"; -import { FunctionCallContext } from "./TrinoSqlParser"; -import { MeasureContext } from "./TrinoSqlParser"; -import { LambdaContext } from "./TrinoSqlParser"; -import { SubqueryExpressionContext } from "./TrinoSqlParser"; -import { ExistsContext } from "./TrinoSqlParser"; -import { SimpleCaseContext } from "./TrinoSqlParser"; -import { SearchedCaseContext } from "./TrinoSqlParser"; -import { CastContext } from "./TrinoSqlParser"; -import { ArrayConstructorContext } from "./TrinoSqlParser"; -import { SubscriptContext } from "./TrinoSqlParser"; -import { ColumnReferenceContext } from "./TrinoSqlParser"; -import { DereferenceContext } from "./TrinoSqlParser"; -import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser"; -import { CurrentUserContext } from "./TrinoSqlParser"; -import { CurrentCatalogContext } from "./TrinoSqlParser"; -import { CurrentSchemaContext } from "./TrinoSqlParser"; -import { CurrentPathContext } from "./TrinoSqlParser"; -import { SubstringContext } from "./TrinoSqlParser"; -import { NormalizeContext } from "./TrinoSqlParser"; -import { ExtractContext } from "./TrinoSqlParser"; -import { ParenthesizedExpressionContext } from "./TrinoSqlParser"; -import { GroupingOperationContext } from "./TrinoSqlParser"; import { IsolationLevelContext } from "./TrinoSqlParser"; import { TransactionAccessModeContext } from "./TrinoSqlParser"; -import { SelectSingleContext } from "./TrinoSqlParser"; -import { SelectAllContext } from "./TrinoSqlParser"; import { PredicatedContext } from "./TrinoSqlParser"; import { LogicalNotContext } from "./TrinoSqlParser"; import { LogicalBinaryContext } from "./TrinoSqlParser"; -import { QualifiedArgumentContext } from "./TrinoSqlParser"; -import { UnqualifiedArgumentContext } from "./TrinoSqlParser"; -import { PositionalArgumentContext } from "./TrinoSqlParser"; -import { NamedArgumentContext } from "./TrinoSqlParser"; -import { MergeUpdateContext } from "./TrinoSqlParser"; -import { MergeDeleteContext } from "./TrinoSqlParser"; -import { MergeInsertContext } from "./TrinoSqlParser"; import { ProgramContext } from "./TrinoSqlParser"; import { StatementsContext } from "./TrinoSqlParser"; import { SingleStatementContext } from "./TrinoSqlParser"; @@ -284,6 +284,19 @@ import { CallArgumentContext } from "./TrinoSqlParser"; import { PathElementContext } from "./TrinoSqlParser"; import { PathSpecificationContext } from "./TrinoSqlParser"; import { PrivilegeContext } from "./TrinoSqlParser"; +import { TableOrViewNameContext } from "./TrinoSqlParser"; +import { TableNameContext } from "./TrinoSqlParser"; +import { TableNameCreateContext } from "./TrinoSqlParser"; +import { ViewNameContext } from "./TrinoSqlParser"; +import { ViewNameCreateContext } from "./TrinoSqlParser"; +import { TablePathContext } from "./TrinoSqlParser"; +import { ViewPathContext } from "./TrinoSqlParser"; +import { SchemaNameContext } from "./TrinoSqlParser"; +import { SchemaNameCreateContext } from "./TrinoSqlParser"; +import { SchemaPathContext } from "./TrinoSqlParser"; +import { CatalogNameContext } from "./TrinoSqlParser"; +import { CatalogNameCreateContext } from "./TrinoSqlParser"; +import { FunctionNameContext } from "./TrinoSqlParser"; import { QualifiedNameContext } from "./TrinoSqlParser"; import { GrantorContext } from "./TrinoSqlParser"; import { PrincipalContext } from "./TrinoSqlParser"; @@ -302,12 +315,12 @@ import { NonReservedContext } from "./TrinoSqlParser"; */ export interface TrinoSqlVisitor extends ParseTreeVisitor { /** - * Visit a parse tree produced by the `tableName` + * Visit a parse tree produced by the `tableOrViewRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree * @return the visitor result */ - visitTableName?: (ctx: TableNameContext) => Result; + visitTableOrViewRelation?: (ctx: TableOrViewRelationContext) => Result; /** * Visit a parse tree produced by the `subqueryRelation` @@ -613,38 +626,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitExcludedPattern?: (ctx: ExcludedPatternContext) => Result; - /** - * Visit a parse tree produced by the `zeroOrMoreQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - * @return the visitor result - */ - visitZeroOrMoreQuantifier?: (ctx: ZeroOrMoreQuantifierContext) => Result; - - /** - * Visit a parse tree produced by the `oneOrMoreQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOneOrMoreQuantifier?: (ctx: OneOrMoreQuantifierContext) => Result; - - /** - * Visit a parse tree produced by the `zeroOrOneQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - * @return the visitor result - */ - visitZeroOrOneQuantifier?: (ctx: ZeroOrOneQuantifierContext) => Result; - - /** - * Visit a parse tree produced by the `rangeQuantifier` - * labeled alternative in `TrinoSqlParser.patternQuantifier`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRangeQuantifier?: (ctx: RangeQuantifierContext) => Result; - /** * Visit a parse tree produced by the `defaultPropertyValue` * labeled alternative in `TrinoSqlParser.propertyValue`. @@ -709,38 +690,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitMultipleGroupingSets?: (ctx: MultipleGroupingSetsContext) => Result; - /** - * Visit a parse tree produced by the `readUncommitted` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReadUncommitted?: (ctx: ReadUncommittedContext) => Result; - - /** - * Visit a parse tree produced by the `readCommitted` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReadCommitted?: (ctx: ReadCommittedContext) => Result; - - /** - * Visit a parse tree produced by the `repeatableRead` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRepeatableRead?: (ctx: RepeatableReadContext) => Result; - - /** - * Visit a parse tree produced by the `serializable` - * labeled alternative in `TrinoSqlParser.levelOfIsolation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSerializable?: (ctx: SerializableContext) => Result; - /** * Visit a parse tree produced by the `valueExpressionDefault` * labeled alternative in `TrinoSqlParser.valueExpression`. @@ -781,22 +730,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitConcatenation?: (ctx: ConcatenationContext) => Result; - /** - * Visit a parse tree produced by the `basicStringLiteral` - * labeled alternative in `TrinoSqlParser.string`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBasicStringLiteral?: (ctx: BasicStringLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `unicodeStringLiteral` - * labeled alternative in `TrinoSqlParser.string`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUnicodeStringLiteral?: (ctx: UnicodeStringLiteralContext) => Result; - /** * Visit a parse tree produced by the `quantifiedPrimary` * labeled alternative in `TrinoSqlParser.rowPattern`. @@ -845,30 +778,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitCurrentRoleGrantor?: (ctx: CurrentRoleGrantorContext) => Result; - /** - * Visit a parse tree produced by the `unspecifiedPrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUnspecifiedPrincipal?: (ctx: UnspecifiedPrincipalContext) => Result; - - /** - * Visit a parse tree produced by the `userPrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUserPrincipal?: (ctx: UserPrincipalContext) => Result; - - /** - * Visit a parse tree produced by the `rolePrincipal` - * labeled alternative in `TrinoSqlParser.principal`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRolePrincipal?: (ctx: RolePrincipalContext) => Result; - /** * Visit a parse tree produced by the `unboundedFrame` * labeled alternative in `TrinoSqlParser.frameBound`. @@ -893,6 +802,470 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitBoundedFrame?: (ctx: BoundedFrameContext) => Result; + /** + * Visit a parse tree produced by the `queryPrimaryDefault` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQueryPrimaryDefault?: (ctx: QueryPrimaryDefaultContext) => Result; + + /** + * Visit a parse tree produced by the `table` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTable?: (ctx: TableContext) => Result; + + /** + * Visit a parse tree produced by the `inlineTable` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitInlineTable?: (ctx: InlineTableContext) => Result; + + /** + * Visit a parse tree produced by the `subquery` + * labeled alternative in `TrinoSqlParser.queryPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSubquery?: (ctx: SubqueryContext) => Result; + + /** + * Visit a parse tree produced by the `nullLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNullLiteral?: (ctx: NullLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `intervalLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIntervalLiteral?: (ctx: IntervalLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `typeConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTypeConstructor?: (ctx: TypeConstructorContext) => Result; + + /** + * Visit a parse tree produced by the `numericLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNumericLiteral?: (ctx: NumericLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `booleanLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBooleanLiteral?: (ctx: BooleanLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `stringLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStringLiteral?: (ctx: StringLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `binaryLiteral` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBinaryLiteral?: (ctx: BinaryLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `parameter` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitParameter?: (ctx: ParameterContext) => Result; + + /** + * Visit a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPosition?: (ctx: PositionContext) => Result; + + /** + * Visit a parse tree produced by the `rowConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRowConstructor?: (ctx: RowConstructorContext) => Result; + + /** + * Visit a parse tree produced by the `functionCall` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionCall?: (ctx: FunctionCallContext) => Result; + + /** + * Visit a parse tree produced by the `measure` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMeasure?: (ctx: MeasureContext) => Result; + + /** + * Visit a parse tree produced by the `lambda` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLambda?: (ctx: LambdaContext) => Result; + + /** + * Visit a parse tree produced by the `subqueryExpression` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSubqueryExpression?: (ctx: SubqueryExpressionContext) => Result; + + /** + * Visit a parse tree produced by the `exists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExists?: (ctx: ExistsContext) => Result; + + /** + * Visit a parse tree produced by the `simpleCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSimpleCase?: (ctx: SimpleCaseContext) => Result; + + /** + * Visit a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSearchedCase?: (ctx: SearchedCaseContext) => Result; + + /** + * Visit a parse tree produced by the `cast` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCast?: (ctx: CastContext) => Result; + + /** + * Visit a parse tree produced by the `arrayConstructor` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitArrayConstructor?: (ctx: ArrayConstructorContext) => Result; + + /** + * Visit a parse tree produced by the `subscript` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSubscript?: (ctx: SubscriptContext) => Result; + + /** + * Visit a parse tree produced by the `columnReference` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitColumnReference?: (ctx: ColumnReferenceContext) => Result; + + /** + * Visit a parse tree produced by the `dereference` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDereference?: (ctx: DereferenceContext) => Result; + + /** + * Visit a parse tree produced by the `specialDateTimeFunction` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => Result; + + /** + * Visit a parse tree produced by the `currentUser` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentUser?: (ctx: CurrentUserContext) => Result; + + /** + * Visit a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentCatalog?: (ctx: CurrentCatalogContext) => Result; + + /** + * Visit a parse tree produced by the `currentSchema` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentSchema?: (ctx: CurrentSchemaContext) => Result; + + /** + * Visit a parse tree produced by the `currentPath` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentPath?: (ctx: CurrentPathContext) => Result; + + /** + * Visit a parse tree produced by the `substring` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSubstring?: (ctx: SubstringContext) => Result; + + /** + * Visit a parse tree produced by the `normalize` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNormalize?: (ctx: NormalizeContext) => Result; + + /** + * Visit a parse tree produced by the `extract` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExtract?: (ctx: ExtractContext) => Result; + + /** + * Visit a parse tree produced by the `parenthesizedExpression` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result; + + /** + * Visit a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitGroupingOperation?: (ctx: GroupingOperationContext) => Result; + + /** + * Visit a parse tree produced by the `selectSingle` + * labeled alternative in `TrinoSqlParser.selectItem`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSelectSingle?: (ctx: SelectSingleContext) => Result; + + /** + * Visit a parse tree produced by the `selectAll` + * labeled alternative in `TrinoSqlParser.selectItem`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSelectAll?: (ctx: SelectAllContext) => Result; + + /** + * Visit a parse tree produced by the `qualifiedArgument` + * labeled alternative in `TrinoSqlParser.pathElement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQualifiedArgument?: (ctx: QualifiedArgumentContext) => Result; + + /** + * Visit a parse tree produced by the `unqualifiedArgument` + * labeled alternative in `TrinoSqlParser.pathElement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnqualifiedArgument?: (ctx: UnqualifiedArgumentContext) => Result; + + /** + * Visit a parse tree produced by the `positionalArgument` + * labeled alternative in `TrinoSqlParser.callArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPositionalArgument?: (ctx: PositionalArgumentContext) => Result; + + /** + * Visit a parse tree produced by the `namedArgument` + * labeled alternative in `TrinoSqlParser.callArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNamedArgument?: (ctx: NamedArgumentContext) => Result; + + /** + * Visit a parse tree produced by the `mergeUpdate` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMergeUpdate?: (ctx: MergeUpdateContext) => Result; + + /** + * Visit a parse tree produced by the `mergeDelete` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMergeDelete?: (ctx: MergeDeleteContext) => Result; + + /** + * Visit a parse tree produced by the `mergeInsert` + * labeled alternative in `TrinoSqlParser.mergeCase`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMergeInsert?: (ctx: MergeInsertContext) => Result; + + /** + * Visit a parse tree produced by the `zeroOrMoreQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitZeroOrMoreQuantifier?: (ctx: ZeroOrMoreQuantifierContext) => Result; + + /** + * Visit a parse tree produced by the `oneOrMoreQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitOneOrMoreQuantifier?: (ctx: OneOrMoreQuantifierContext) => Result; + + /** + * Visit a parse tree produced by the `zeroOrOneQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitZeroOrOneQuantifier?: (ctx: ZeroOrOneQuantifierContext) => Result; + + /** + * Visit a parse tree produced by the `rangeQuantifier` + * labeled alternative in `TrinoSqlParser.patternQuantifier`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRangeQuantifier?: (ctx: RangeQuantifierContext) => Result; + + /** + * Visit a parse tree produced by the `readUncommitted` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitReadUncommitted?: (ctx: ReadUncommittedContext) => Result; + + /** + * Visit a parse tree produced by the `readCommitted` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitReadCommitted?: (ctx: ReadCommittedContext) => Result; + + /** + * Visit a parse tree produced by the `repeatableRead` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRepeatableRead?: (ctx: RepeatableReadContext) => Result; + + /** + * Visit a parse tree produced by the `serializable` + * labeled alternative in `TrinoSqlParser.levelOfIsolation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSerializable?: (ctx: SerializableContext) => Result; + + /** + * Visit a parse tree produced by the `basicStringLiteral` + * labeled alternative in `TrinoSqlParser.string`. + * @param ctx the parse tree + * @return the visitor result + */ + visitBasicStringLiteral?: (ctx: BasicStringLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `unicodeStringLiteral` + * labeled alternative in `TrinoSqlParser.string`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnicodeStringLiteral?: (ctx: UnicodeStringLiteralContext) => Result; + + /** + * Visit a parse tree produced by the `unspecifiedPrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnspecifiedPrincipal?: (ctx: UnspecifiedPrincipalContext) => Result; + + /** + * Visit a parse tree produced by the `userPrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUserPrincipal?: (ctx: UserPrincipalContext) => Result; + + /** + * Visit a parse tree produced by the `rolePrincipal` + * labeled alternative in `TrinoSqlParser.principal`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRolePrincipal?: (ctx: RolePrincipalContext) => Result; + /** * Visit a parse tree produced by the `statementDefault` * labeled alternative in `TrinoSqlParser.statement`. @@ -1485,294 +1858,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitTimeZoneString?: (ctx: TimeZoneStringContext) => Result; - /** - * Visit a parse tree produced by the `queryPrimaryDefault` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - * @return the visitor result - */ - visitQueryPrimaryDefault?: (ctx: QueryPrimaryDefaultContext) => Result; - - /** - * Visit a parse tree produced by the `table` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTable?: (ctx: TableContext) => Result; - - /** - * Visit a parse tree produced by the `inlineTable` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInlineTable?: (ctx: InlineTableContext) => Result; - - /** - * Visit a parse tree produced by the `subquery` - * labeled alternative in `TrinoSqlParser.queryPrimary`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSubquery?: (ctx: SubqueryContext) => Result; - - /** - * Visit a parse tree produced by the `nullLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNullLiteral?: (ctx: NullLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `intervalLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIntervalLiteral?: (ctx: IntervalLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `typeConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTypeConstructor?: (ctx: TypeConstructorContext) => Result; - - /** - * Visit a parse tree produced by the `numericLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNumericLiteral?: (ctx: NumericLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `booleanLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBooleanLiteral?: (ctx: BooleanLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `stringLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStringLiteral?: (ctx: StringLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `binaryLiteral` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBinaryLiteral?: (ctx: BinaryLiteralContext) => Result; - - /** - * Visit a parse tree produced by the `parameter` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitParameter?: (ctx: ParameterContext) => Result; - - /** - * Visit a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPosition?: (ctx: PositionContext) => Result; - - /** - * Visit a parse tree produced by the `rowConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRowConstructor?: (ctx: RowConstructorContext) => Result; - - /** - * Visit a parse tree produced by the `functionCall` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunctionCall?: (ctx: FunctionCallContext) => Result; - - /** - * Visit a parse tree produced by the `measure` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitMeasure?: (ctx: MeasureContext) => Result; - - /** - * Visit a parse tree produced by the `lambda` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitLambda?: (ctx: LambdaContext) => Result; - - /** - * Visit a parse tree produced by the `subqueryExpression` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSubqueryExpression?: (ctx: SubqueryExpressionContext) => Result; - - /** - * Visit a parse tree produced by the `exists` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExists?: (ctx: ExistsContext) => Result; - - /** - * Visit a parse tree produced by the `simpleCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSimpleCase?: (ctx: SimpleCaseContext) => Result; - - /** - * Visit a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSearchedCase?: (ctx: SearchedCaseContext) => Result; - - /** - * Visit a parse tree produced by the `cast` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCast?: (ctx: CastContext) => Result; - - /** - * Visit a parse tree produced by the `arrayConstructor` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitArrayConstructor?: (ctx: ArrayConstructorContext) => Result; - - /** - * Visit a parse tree produced by the `subscript` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSubscript?: (ctx: SubscriptContext) => Result; - - /** - * Visit a parse tree produced by the `columnReference` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitColumnReference?: (ctx: ColumnReferenceContext) => Result; - - /** - * Visit a parse tree produced by the `dereference` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDereference?: (ctx: DereferenceContext) => Result; - - /** - * Visit a parse tree produced by the `specialDateTimeFunction` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => Result; - - /** - * Visit a parse tree produced by the `currentUser` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCurrentUser?: (ctx: CurrentUserContext) => Result; - - /** - * Visit a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCurrentCatalog?: (ctx: CurrentCatalogContext) => Result; - - /** - * Visit a parse tree produced by the `currentSchema` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCurrentSchema?: (ctx: CurrentSchemaContext) => Result; - - /** - * Visit a parse tree produced by the `currentPath` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCurrentPath?: (ctx: CurrentPathContext) => Result; - - /** - * Visit a parse tree produced by the `substring` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSubstring?: (ctx: SubstringContext) => Result; - - /** - * Visit a parse tree produced by the `normalize` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNormalize?: (ctx: NormalizeContext) => Result; - - /** - * Visit a parse tree produced by the `extract` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExtract?: (ctx: ExtractContext) => Result; - - /** - * Visit a parse tree produced by the `parenthesizedExpression` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result; - - /** - * Visit a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGroupingOperation?: (ctx: GroupingOperationContext) => Result; - /** * Visit a parse tree produced by the `isolationLevel` * labeled alternative in `TrinoSqlParser.transactionMode`. @@ -1789,22 +1874,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitTransactionAccessMode?: (ctx: TransactionAccessModeContext) => Result; - /** - * Visit a parse tree produced by the `selectSingle` - * labeled alternative in `TrinoSqlParser.selectItem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelectSingle?: (ctx: SelectSingleContext) => Result; - - /** - * Visit a parse tree produced by the `selectAll` - * labeled alternative in `TrinoSqlParser.selectItem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelectAll?: (ctx: SelectAllContext) => Result; - /** * Visit a parse tree produced by the `predicated` * labeled alternative in `TrinoSqlParser.booleanExpression`. @@ -1829,62 +1898,6 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitLogicalBinary?: (ctx: LogicalBinaryContext) => Result; - /** - * Visit a parse tree produced by the `qualifiedArgument` - * labeled alternative in `TrinoSqlParser.pathElement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitQualifiedArgument?: (ctx: QualifiedArgumentContext) => Result; - - /** - * Visit a parse tree produced by the `unqualifiedArgument` - * labeled alternative in `TrinoSqlParser.pathElement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUnqualifiedArgument?: (ctx: UnqualifiedArgumentContext) => Result; - - /** - * Visit a parse tree produced by the `positionalArgument` - * labeled alternative in `TrinoSqlParser.callArgument`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPositionalArgument?: (ctx: PositionalArgumentContext) => Result; - - /** - * Visit a parse tree produced by the `namedArgument` - * labeled alternative in `TrinoSqlParser.callArgument`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNamedArgument?: (ctx: NamedArgumentContext) => Result; - - /** - * Visit a parse tree produced by the `mergeUpdate` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitMergeUpdate?: (ctx: MergeUpdateContext) => Result; - - /** - * Visit a parse tree produced by the `mergeDelete` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitMergeDelete?: (ctx: MergeDeleteContext) => Result; - - /** - * Visit a parse tree produced by the `mergeInsert` - * labeled alternative in `TrinoSqlParser.mergeCase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitMergeInsert?: (ctx: MergeInsertContext) => Result; - /** * Visit a parse tree produced by `TrinoSqlParser.program`. * @param ctx the parse tree @@ -2466,6 +2479,97 @@ export interface TrinoSqlVisitor extends ParseTreeVisitor { */ visitPrivilege?: (ctx: PrivilegeContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableOrViewName?: (ctx: TableOrViewNameContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.tableName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableName?: (ctx: TableNameContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.viewName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewName?: (ctx: ViewNameContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.tablePath`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTablePath?: (ctx: TablePathContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.viewPath`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewPath?: (ctx: ViewPathContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSchemaName?: (ctx: SchemaNameContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaPath`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSchemaPath?: (ctx: SchemaPathContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.catalogName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCatalogName?: (ctx: CatalogNameContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.catalogNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCatalogNameCreate?: (ctx: CatalogNameCreateContext) => Result; + + /** + * Visit a parse tree produced by `TrinoSqlParser.functionName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionName?: (ctx: FunctionNameContext) => Result; + /** * Visit a parse tree produced by `TrinoSqlParser.qualifiedName`. * @param ctx the parse tree diff --git a/src/parser/trinosql.ts b/src/parser/trinosql.ts index 9c8dddc..d475312 100644 --- a/src/parser/trinosql.ts +++ b/src/parser/trinosql.ts @@ -1,9 +1,10 @@ import { Token } from 'antlr4ts'; import { CandidatesCollection } from 'antlr4-c3'; import { TrinoSqlLexer } from '../lib/trinosql/TrinoSqlLexer'; -import { TrinoSqlParser, ProgramContext } from '../lib/trinosql/TrinoSqlParser'; +import { TrinoSqlParser, ProgramContext, StatementContext } from '../lib/trinosql/TrinoSqlParser'; +import { TrinoSqlListener } from '../lib/trinosql/TrinoSqlListener'; import BasicParser from './common/basicParser'; -import { Suggestions } from './common/basic-parser-types'; +import { Suggestions, SyntaxContextType, SyntaxSuggestion } from './common/basic-parser-types'; export default class TrinoSQL extends BasicParser { protected createLexerFormCharStream(charStreams) { @@ -17,19 +18,110 @@ export default class TrinoSQL extends BasicParser = new Set(); + protected preferredRules: Set = new Set([ + TrinoSqlParser.RULE_catalogName, + TrinoSqlParser.RULE_catalogNameCreate, + TrinoSqlParser.RULE_schemaName, + TrinoSqlParser.RULE_schemaNameCreate, + TrinoSqlParser.RULE_tableName, + TrinoSqlParser.RULE_tableNameCreate, + TrinoSqlParser.RULE_viewName, + TrinoSqlParser.RULE_viewNameCreate, + TrinoSqlParser.RULE_functionName, + ]); protected processCandidates( candidates: CandidatesCollection, allTokens: Token[], - caretTokenIndex: number + caretTokenIndex: number, + tokenIndexOffset: number ): Suggestions { + const originalSyntaxSuggestions: SyntaxSuggestion[] = []; + const keywords: string[] = []; + + for (let candidate of candidates.rules) { + const [ruleType, candidateRule] = candidate; + const startTokenIndex = candidateRule.startTokenIndex + tokenIndexOffset; + const tokenRanges = allTokens.slice( + startTokenIndex, + caretTokenIndex + tokenIndexOffset + 1 + ); + + let syntaxContextType: SyntaxContextType; + switch (ruleType) { + case TrinoSqlParser.RULE_catalogName: { + syntaxContextType = SyntaxContextType.CATALOG; + break; + } + case TrinoSqlParser.RULE_schemaName: { + syntaxContextType = SyntaxContextType.DATABASE; + break; + } + case TrinoSqlParser.RULE_schemaNameCreate: { + syntaxContextType = SyntaxContextType.DATABASE_CREATE; + break; + } + case TrinoSqlParser.RULE_tableName: { + syntaxContextType = SyntaxContextType.TABLE; + break; + } + case TrinoSqlParser.RULE_tableNameCreate: { + syntaxContextType = SyntaxContextType.TABLE_CREATE; + break; + } + case TrinoSqlParser.RULE_viewName: { + syntaxContextType = SyntaxContextType.VIEW; + break; + } + case TrinoSqlParser.RULE_viewNameCreate: { + syntaxContextType = SyntaxContextType.VIEW_CREATE; + break; + } + case TrinoSqlParser.RULE_functionName: { + syntaxContextType = SyntaxContextType.FUNCTION; + break; + } + default: + break; + } + + if (syntaxContextType) { + originalSyntaxSuggestions.push({ + syntaxContextType, + wordRanges: tokenRanges, + }); + } + } + + for (let candidate of candidates.tokens) { + const symbolicName = this._parser.vocabulary.getSymbolicName(candidate[0]); + const displayName = this._parser.vocabulary.getDisplayName(candidate[0]); + if (symbolicName && symbolicName.startsWith('KW_')) { + const keyword = + displayName.startsWith("'") && displayName.endsWith("'") + ? displayName.slice(1, -1) + : displayName; + keywords.push(keyword); + } + } return { - syntax: [], - keywords: [], + syntax: originalSyntaxSuggestions, + keywords, }; } } + +export class TrinoSqlSplitListener implements TrinoSqlListener { + private _statementsContext: StatementContext[] = []; + + exitStatement = (ctx: StatementContext) => { + this._statementsContext.push(ctx); + }; + + get statementsContext() { + return this._statementsContext; + } +} diff --git a/test/helper.ts b/test/helper.ts index 5438edf..90b8b35 100644 --- a/test/helper.ts +++ b/test/helper.ts @@ -68,3 +68,15 @@ export function getReportTableHeader(title: string) { export function exportReportTable(markdown: string, output: string) { fs.writeFileSync(path.join(output, 'benchmark.md'), markdown); } + +export function commentOtherLine(sqlContent: string, line: number) { + const slices = sqlContent.split('\n').map((item, index) => { + if (index !== line - 1) { + return '-- ' + item; + } else { + return item; + } + }); + + return slices.join('\n'); +} diff --git a/test/parser/flinksql/suggestion/syntaxSuggestion.test.ts b/test/parser/flinksql/suggestion/syntaxSuggestion.test.ts index b2c78cc..fd5ad95 100644 --- a/test/parser/flinksql/suggestion/syntaxSuggestion.test.ts +++ b/test/parser/flinksql/suggestion/syntaxSuggestion.test.ts @@ -55,7 +55,7 @@ describe('Flink SQL Syntax Suggestion', () => { const suggestion = syntaxes?.find( (syn) => syn.syntaxContextType === SyntaxContextType.TABLE ); - console.log(syntaxes); + expect(suggestion).not.toBeUndefined(); expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['cat', '.']); }); diff --git a/test/parser/trinosql/suggestion/fixtures/syntaxSuggestion.sql b/test/parser/trinosql/suggestion/fixtures/syntaxSuggestion.sql new file mode 100644 index 0000000..409baac --- /dev/null +++ b/test/parser/trinosql/suggestion/fixtures/syntaxSuggestion.sql @@ -0,0 +1,19 @@ +INSERT INTO db.tb ; + +SELECT ids FROM db.; + +CREATE TABLE db. VALUES; + +DROP TABLE IF EXISTS db.a; + +CREATE OR REPLACE VIEW db.v; + +DROP VIEW db.v ; + +SELECT name, calculate_age(birthday) AS age FROM students; + +CREATE SCHEMA db ; + +DROP SCHEMA IF EXISTS sch; + +SHOW COLUMNS FROM tb ; \ No newline at end of file diff --git a/test/parser/trinosql/suggestion/fixtures/tokenSuggestion.sql b/test/parser/trinosql/suggestion/fixtures/tokenSuggestion.sql new file mode 100644 index 0000000..9ff940d --- /dev/null +++ b/test/parser/trinosql/suggestion/fixtures/tokenSuggestion.sql @@ -0,0 +1,13 @@ +ALTER ; + +CREATE ; + +DEALLOCATE ; + +DELETE ; + +DESCRIBE ; + +DROP ; + +INSERT ; diff --git a/test/parser/trinosql/suggestion/syntaxSuggestion.test.ts b/test/parser/trinosql/suggestion/syntaxSuggestion.test.ts new file mode 100644 index 0000000..dc4a6c6 --- /dev/null +++ b/test/parser/trinosql/suggestion/syntaxSuggestion.test.ts @@ -0,0 +1,201 @@ +import fs from 'fs'; +import path from 'path'; +import { CaretPosition, SyntaxContextType } from '../../../../src/parser/common/basic-parser-types'; +import TrinoSQL from '../../../../src/parser/trinosql'; +import { commentOtherLine } from '../../../helper'; + +const syntaxSql = fs.readFileSync( + path.join(__dirname, 'fixtures', 'syntaxSuggestion.sql'), + 'utf-8' +); + +describe('Trino SQL Syntax Suggestion', () => { + const parser = new TrinoSQL(); + + test('Validate Syntax SQL', () => { + expect(parser.validate(syntaxSql).length).not.toBe(0); + expect(parser.validate(syntaxSql).length).not.toBe(0); + expect(parser.validate(syntaxSql).length).not.toBe(0); + }); + + test('Insert table ', () => { + const pos: CaretPosition = { + lineNumber: 1, + column: 18, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.TABLE + ); + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db', '.', 'tb']); + }); + + test('Select table ', () => { + const pos: CaretPosition = { + lineNumber: 3, + column: 20, + }; + const syntaxes = + parser.getSuggestionAtCaretPosition(commentOtherLine(syntaxSql, pos.lineNumber), pos) + ?.syntax ?? []; + + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.TABLE + ); + + expect( + syntaxes.some((item) => item.syntaxContextType === SyntaxContextType.VIEW) + ).toBeTruthy(); + expect( + syntaxes.some((item) => item.syntaxContextType === SyntaxContextType.FUNCTION) + ).toBeTruthy(); + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db', '.']); + }); + + test('Create table ', () => { + const pos: CaretPosition = { + lineNumber: 5, + column: 17, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.TABLE_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db', '.']); + }); + + test('DROP table ', () => { + const pos: CaretPosition = { + lineNumber: 7, + column: 26, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.TABLE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db', '.', 'a']); + }); + + test('Create view ', () => { + const pos: CaretPosition = { + lineNumber: 9, + column: 28, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.VIEW_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db', '.', 'v']); + }); + + test('Drop view ', () => { + const pos: CaretPosition = { + lineNumber: 11, + column: 15, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.VIEW + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db', '.', 'v']); + }); + + test('Use function', () => { + const pos: CaretPosition = { + lineNumber: 13, + column: 27, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.FUNCTION + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['calculate_age']); + }); + + test('Create schema', () => { + const pos: CaretPosition = { + lineNumber: 15, + column: 17, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.DATABASE_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['db']); + }); + + test('Drop schema', () => { + const pos: CaretPosition = { + lineNumber: 17, + column: 26, + }; + const syntaxes = parser.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.DATABASE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['sch']); + }); + + test('Show Column From', () => { + const pos: CaretPosition = { + lineNumber: 19, + column: 21, + }; + const syntaxes = + parser.getSuggestionAtCaretPosition(commentOtherLine(syntaxSql, pos.lineNumber), pos) + ?.syntax ?? []; + + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === SyntaxContextType.TABLE + ); + expect( + syntaxes.some((item) => item.syntaxContextType === SyntaxContextType.VIEW) + ).toBeTruthy(); + expect( + syntaxes.some((item) => item.syntaxContextType === SyntaxContextType.FUNCTION) + ).toBeTruthy(); + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['tb']); + }); +}); diff --git a/test/parser/trinosql/suggestion/tokenSuggestion.test.ts b/test/parser/trinosql/suggestion/tokenSuggestion.test.ts new file mode 100644 index 0000000..dfec69c --- /dev/null +++ b/test/parser/trinosql/suggestion/tokenSuggestion.test.ts @@ -0,0 +1,99 @@ +import fs from 'fs'; +import path from 'path'; +import { CaretPosition } from '../../../../src/parser/common/basic-parser-types'; +import TrinoSQL from '../../../../src/parser/trinosql'; +import { commentOtherLine } from '../../../helper'; + +const tokenSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'tokenSuggestion.sql'), 'utf-8'); + +describe('Trino SQL Token Suggestion', () => { + const parser = new TrinoSQL(); + + test('After ALTER', () => { + const pos: CaretPosition = { + lineNumber: 1, + column: 7, + }; + const suggestion = parser.getSuggestionAtCaretPosition(tokenSql, pos)?.keywords; + + expect(suggestion).toEqual(['VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA']); + }); + + test('After CREATE', () => { + const pos: CaretPosition = { + lineNumber: 3, + column: 8, + }; + const suggestion = parser.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toEqual(['ROLE', 'VIEW', 'OR', 'MATERIALIZED', 'TABLE', 'SCHEMA']); + }); + + test('After DEALLOCATE', () => { + const pos: CaretPosition = { + lineNumber: 5, + column: 12, + }; + const suggestion = parser.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toEqual(['PREPARE']); + }); + + test('After DELETE', () => { + const pos: CaretPosition = { + lineNumber: 7, + column: 8, + }; + const suggestion = parser.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toEqual(['FROM']); + }); + + test('After DESCRIBE', () => { + const pos: CaretPosition = { + lineNumber: 9, + column: 10, + }; + const suggestion = parser.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toEqual(['OUTPUT', 'INPUT']); + }); + + test('After DROP', () => { + const pos: CaretPosition = { + lineNumber: 11, + column: 6, + }; + const suggestion = parser.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toEqual(['ROLE', 'VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA']); + }); + + test('After INSERT', () => { + const pos: CaretPosition = { + lineNumber: 13, + column: 8, + }; + const suggestion = parser.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toEqual(['INTO']); + }); +});