UNPKG

dt-sql-parser

Version:

SQL Parsers for BigData, built with antlr4

44,895 lines • 1.73 MB
// Generated from dt-sql-parser/src/grammar/hive/HiveSqlParser.g4 by ANTLR 4.13.1
// @ts-nocheck
import * as antlr from "antlr4ng";
import { SQLParserBase } from '../SQLParserBase';
export class HiveSqlParser extends SQLParserBase {
    get grammarFileName() { return "HiveSqlParser.g4"; }
    get literalNames() { return HiveSqlParser.literalNames; }
    get symbolicNames() { return HiveSqlParser.symbolicNames; }
    get ruleNames() { return HiveSqlParser.ruleNames; }
    get serializedATN() { return HiveSqlParser._serializedATN; }
    createFailedPredicateException(predicate, message) {
        return new antlr.FailedPredicateException(this, predicate, message);
    }
    constructor(input) {
        super(input);
        this.interpreter = new antlr.ParserATNSimulator(this, HiveSqlParser._ATN, HiveSqlParser.decisionsToDFA, new antlr.PredictionContextCache());
    }
    program() {
        let localContext = new ProgramContext(this.context, this.state);
        this.enterRule(localContext, 0, HiveSqlParser.RULE_program);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 699;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1538) !== 0) || _la === 48 || _la === 58 || ((((_la - 86)) & ~0x1F) === 0 && ((1 << (_la - 86)) & 540050201) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 17825795) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8388865) !== 0) || ((((_la - 187)) & ~0x1F) === 0 && ((1 << (_la - 187)) & 33622025) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 810024961) !== 0) || ((((_la - 283)) & ~0x1F) === 0 && ((1 << (_la - 283)) & 35717185) !== 0) || _la === 318 || ((((_la - 351)) & ~0x1F) === 0 && ((1 << (_la - 351)) & 8537089) !== 0) || _la === 387 || _la === 399) {
                    {
                        {
                            this.state = 696;
                            this.statement();
                        }
                    }
                    this.state = 701;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 702;
                this.match(HiveSqlParser.EOF);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    statement() {
        let localContext = new StatementContext(this.context, this.state);
        this.enterRule(localContext, 2, HiveSqlParser.RULE_statement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 706;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_EXPLAIN:
                        {
                            this.state = 704;
                            this.explainStatement();
                        }
                        break;
                    case HiveSqlParser.KW_ABORT:
                    case HiveSqlParser.KW_ALTER:
                    case HiveSqlParser.KW_ANALYZE:
                    case HiveSqlParser.KW_COMMIT:
                    case HiveSqlParser.KW_CREATE:
                    case HiveSqlParser.KW_DELETE:
                    case HiveSqlParser.KW_DESC:
                    case HiveSqlParser.KW_DESCRIBE:
                    case HiveSqlParser.KW_DISABLE:
                    case HiveSqlParser.KW_DISABLED:
                    case HiveSqlParser.KW_DROP:
                    case HiveSqlParser.KW_ENABLE:
                    case HiveSqlParser.KW_ENABLED:
                    case HiveSqlParser.KW_EXECUTE:
                    case HiveSqlParser.KW_EXPORT:
                    case HiveSqlParser.KW_FROM:
                    case HiveSqlParser.KW_GRANT:
                    case HiveSqlParser.KW_IMPORT:
                    case HiveSqlParser.KW_INSERT:
                    case HiveSqlParser.KW_KILL:
                    case HiveSqlParser.KW_LOAD:
                    case HiveSqlParser.KW_LOCK:
                    case HiveSqlParser.KW_MAP:
                    case HiveSqlParser.KW_MERGE:
                    case HiveSqlParser.KW_MSCK:
                    case HiveSqlParser.KW_PREPARE:
                    case HiveSqlParser.KW_REDUCE:
                    case HiveSqlParser.KW_RELOAD:
                    case HiveSqlParser.KW_REPL:
                    case HiveSqlParser.KW_REPLACE:
                    case HiveSqlParser.KW_REVOKE:
                    case HiveSqlParser.KW_ROLLBACK:
                    case HiveSqlParser.KW_SELECT:
                    case HiveSqlParser.KW_SET:
                    case HiveSqlParser.KW_SHOW:
                    case HiveSqlParser.KW_START:
                    case HiveSqlParser.KW_TRUNCATE:
                    case HiveSqlParser.KW_UNLOCK:
                    case HiveSqlParser.KW_UPDATE:
                    case HiveSqlParser.KW_USE:
                    case HiveSqlParser.KW_VALUES:
                    case HiveSqlParser.KW_WITH:
                    case HiveSqlParser.LPAREN:
                        {
                            this.state = 705;
                            this.execStatement();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 709;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context)) {
                    case 1:
                        {
                            this.state = 708;
                            this.match(HiveSqlParser.SEMICOLON);
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    explainStatement() {
        let localContext = new ExplainStatementContext(this.context, this.state);
        this.enterRule(localContext, 4, HiveSqlParser.RULE_explainStatement);
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 711;
                this.match(HiveSqlParser.KW_EXPLAIN);
                this.state = 721;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_ABORT:
                    case HiveSqlParser.KW_ALTER:
                    case HiveSqlParser.KW_ANALYZE:
                    case HiveSqlParser.KW_AST:
                    case HiveSqlParser.KW_AUTHORIZATION:
                    case HiveSqlParser.KW_CBO:
                    case HiveSqlParser.KW_COMMIT:
                    case HiveSqlParser.KW_CREATE:
                    case HiveSqlParser.KW_DDL:
                    case HiveSqlParser.KW_DEBUG:
                    case HiveSqlParser.KW_DELETE:
                    case HiveSqlParser.KW_DEPENDENCY:
                    case HiveSqlParser.KW_DESC:
                    case HiveSqlParser.KW_DESCRIBE:
                    case HiveSqlParser.KW_DISABLE:
                    case HiveSqlParser.KW_DISABLED:
                    case HiveSqlParser.KW_DROP:
                    case HiveSqlParser.KW_ENABLE:
                    case HiveSqlParser.KW_ENABLED:
                    case HiveSqlParser.KW_EXECUTE:
                    case HiveSqlParser.KW_EXPORT:
                    case HiveSqlParser.KW_EXTENDED:
                    case HiveSqlParser.KW_FORMATTED:
                    case HiveSqlParser.KW_FROM:
                    case HiveSqlParser.KW_GRANT:
                    case HiveSqlParser.KW_IMPORT:
                    case HiveSqlParser.KW_INSERT:
                    case HiveSqlParser.KW_KILL:
                    case HiveSqlParser.KW_LOAD:
                    case HiveSqlParser.KW_LOCK:
                    case HiveSqlParser.KW_LOCKS:
                    case HiveSqlParser.KW_LOGICAL:
                    case HiveSqlParser.KW_MAP:
                    case HiveSqlParser.KW_MERGE:
                    case HiveSqlParser.KW_MSCK:
                    case HiveSqlParser.KW_PREPARE:
                    case HiveSqlParser.KW_REDUCE:
                    case HiveSqlParser.KW_RELOAD:
                    case HiveSqlParser.KW_REOPTIMIZATION:
                    case HiveSqlParser.KW_REPL:
                    case HiveSqlParser.KW_REPLACE:
                    case HiveSqlParser.KW_REVOKE:
                    case HiveSqlParser.KW_ROLLBACK:
                    case HiveSqlParser.KW_SELECT:
                    case HiveSqlParser.KW_SET:
                    case HiveSqlParser.KW_SHOW:
                    case HiveSqlParser.KW_START:
                    case HiveSqlParser.KW_TRUNCATE:
                    case HiveSqlParser.KW_UNLOCK:
                    case HiveSqlParser.KW_UPDATE:
                    case HiveSqlParser.KW_USE:
                    case HiveSqlParser.KW_VALUES:
                    case HiveSqlParser.KW_VECTORIZATION:
                    case HiveSqlParser.KW_WITH:
                    case HiveSqlParser.LPAREN:
                        {
                            this.state = 715;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
                            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                                if (alternative === 1) {
                                    {
                                        {
                                            this.state = 712;
                                            this.explainOption();
                                        }
                                    }
                                }
                                this.state = 717;
                                this.errorHandler.sync(this);
                                alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
                            }
                            this.state = 718;
                            this.execStatement();
                        }
                        break;
                    case HiveSqlParser.KW_REWRITE:
                        {
                            this.state = 719;
                            this.match(HiveSqlParser.KW_REWRITE);
                            this.state = 720;
                            this.queryStatementExpression();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    explainOption() {
        let localContext = new ExplainOptionContext(this.context, this.state);
        this.enterRule(localContext, 6, HiveSqlParser.RULE_explainOption);
        let _la;
        try {
            this.state = 745;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_EXTENDED:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 723;
                        this.match(HiveSqlParser.KW_EXTENDED);
                    }
                    break;
                case HiveSqlParser.KW_FORMATTED:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 724;
                        this.match(HiveSqlParser.KW_FORMATTED);
                    }
                    break;
                case HiveSqlParser.KW_DEPENDENCY:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 725;
                        this.match(HiveSqlParser.KW_DEPENDENCY);
                    }
                    break;
                case HiveSqlParser.KW_CBO:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 726;
                        this.match(HiveSqlParser.KW_CBO);
                        this.state = 728;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 57 || _la === 172) {
                            {
                                this.state = 727;
                                _la = this.tokenStream.LA(1);
                                if (!(_la === 57 || _la === 172)) {
                                    this.errorHandler.recoverInline(this);
                                }
                                else {
                                    this.errorHandler.reportMatch(this);
                                    this.consume();
                                }
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_LOGICAL:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 730;
                        this.match(HiveSqlParser.KW_LOGICAL);
                    }
                    break;
                case HiveSqlParser.KW_AUTHORIZATION:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 731;
                        this.match(HiveSqlParser.KW_AUTHORIZATION);
                    }
                    break;
                case HiveSqlParser.KW_ANALYZE:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 732;
                        this.match(HiveSqlParser.KW_ANALYZE);
                    }
                    break;
                case HiveSqlParser.KW_REOPTIMIZATION:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 733;
                        this.match(HiveSqlParser.KW_REOPTIMIZATION);
                    }
                    break;
                case HiveSqlParser.KW_LOCKS:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 734;
                        this.match(HiveSqlParser.KW_LOCKS);
                    }
                    break;
                case HiveSqlParser.KW_AST:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 735;
                        this.match(HiveSqlParser.KW_AST);
                    }
                    break;
                case HiveSqlParser.KW_VECTORIZATION:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 736;
                        this.match(HiveSqlParser.KW_VECTORIZATION);
                        this.state = 738;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 225) {
                            {
                                this.state = 737;
                                this.match(HiveSqlParser.KW_ONLY);
                            }
                        }
                        this.state = 741;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 91 || _la === 121 || _la === 226 || _la === 325) {
                            {
                                this.state = 740;
                                this.vectorizationDetail();
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_DEBUG:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 743;
                        this.match(HiveSqlParser.KW_DEBUG);
                    }
                    break;
                case HiveSqlParser.KW_DDL:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 744;
                        this.match(HiveSqlParser.KW_DDL);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    vectorizationDetail() {
        let localContext = new VectorizationDetailContext(this.context, this.state);
        this.enterRule(localContext, 8, HiveSqlParser.RULE_vectorizationDetail);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 747;
                _la = this.tokenStream.LA(1);
                if (!(_la === 91 || _la === 121 || _la === 226 || _la === 325)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    execStatement() {
        let localContext = new ExecStatementContext(this.context, this.state);
        this.enterRule(localContext, 10, HiveSqlParser.RULE_execStatement);
        let _la;
        try {
            let alternative;
            this.state = 820;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 17, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 749;
                        this.queryStatementExpression();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 750;
                        this.loadStatement();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 751;
                        this.exportStatement();
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 752;
                        this.importStatement();
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 753;
                        this.replDumpStatement();
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 754;
                        this.replLoadStatement();
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 755;
                        this.match(HiveSqlParser.KW_REPL);
                        this.state = 756;
                        this.match(HiveSqlParser.KW_STATUS);
                        this.state = 757;
                        localContext._dbName = this.dbSchemaName();
                        this.state = 760;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context)) {
                            case 1:
                                {
                                    this.state = 758;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 759;
                                    localContext._replConf = this.keyValueProperties();
                                }
                                break;
                        }
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 762;
                        this.ddlStatement();
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 763;
                        this.match(HiveSqlParser.KW_DELETE);
                        this.state = 764;
                        this.match(HiveSqlParser.KW_FROM);
                        this.state = 765;
                        this.tableName();
                        this.state = 767;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 384) {
                            {
                                this.state = 766;
                                this.whereClause();
                            }
                        }
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 769;
                        this.match(HiveSqlParser.KW_UPDATE);
                        this.state = 770;
                        this.tableName();
                        this.state = 771;
                        this.setColumnsClause();
                        this.state = 773;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 384) {
                            {
                                this.state = 772;
                                this.whereClause();
                            }
                        }
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 775;
                        this.sqlTransactionStatement();
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 776;
                        this.match(HiveSqlParser.KW_MERGE);
                        this.state = 778;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 436) {
                            {
                                this.state = 777;
                                this.match(HiveSqlParser.QUERY_HINT);
                            }
                        }
                        this.state = 780;
                        this.match(HiveSqlParser.KW_INTO);
                        this.state = 781;
                        this.tableName();
                        this.state = 786;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                            {
                                this.state = 783;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                                if (_la === 17) {
                                    {
                                        this.state = 782;
                                        this.match(HiveSqlParser.KW_AS);
                                    }
                                }
                                this.state = 785;
                                this.id_();
                            }
                        }
                        this.state = 788;
                        this.match(HiveSqlParser.KW_USING);
                        this.state = 789;
                        this.joinSourcePart();
                        this.state = 790;
                        this.match(HiveSqlParser.KW_ON);
                        this.state = 791;
                        this.expression();
                        this.state = 792;
                        this.whenClauses();
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 794;
                        this.match(HiveSqlParser.KW_PREPARE);
                        this.state = 795;
                        this.id_();
                        this.state = 796;
                        this.match(HiveSqlParser.KW_FROM);
                        this.state = 797;
                        this.queryStatementExpression();
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 799;
                        this.match(HiveSqlParser.KW_EXECUTE);
                        this.state = 800;
                        this.id_();
                        this.state = 801;
                        this.match(HiveSqlParser.KW_USING);
                        this.state = 802;
                        this.constantList();
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 804;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 805;
                        this.configPropertiesItem();
                        this.state = 810;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 395 || _la === 396) {
                            {
                                {
                                    this.state = 806;
                                    _la = this.tokenStream.LA(1);
                                    if (!(_la === 395 || _la === 396)) {
                                        this.errorHandler.recoverInline(this);
                                    }
                                    else {
                                        this.errorHandler.reportMatch(this);
                                        this.consume();
                                    }
                                    this.state = 807;
                                    this.configPropertiesItem();
                                }
                            }
                            this.state = 812;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                        this.state = 813;
                        this.match(HiveSqlParser.EQUAL);
                        this.state = 817;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 16, this.context);
                        while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                            if (alternative === 1 + 1) {
                                {
                                    {
                                        this.state = 814;
                                        this.matchWildcard();
                                    }
                                }
                            }
                            this.state = 819;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 16, this.context);
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    loadStatement() {
        let localContext = new LoadStatementContext(this.context, this.state);
        this.enterRule(localContext, 12, HiveSqlParser.RULE_loadStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 822;
                this.match(HiveSqlParser.KW_LOAD);
                this.state = 823;
                this.match(HiveSqlParser.KW_DATA);
                this.state = 825;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 188) {
                    {
                        this.state = 824;
                        this.match(HiveSqlParser.KW_LOCAL);
                    }
                }
                this.state = 827;
                this.match(HiveSqlParser.KW_INPATH);
                this.state = 828;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 830;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 235) {
                    {
                        this.state = 829;
                        this.match(HiveSqlParser.KW_OVERWRITE);
                    }
                }
                this.state = 832;
                this.match(HiveSqlParser.KW_INTO);
                this.state = 833;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 834;
                this.tableOrPartition();
                this.state = 836;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 160) {
                    {
                        this.state = 835;
                        this.inputFileFormat();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    replicationClause() {
        let localContext = new ReplicationClauseContext(this.context, this.state);
        this.enterRule(localContext, 14, HiveSqlParser.RULE_replicationClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 838;
                this.match(HiveSqlParser.KW_FOR);
                this.state = 840;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 204) {
                    {
                        this.state = 839;
                        this.match(HiveSqlParser.KW_METADATA);
                    }
                }
                this.state = 842;
                this.match(HiveSqlParser.KW_REPLICATION);
                this.state = 843;
                this.match(HiveSqlParser.LPAREN);
                this.state = 844;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 845;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    exportStatement() {
        let localContext = new ExportStatementContext(this.context, this.state);
        this.enterRule(localContext, 16, HiveSqlParser.RULE_exportStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 847;
                this.match(HiveSqlParser.KW_EXPORT);
                this.state = 848;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 849;
                this.tableOrPartition();
                this.state = 850;
                this.match(HiveSqlParser.KW_TO);
                this.state = 851;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 853;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 134) {
                    {
                        this.state = 852;
                        this.replicationClause();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    importStatement() {
        let localContext = new ImportStatementContext(this.context, this.state);
        this.enterRule(localContext, 18, HiveSqlParser.RULE_importStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 855;
                this.match(HiveSqlParser.KW_IMPORT);
                this.state = 861;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 123 || _la === 329) {
                    {
                        this.state = 857;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 123) {
                            {
                                this.state = 856;
                                this.match(HiveSqlParser.KW_EXTERNAL);
                            }
                        }
                        this.state = 859;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 860;
                        this.tableOrPartition();
                    }
                }
                this.state = 863;
                this.match(HiveSqlParser.KW_FROM);
                this.state = 864;
                localContext._path = this.match(HiveSqlParser.StringLiteral);
                this.state = 866;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 189) {
                    {
                        this.state = 865;
                        this.locationPath();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    replDumpStatement() {
        let localContext = new ReplDumpStatementContext(this.context, this.state);
        this.enterRule(localContext, 20, HiveSqlParser.RULE_replDumpStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 868;
                this.match(HiveSqlParser.KW_REPL);
                this.state = 869;
                this.match(HiveSqlParser.KW_DUMP);
                this.state = 870;
                localContext._dbPolicy = this.replDbPolicy();
                this.state = 873;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context)) {
                    case 1:
                        {
                            this.state = 871;
                            this.match(HiveSqlParser.KW_REPLACE);
                            this.state = 872;
                            localContext._oldDbPolicy = this.replDbPolicy();
                        }
                        break;
                }
                this.state = 877;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 27, this.context)) {
                    case 1:
                        {
                            this.state = 875;
                            this.match(HiveSqlParser.KW_WITH);
                            this.state = 876;
                            localContext._replConf = this.keyValueProperties();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    replDbPolicy() {
        let localContext = new ReplDbPolicyContext(this.context, this.state);
        this.enterRule(localContext, 22, HiveSqlParser.RULE_replDbPolicy);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 879;
                localContext._dbName = this.dbSchemaName();
                this.state = 882;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 395) {
                    {
                        this.state = 880;
                        this.match(HiveSqlParser.DOT);
                        this.state = 881;
                        localContext._tablePolicy = this.replTableLevelPolicy();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    replLoadStatement() {
        let localContext = new ReplLoadStatementContext(this.context, this.state);
        this.enterRule(localContext, 24, HiveSqlParser.RULE_replLoadStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 884;
                this.match(HiveSqlParser.KW_REPL);
                this.state = 885;
                this.match(HiveSqlParser.KW_LOAD);
                this.state = 886;
                localContext._sourceDbPolicy = this.replDbPolicy();
                this.state = 889;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 166) {
                    {
                        this.state = 887;
                        this.match(HiveSqlParser.KW_INTO);
                        this.state = 888;
                        localContext._dbName = this.dbSchemaName();
                    }
                }
                this.state = 893;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context)) {
                    case 1:
                        {
                            this.state = 891;
                            this.match(HiveSqlParser.KW_WITH);
                            this.state = 892;
                            localContext._replConf = this.keyValueProperties();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    replTableLevelPolicy() {
        let localContext = new ReplTableLevelPolicyContext(this.context, this.state);
        this.enterRule(localContext, 26, HiveSqlParser.RULE_replTableLevelPolicy);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 895;
                localContext._replTablesIncludeList = this.match(HiveSqlParser.StringLiteral);
                this.state = 898;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 395) {
                    {
                        this.state = 896;
                        this.match(HiveSqlParser.DOT);
                        this.state = 897;
                        localContext._replTablesExcludeList = this.match(HiveSqlParser.StringLiteral);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    ddlStatement() {
        let localContext = new DdlStatementContext(this.context, this.state);
        this.enterRule(localContext, 28, HiveSqlParser.RULE_ddlStatement);
        let _la;
        try {
            this.state = 958;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 900;
                        this.createDatabaseStatement();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 901;
                        this.switchDatabaseStatement();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 902;
                        this.dropDatabaseStatement();
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 903;
                        this.createTableStatement();
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 904;
                        this.dropTableStatement();
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 905;
                        this.truncateTableStatement();
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 906;
                        this.alterStatement();
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 907;
                        this.descStatement();
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 908;
                        this.showStatement();
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 909;
                        this.metastoreCheck();
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 910;
                        this.createViewStatement();
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 911;
                        this.createMaterializedViewStatement();
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 912;
                        this.createScheduledQueryStatement();
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 913;
                        this.alterScheduledQueryStatement();
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 914;
                        this.dropScheduledQueryStatement();
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 915;
                        this.dropViewStatement();
                    }
                    break;
                case 17:
                    this.enterOuterAlt(localContext, 17);
                    {
                        this.state = 916;
                        this.dropMaterializedViewStatement();
                    }
                    break;
                case 18:
                    this.enterOuterAlt(localContext, 18);
                    {
                        this.state = 917;
                        this.createFunctionStatement();
                    }
                    break;
                case 19:
                    this.enterOuterAlt(localContext, 19);
                    {
                        this.state = 918;
                        this.createMacroStatement();
                    }
                    break;
                case 20:
                    this.enterOuterAlt(localContext, 20);
                    {
                        this.state = 919;
                        this.dropFunctionStatement();
                    }
                    break;
                case 21:
                    this.enterOuterAlt(localContext, 21);
                    {
                        this.state = 920;
                        this.reloadFunctionsStatement();
                    }
                    break;
                case 22:
                    this.enterOuterAlt(localContext, 22);
                    {
                        this.state = 921;
                        this.dropMacroStatement();
                    }
                    break;
                case 23:
                    this.enterOuterAlt(localContext, 23);
                    {
                        this.state = 922;
                        this.createIndexStatement();
                    }
                    break;
                case 24:
                    this.enterOuterAlt(localContext, 24);
                    {
                        this.state = 923;
                        this.dropIndexStatement();
                    }
                    break;
                case 25:
                    this.enterOuterAlt(localContext, 25);
                    {
                        this.state = 924;
                        this.analyzeStatement();
                    }
                    break;
                case 26:
                    this.enterOuterAlt(localContext, 26);
                    {
                        this.state = 925;
                        this.lockStatement();
                    }
                    break;
                case 27:
                    this.enterOuterAlt(localContext, 27);
                    {
                        this.state = 926;
                        this.unlockStatement();
                    }
                    break;
                case 28:
                    this.enterOuterAlt(localContext, 28);
                    {
                        this.state = 927;
                        this.lockDatabase();
                    }
                    break;
                case 29:
                    this.enterOuterAlt(localContext, 29);
                    {
                        this.state = 928;
                        this.unlockDatabase();
                    }
                    break;
                case 30:
                    this.enterOuterAlt(localContext, 30);
                    {
                        this.state = 929;
                        this.createRoleStatement();
                    }
                    break;
                case 31:
                    this.enterOuterAlt(localContext, 31);
                    {
                        this.state = 930;
                        this.dropRoleStatement();
                    }
                    break;
                case 32:
                    this.enterOuterAlt(localContext, 32);
                    {
                        this.state = 931;
                        this.grantPrivileges();
                    }
                    break;
                case 33:
                    this.enterOuterAlt(localContext, 33);
                    {
                        this.state = 932;
                        this.revokePrivileges();
                    }
                    break;
                case 34:
                    this.enterOuterAlt(localContext, 34);
                    {
                        this.state = 933;
                        this.showGrants();
                    }
                    break;
                case 35:
                    this.enterOuterAlt(localContext, 35);
                    {
                        this.state = 934;
                        this.showRoleGrants();
                    }
                    break;
                case 36:
                    this.enterOuterAlt(localContext, 36);
                    {
                        this.state = 935;
                        this.showRolePrincipals();
                    }
                    break;
                case 37:
                    this.enterOuterAlt(localContext, 37);
                    {
                        this.state = 936;
                        this.showRoles();
                    }
                    break;
                case 38:
                    this.enterOuterAlt(localContext, 38);
                    {
                        this.state = 937;
                        this.grantRole();
                    }
                    break;
                case 39:
                    this.enterOuterAlt(localContext, 39);
                    {
                        this.state = 938;
                        this.revokeRole();
                    }
                    break;
                case 40:
                    this.enterOuterAlt(localContext, 40);
                    {
                        this.state = 939;
                        this.setRole();
                    }
                    break;
                case 41:
                    this.enterOuterAlt(localContext, 41);
                    {
                        this.state = 940;
                        this.showCurrentRole();
                    }
                    break;
                case 42:
                    this.enterOuterAlt(localContext, 42);
                    {
                        this.state = 941;
                        this.match(HiveSqlParser.KW_ABORT);
                        this.state = 942;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 50 || _la === 346)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 944;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        do {
                            {
                                {
                                    this.state = 943;
                                    this.match(HiveSqlParser.Number);
                                }
                            }
                            this.state = 946;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        } while (_la === 431);
                    }
                    break;
                case 43:
                    this.enterOuterAlt(localContext, 43);
                    {
                        this.state = 948;
                        this.match(HiveSqlParser.KW_KILL);
                        this.state = 949;
                        this.match(HiveSqlParser.KW_QUERY);
                        this.state = 951;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        do {
                            {
                                {
                                    this.state = 950;
                                    this.match(HiveSqlParser.StringLiteral);
                                }
                            }
                            this.state = 953;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        } while (_la === 426);
                    }
                    break;
                case 44:
                    this.enterOuterAlt(localContext, 44);
                    {
                        this.state = 955;
                        this.resourcePlanDdlStatements();
                    }
                    break;
                case 45:
                    this.enterOuterAlt(localContext, 45);
                    {
                        this.state = 956;
                        this.createDataConnectorStatement();
                    }
                    break;
                case 46:
                    this.enterOuterAlt(localContext, 46);
                    {
                        this.state = 957;
                        this.dropDataConnectorStatement();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    ifExists() {
        let localContext = new IfExistsContext(this.context, this.state);
        this.enterRule(localContext, 30, HiveSqlParser.RULE_ifExists);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 960;
                this.match(HiveSqlParser.KW_IF);
                this.state = 961;
                this.match(HiveSqlParser.KW_EXISTS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    ifNotExists() {
        let localContext = new IfNotExistsContext(this.context, this.state);
        this.enterRule(localContext, 32, HiveSqlParser.RULE_ifNotExists);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 963;
                this.match(HiveSqlParser.KW_IF);
                this.state = 964;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 965;
                this.match(HiveSqlParser.KW_EXISTS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    restrictOrCascade() {
        let localContext = new RestrictOrCascadeContext(this.context, this.state);
        this.enterRule(localContext, 34, HiveSqlParser.RULE_restrictOrCascade);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 967;
                _la = this.tokenStream.LA(1);
                if (!(_la === 34 || _la === 282)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rewriteEnabled() {
        let localContext = new RewriteEnabledContext(this.context, this.state);
        this.enterRule(localContext, 36, HiveSqlParser.RULE_rewriteEnabled);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 969;
                this.enable();
                this.state = 970;
                this.match(HiveSqlParser.KW_REWRITE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rewriteDisabled() {
        let localContext = new RewriteDisabledContext(this.context, this.state);
        this.enterRule(localContext, 38, HiveSqlParser.RULE_rewriteDisabled);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 972;
                this.disable();
                this.state = 973;
                this.match(HiveSqlParser.KW_REWRITE);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    storedAsDirs() {
        let localContext = new StoredAsDirsContext(this.context, this.state);
        this.enterRule(localContext, 40, HiveSqlParser.RULE_storedAsDirs);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 975;
                this.match(HiveSqlParser.KW_STORED);
                this.state = 976;
                this.match(HiveSqlParser.KW_AS);
                this.state = 977;
                this.match(HiveSqlParser.KW_DIRECTORIES);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createDatabaseStatement() {
        let localContext = new CreateDatabaseStatementContext(this.context, this.state);
        this.enterRule(localContext, 42, HiveSqlParser.RULE_createDatabaseStatement);
        let _la;
        try {
            this.state = 1019;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 979;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 981;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 273) {
                            {
                                this.state = 980;
                                this.match(HiveSqlParser.KW_REMOTE);
                            }
                        }
                        this.state = 983;
                        this.db_schema();
                        this.state = 985;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 984;
                                this.ifNotExists();
                            }
                        }
                        this.state = 987;
                        localContext._name = this.dbSchemaNameCreate();
                        this.state = 989;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 47) {
                            {
                                this.state = 988;
                                this.databaseComment();
                            }
                        }
                        this.state = 992;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 189) {
                            {
                                this.state = 991;
                                this.locationPath();
                            }
                        }
                        this.state = 996;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 196) {
                            {
                                this.state = 994;
                                this.match(HiveSqlParser.KW_MANAGEDLOCATION);
                                this.state = 995;
                                localContext._locn = this.match(HiveSqlParser.StringLiteral);
                            }
                        }
                        this.state = 1001;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 40, this.context)) {
                            case 1:
                                {
                                    this.state = 998;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 999;
                                    this.match(HiveSqlParser.KW_DBPROPERTIES);
                                    this.state = 1000;
                                    localContext._dbprops = this.keyValueProperties();
                                }
                                break;
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1003;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 1004;
                        this.match(HiveSqlParser.KW_REMOTE);
                        this.state = 1005;
                        this.db_schema();
                        this.state = 1007;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 1006;
                                this.ifNotExists();
                            }
                        }
                        this.state = 1009;
                        localContext._name = this.dbSchemaNameCreate();
                        this.state = 1011;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 47) {
                            {
                                this.state = 1010;
                                this.databaseComment();
                            }
                        }
                        this.state = 1013;
                        this.dbConnectorName();
                        this.state = 1017;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context)) {
                            case 1:
                                {
                                    this.state = 1014;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 1015;
                                    this.match(HiveSqlParser.KW_DBPROPERTIES);
                                    this.state = 1016;
                                    localContext._dbprops = this.keyValueProperties();
                                }
                                break;
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dbConnectorName() {
        let localContext = new DbConnectorNameContext(this.context, this.state);
        this.enterRule(localContext, 44, HiveSqlParser.RULE_dbConnectorName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1021;
                this.match(HiveSqlParser.KW_USING);
                this.state = 1022;
                localContext._dcName = this.dbSchemaName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    switchDatabaseStatement() {
        let localContext = new SwitchDatabaseStatementContext(this.context, this.state);
        this.enterRule(localContext, 46, HiveSqlParser.RULE_switchDatabaseStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1024;
                this.match(HiveSqlParser.KW_USE);
                this.state = 1025;
                this.dbSchemaName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropDatabaseStatement() {
        let localContext = new DropDatabaseStatementContext(this.context, this.state);
        this.enterRule(localContext, 48, HiveSqlParser.RULE_dropDatabaseStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1027;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1028;
                this.db_schema();
                this.state = 1030;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1029;
                        this.ifExists();
                    }
                }
                this.state = 1032;
                this.dbSchemaName();
                this.state = 1034;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 34 || _la === 282) {
                    {
                        this.state = 1033;
                        this.restrictOrCascade();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    databaseComment() {
        let localContext = new DatabaseCommentContext(this.context, this.state);
        this.enterRule(localContext, 50, HiveSqlParser.RULE_databaseComment);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1036;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 1037;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    truncateTableStatement() {
        let localContext = new TruncateTableStatementContext(this.context, this.state);
        this.enterRule(localContext, 52, HiveSqlParser.RULE_truncateTableStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1039;
                this.match(HiveSqlParser.KW_TRUNCATE);
                this.state = 1041;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 329) {
                    {
                        this.state = 1040;
                        this.match(HiveSqlParser.KW_TABLE);
                    }
                }
                this.state = 1043;
                this.tableOrPartition();
                this.state = 1049;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 46) {
                    {
                        this.state = 1044;
                        this.match(HiveSqlParser.KW_COLUMNS);
                        this.state = 1045;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 1046;
                        this.columnNameList();
                        this.state = 1047;
                        this.match(HiveSqlParser.RPAREN);
                    }
                }
                this.state = 1052;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 135) {
                    {
                        this.state = 1051;
                        this.match(HiveSqlParser.KW_FORCE);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropTableStatement() {
        let localContext = new DropTableStatementContext(this.context, this.state);
        this.enterRule(localContext, 54, HiveSqlParser.RULE_dropTableStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1054;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1055;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1057;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1056;
                        this.ifExists();
                    }
                }
                this.state = 1059;
                this.tableName();
                this.state = 1061;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 255) {
                    {
                        this.state = 1060;
                        this.match(HiveSqlParser.KW_PURGE);
                    }
                }
                this.state = 1064;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 134) {
                    {
                        this.state = 1063;
                        this.replicationClause();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    inputFileFormat() {
        let localContext = new InputFileFormatContext(this.context, this.state);
        this.enterRule(localContext, 56, HiveSqlParser.RULE_inputFileFormat);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1066;
                this.match(HiveSqlParser.KW_INPUTFORMAT);
                this.state = 1067;
                localContext._inFmt = this.match(HiveSqlParser.StringLiteral);
                this.state = 1068;
                this.match(HiveSqlParser.KW_SERDE);
                this.state = 1069;
                localContext._serdeCls = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tabTypeExpr() {
        let localContext = new TabTypeExprContext(this.context, this.state);
        this.enterRule(localContext, 58, HiveSqlParser.RULE_tabTypeExpr);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1071;
                this.id_();
                this.state = 1074;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 395) {
                    {
                        this.state = 1072;
                        this.match(HiveSqlParser.DOT);
                        this.state = 1073;
                        this.id_();
                    }
                }
                this.state = 1089;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 56, this.context)) {
                    case 1:
                        {
                            this.state = 1076;
                            this.id_();
                            this.state = 1086;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            while (_la === 395) {
                                {
                                    {
                                        this.state = 1077;
                                        this.match(HiveSqlParser.DOT);
                                        this.state = 1082;
                                        this.errorHandler.sync(this);
                                        switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context)) {
                                            case 1:
                                                {
                                                    this.state = 1078;
                                                    this.match(HiveSqlParser.KW_ELEM_TYPE);
                                                }
                                                break;
                                            case 2:
                                                {
                                                    this.state = 1079;
                                                    this.match(HiveSqlParser.KW_KEY_TYPE);
                                                }
                                                break;
                                            case 3:
                                                {
                                                    this.state = 1080;
                                                    this.match(HiveSqlParser.KW_VALUE_TYPE);
                                                }
                                                break;
                                            case 4:
                                                {
                                                    this.state = 1081;
                                                    this.id_();
                                                }
                                                break;
                                        }
                                    }
                                }
                                this.state = 1088;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                            }
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partTypeExpr() {
        let localContext = new PartTypeExprContext(this.context, this.state);
        this.enterRule(localContext, 60, HiveSqlParser.RULE_partTypeExpr);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1091;
                this.tabTypeExpr();
                this.state = 1093;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                        this.state = 1092;
                        this.partitionSpec();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tabPartColTypeExpr() {
        let localContext = new TabPartColTypeExprContext(this.context, this.state);
        this.enterRule(localContext, 62, HiveSqlParser.RULE_tabPartColTypeExpr);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1095;
                this.tableOrView();
                this.state = 1097;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context)) {
                    case 1:
                        {
                            this.state = 1096;
                            this.partitionSpec();
                        }
                        break;
                }
                this.state = 1100;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
                    case 1:
                        {
                            this.state = 1099;
                            this.extColumnName();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    descStatement() {
        let localContext = new DescStatementContext(this.context, this.state);
        this.enterRule(localContext, 64, HiveSqlParser.RULE_descStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1102;
                _la = this.tokenStream.LA(1);
                if (!(_la === 89 || _la === 90)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 1125;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
                    case 1:
                        {
                            this.state = 1103;
                            this.db_schema();
                            this.state = 1105;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 122) {
                                {
                                    this.state = 1104;
                                    this.match(HiveSqlParser.KW_EXTENDED);
                                }
                            }
                            this.state = 1107;
                            localContext._dbName = this.dbSchemaName();
                        }
                        break;
                    case 2:
                        {
                            this.state = 1109;
                            this.match(HiveSqlParser.KW_DATACONNECTOR);
                            this.state = 1111;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 122) {
                                {
                                    this.state = 1110;
                                    this.match(HiveSqlParser.KW_EXTENDED);
                                }
                            }
                            this.state = 1113;
                            localContext._dcName = this.dbSchemaName();
                        }
                        break;
                    case 3:
                        {
                            this.state = 1114;
                            this.match(HiveSqlParser.KW_FUNCTION);
                            this.state = 1116;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 122) {
                                {
                                    this.state = 1115;
                                    this.match(HiveSqlParser.KW_EXTENDED);
                                }
                            }
                            this.state = 1118;
                            localContext._name = this.functionNameForDDL();
                        }
                        break;
                    case 4:
                        {
                            this.state = 1121;
                            this.errorHandler.sync(this);
                            switch (this.tokenStream.LA(1)) {
                                case HiveSqlParser.KW_FORMATTED:
                                    {
                                        this.state = 1119;
                                        localContext._descOptions = this.match(HiveSqlParser.KW_FORMATTED);
                                    }
                                    break;
                                case HiveSqlParser.KW_EXTENDED:
                                    {
                                        this.state = 1120;
                                        localContext._descOptions = this.match(HiveSqlParser.KW_EXTENDED);
                                    }
                                    break;
                                default:
                                    throw new antlr.NoViableAltException(this);
                            }
                            this.state = 1123;
                            localContext._parttype = this.tabPartColTypeExpr();
                        }
                        break;
                    case 5:
                        {
                            this.state = 1124;
                            localContext._parttype = this.tabPartColTypeExpr();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    analyzeStatement() {
        let localContext = new AnalyzeStatementContext(this.context, this.state);
        this.enterRule(localContext, 66, HiveSqlParser.RULE_analyzeStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1127;
                this.match(HiveSqlParser.KW_ANALYZE);
                this.state = 1128;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1129;
                localContext._parttype = this.tableOrPartition();
                this.state = 1142;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_COMPUTE:
                        {
                            this.state = 1130;
                            this.match(HiveSqlParser.KW_COMPUTE);
                            this.state = 1131;
                            this.match(HiveSqlParser.KW_STATISTICS);
                            this.state = 1138;
                            this.errorHandler.sync(this);
                            switch (this.tokenStream.LA(1)) {
                                case HiveSqlParser.KW_NOSCAN:
                                    {
                                        this.state = 1132;
                                        localContext._noscan = this.match(HiveSqlParser.KW_NOSCAN);
                                    }
                                    break;
                                case HiveSqlParser.KW_FOR:
                                    {
                                        this.state = 1133;
                                        this.match(HiveSqlParser.KW_FOR);
                                        this.state = 1134;
                                        this.match(HiveSqlParser.KW_COLUMNS);
                                        this.state = 1136;
                                        this.errorHandler.sync(this);
                                        switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context)) {
                                            case 1:
                                                {
                                                    this.state = 1135;
                                                    localContext._statsColumnName = this.columnNameList();
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case HiveSqlParser.EOF:
                                case HiveSqlParser.KW_ABORT:
                                case HiveSqlParser.KW_ALTER:
                                case HiveSqlParser.KW_ANALYZE:
                                case HiveSqlParser.KW_COMMIT:
                                case HiveSqlParser.KW_CREATE:
                                case HiveSqlParser.KW_DELETE:
                                case HiveSqlParser.KW_DESC:
                                case HiveSqlParser.KW_DESCRIBE:
                                case HiveSqlParser.KW_DISABLE:
                                case HiveSqlParser.KW_DISABLED:
                                case HiveSqlParser.KW_DROP:
                                case HiveSqlParser.KW_ENABLE:
                                case HiveSqlParser.KW_ENABLED:
                                case HiveSqlParser.KW_EXECUTE:
                                case HiveSqlParser.KW_EXPLAIN:
                                case HiveSqlParser.KW_EXPORT:
                                case HiveSqlParser.KW_FROM:
                                case HiveSqlParser.KW_GRANT:
                                case HiveSqlParser.KW_IMPORT:
                                case HiveSqlParser.KW_INSERT:
                                case HiveSqlParser.KW_KILL:
                                case HiveSqlParser.KW_LOAD:
                                case HiveSqlParser.KW_LOCK:
                                case HiveSqlParser.KW_MAP:
                                case HiveSqlParser.KW_MERGE:
                                case HiveSqlParser.KW_MSCK:
                                case HiveSqlParser.KW_PREPARE:
                                case HiveSqlParser.KW_REDUCE:
                                case HiveSqlParser.KW_RELOAD:
                                case HiveSqlParser.KW_REPL:
                                case HiveSqlParser.KW_REPLACE:
                                case HiveSqlParser.KW_REVOKE:
                                case HiveSqlParser.KW_ROLLBACK:
                                case HiveSqlParser.KW_SELECT:
                                case HiveSqlParser.KW_SET:
                                case HiveSqlParser.KW_SHOW:
                                case HiveSqlParser.KW_START:
                                case HiveSqlParser.KW_TRUNCATE:
                                case HiveSqlParser.KW_UNLOCK:
                                case HiveSqlParser.KW_UPDATE:
                                case HiveSqlParser.KW_USE:
                                case HiveSqlParser.KW_VALUES:
                                case HiveSqlParser.KW_WITH:
                                case HiveSqlParser.SEMICOLON:
                                case HiveSqlParser.LPAREN:
                                    break;
                                default:
                                    break;
                            }
                        }
                        break;
                    case HiveSqlParser.KW_CACHE:
                        {
                            this.state = 1140;
                            this.match(HiveSqlParser.KW_CACHE);
                            this.state = 1141;
                            this.match(HiveSqlParser.KW_METADATA);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    from_in() {
        let localContext = new From_inContext(this.context, this.state);
        this.enterRule(localContext, 68, HiveSqlParser.RULE_from_in);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1144;
                _la = this.tokenStream.LA(1);
                if (!(_la === 139 || _la === 154)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    db_schema() {
        let localContext = new Db_schemaContext(this.context, this.state);
        this.enterRule(localContext, 70, HiveSqlParser.RULE_db_schema);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1146;
                _la = this.tokenStream.LA(1);
                if (!(_la === 67 || _la === 295)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showStatement() {
        let localContext = new ShowStatementContext(this.context, this.state);
        this.enterRule(localContext, 72, HiveSqlParser.RULE_showStatement);
        let _la;
        try {
            this.state = 1331;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 103, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1148;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1149;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 68 || _la === 296)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 1152;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 184) {
                            {
                                this.state = 1150;
                                this.match(HiveSqlParser.KW_LIKE);
                                this.state = 1151;
                                this.showStmtIdentifier();
                            }
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1154;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1156;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 122) {
                            {
                                this.state = 1155;
                                localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
                            }
                        }
                        this.state = 1158;
                        this.match(HiveSqlParser.KW_TABLES);
                        this.state = 1162;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context)) {
                            case 1:
                                {
                                    this.state = 1159;
                                    this.from_in();
                                    this.state = 1160;
                                    localContext._db_name = this.dbSchemaName();
                                }
                                break;
                        }
                        this.state = 1165;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context)) {
                            case 1:
                                {
                                    this.state = 1164;
                                    localContext._filter = this.showTablesFilterExpr();
                                }
                                break;
                        }
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1167;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1168;
                        this.match(HiveSqlParser.KW_VIEWS);
                        this.state = 1172;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context)) {
                            case 1:
                                {
                                    this.state = 1169;
                                    this.from_in();
                                    this.state = 1170;
                                    localContext._db_name = this.dbSchemaName();
                                }
                                break;
                        }
                        this.state = 1177;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 73, this.context)) {
                            case 1:
                                {
                                    this.state = 1174;
                                    this.match(HiveSqlParser.KW_LIKE);
                                    this.state = 1175;
                                    this.showStmtIdentifier();
                                }
                                break;
                            case 2:
                                {
                                    this.state = 1176;
                                    this.showStmtIdentifier();
                                }
                                break;
                        }
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 1179;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1180;
                        this.match(HiveSqlParser.KW_MATERIALIZED);
                        this.state = 1181;
                        this.match(HiveSqlParser.KW_VIEWS);
                        this.state = 1185;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context)) {
                            case 1:
                                {
                                    this.state = 1182;
                                    this.from_in();
                                    this.state = 1183;
                                    localContext._db_name = this.dbSchemaName();
                                }
                                break;
                        }
                        this.state = 1190;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context)) {
                            case 1:
                                {
                                    this.state = 1187;
                                    this.match(HiveSqlParser.KW_LIKE);
                                    this.state = 1188;
                                    this.showStmtIdentifier();
                                }
                                break;
                            case 2:
                                {
                                    this.state = 1189;
                                    this.showStmtIdentifier();
                                }
                                break;
                        }
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 1192;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1194;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 315) {
                            {
                                this.state = 1193;
                                this.match(HiveSqlParser.KW_SORTED);
                            }
                        }
                        this.state = 1196;
                        this.match(HiveSqlParser.KW_COLUMNS);
                        this.state = 1197;
                        this.from_in();
                        this.state = 1198;
                        this.tableOrView();
                        this.state = 1202;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context)) {
                            case 1:
                                {
                                    this.state = 1199;
                                    this.from_in();
                                    this.state = 1200;
                                    localContext._db_name = this.dbSchemaName();
                                }
                                break;
                        }
                        this.state = 1207;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 78, this.context)) {
                            case 1:
                                {
                                    this.state = 1204;
                                    this.match(HiveSqlParser.KW_LIKE);
                                    this.state = 1205;
                                    this.showStmtIdentifier();
                                }
                                break;
                            case 2:
                                {
                                    this.state = 1206;
                                    this.showStmtIdentifier();
                                }
                                break;
                        }
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 1209;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1210;
                        this.match(HiveSqlParser.KW_FUNCTIONS);
                        this.state = 1213;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 184) {
                            {
                                this.state = 1211;
                                this.match(HiveSqlParser.KW_LIKE);
                                this.state = 1212;
                                this.functionNameForDDL();
                            }
                        }
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 1215;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1216;
                        this.match(HiveSqlParser.KW_PARTITIONS);
                        this.state = 1217;
                        localContext._tabOrViewName = this.tableOrView();
                        this.state = 1219;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 237) {
                            {
                                this.state = 1218;
                                this.partitionSpec();
                            }
                        }
                        this.state = 1222;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 384) {
                            {
                                this.state = 1221;
                                this.whereClause();
                            }
                        }
                        this.state = 1225;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 229) {
                            {
                                this.state = 1224;
                                this.orderByClause();
                            }
                        }
                        this.state = 1228;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 185) {
                            {
                                this.state = 1227;
                                this.limitClause();
                            }
                        }
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 1230;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1231;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 1237;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_DATABASE:
                            case HiveSqlParser.KW_SCHEMA:
                                {
                                    this.state = 1232;
                                    this.db_schema();
                                    this.state = 1233;
                                    localContext._db_name = this.dbSchemaName();
                                }
                                break;
                            case HiveSqlParser.KW_TABLE:
                                {
                                    this.state = 1235;
                                    this.match(HiveSqlParser.KW_TABLE);
                                    this.state = 1236;
                                    localContext._tabName = this.tableName();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 1239;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1240;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 1241;
                        this.match(HiveSqlParser.KW_EXTENDED);
                        this.state = 1245;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 139 || _la === 154) {
                            {
                                this.state = 1242;
                                this.from_in();
                                this.state = 1243;
                                localContext._db_name = this.dbSchemaName();
                            }
                        }
                        this.state = 1247;
                        this.match(HiveSqlParser.KW_LIKE);
                        this.state = 1248;
                        this.showStmtIdentifier();
                        this.state = 1250;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 237) {
                            {
                                this.state = 1249;
                                this.partitionSpec();
                            }
                        }
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 1252;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1253;
                        this.match(HiveSqlParser.KW_TBLPROPERTIES);
                        this.state = 1254;
                        this.tableName();
                        this.state = 1258;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context)) {
                            case 1:
                                {
                                    this.state = 1255;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 1256;
                                    localContext._prptyName = this.match(HiveSqlParser.StringLiteral);
                                    this.state = 1257;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                        }
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 1260;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1261;
                        this.match(HiveSqlParser.KW_LOCKS);
                        this.state = 1273;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context)) {
                            case 1:
                                {
                                    this.state = 1262;
                                    this.db_schema();
                                    this.state = 1263;
                                    localContext._dbName = this.dbSchemaName();
                                    this.state = 1265;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 122) {
                                        {
                                            this.state = 1264;
                                            localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
                                        }
                                    }
                                }
                                break;
                            case 2:
                                {
                                    this.state = 1268;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 89, this.context)) {
                                        case 1:
                                            {
                                                this.state = 1267;
                                                localContext._parttype = this.partTypeExpr();
                                            }
                                            break;
                                    }
                                    this.state = 1271;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 122) {
                                        {
                                            this.state = 1270;
                                            localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
                                        }
                                    }
                                }
                                break;
                        }
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 1275;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1276;
                        this.match(HiveSqlParser.KW_COMPACTIONS);
                        this.state = 1303;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_COMPACT_ID:
                                {
                                    this.state = 1277;
                                    this.match(HiveSqlParser.KW_COMPACT_ID);
                                    this.state = 1278;
                                    this.match(HiveSqlParser.EQUAL);
                                    this.state = 1279;
                                    localContext._compactId = this.match(HiveSqlParser.Number);
                                }
                                break;
                            case HiveSqlParser.EOF:
                            case HiveSqlParser.KW_ABORT:
                            case HiveSqlParser.KW_ACTIVATE:
                            case HiveSqlParser.KW_ACTIVE:
                            case HiveSqlParser.KW_ADD:
                            case HiveSqlParser.KW_ADMIN:
                            case HiveSqlParser.KW_AFTER:
                            case HiveSqlParser.KW_ALLOC_FRACTION:
                            case HiveSqlParser.KW_ALTER:
                            case HiveSqlParser.KW_ANALYZE:
                            case HiveSqlParser.KW_ARCHIVE:
                            case HiveSqlParser.KW_ASC:
                            case HiveSqlParser.KW_AST:
                            case HiveSqlParser.KW_AT:
                            case HiveSqlParser.KW_AUTOCOMMIT:
                            case HiveSqlParser.KW_BATCH:
                            case HiveSqlParser.KW_BEFORE:
                            case HiveSqlParser.KW_BUCKET:
                            case HiveSqlParser.KW_BUCKETS:
                            case HiveSqlParser.KW_CACHE:
                            case HiveSqlParser.KW_CASCADE:
                            case HiveSqlParser.KW_CBO:
                            case HiveSqlParser.KW_CHANGE:
                            case HiveSqlParser.KW_CHECK:
                            case HiveSqlParser.KW_CLUSTER:
                            case HiveSqlParser.KW_CLUSTERED:
                            case HiveSqlParser.KW_CLUSTERSTATUS:
                            case HiveSqlParser.KW_COLLECTION:
                            case HiveSqlParser.KW_COLUMNS:
                            case HiveSqlParser.KW_COMMENT:
                            case HiveSqlParser.KW_COMMIT:
                            case HiveSqlParser.KW_COMPACT:
                            case HiveSqlParser.KW_COMPACTIONS:
                            case HiveSqlParser.KW_COMPUTE:
                            case HiveSqlParser.KW_CONCATENATE:
                            case HiveSqlParser.KW_CONTINUE:
                            case HiveSqlParser.KW_COST:
                            case HiveSqlParser.KW_CREATE:
                            case HiveSqlParser.KW_CRON:
                            case HiveSqlParser.KW_DATA:
                            case HiveSqlParser.KW_DATABASE:
                            case HiveSqlParser.KW_DATABASES:
                            case HiveSqlParser.KW_DATETIME:
                            case HiveSqlParser.KW_DAY:
                            case HiveSqlParser.KW_DAYS:
                            case HiveSqlParser.KW_DAYOFWEEK:
                            case HiveSqlParser.KW_DBPROPERTIES:
                            case HiveSqlParser.KW_DCPROPERTIES:
                            case HiveSqlParser.KW_DEBUG:
                            case HiveSqlParser.KW_DEFAULT:
                            case HiveSqlParser.KW_DEFERRED:
                            case HiveSqlParser.KW_DEFINED:
                            case HiveSqlParser.KW_DELETE:
                            case HiveSqlParser.KW_DELIMITED:
                            case HiveSqlParser.KW_DEPENDENCY:
                            case HiveSqlParser.KW_DESC:
                            case HiveSqlParser.KW_DESCRIBE:
                            case HiveSqlParser.KW_DETAIL:
                            case HiveSqlParser.KW_DIRECTORIES:
                            case HiveSqlParser.KW_DIRECTORY:
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                            case HiveSqlParser.KW_DISTRIBUTE:
                            case HiveSqlParser.KW_DISTRIBUTED:
                            case HiveSqlParser.KW_DO:
                            case HiveSqlParser.KW_DROP:
                            case HiveSqlParser.KW_DUMP:
                            case HiveSqlParser.KW_ELEM_TYPE:
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                            case HiveSqlParser.KW_ENFORCED:
                            case HiveSqlParser.KW_ESCAPED:
                            case HiveSqlParser.KW_EVERY:
                            case HiveSqlParser.KW_EXCLUSIVE:
                            case HiveSqlParser.KW_EXECUTE:
                            case HiveSqlParser.KW_EXECUTED:
                            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                            case HiveSqlParser.KW_EXPLAIN:
                            case HiveSqlParser.KW_EXPORT:
                            case HiveSqlParser.KW_EXPRESSION:
                            case HiveSqlParser.KW_FIELDS:
                            case HiveSqlParser.KW_FILE:
                            case HiveSqlParser.KW_FILEFORMAT:
                            case HiveSqlParser.KW_FIRST:
                            case HiveSqlParser.KW_FORMAT:
                            case HiveSqlParser.KW_FORMATTED:
                            case HiveSqlParser.KW_FROM:
                            case HiveSqlParser.KW_FUNCTIONS:
                            case HiveSqlParser.KW_GRANT:
                            case HiveSqlParser.KW_HOLD_DDLTIME:
                            case HiveSqlParser.KW_HOUR:
                            case HiveSqlParser.KW_HOURS:
                            case HiveSqlParser.KW_IDXPROPERTIES:
                            case HiveSqlParser.KW_IGNORE:
                            case HiveSqlParser.KW_IMPORT:
                            case HiveSqlParser.KW_INDEX:
                            case HiveSqlParser.KW_INDEXES:
                            case HiveSqlParser.KW_INPATH:
                            case HiveSqlParser.KW_INPUTDRIVER:
                            case HiveSqlParser.KW_INPUTFORMAT:
                            case HiveSqlParser.KW_INSERT:
                            case HiveSqlParser.KW_ISOLATION:
                            case HiveSqlParser.KW_ITEMS:
                            case HiveSqlParser.KW_JAR:
                            case HiveSqlParser.KW_JOINCOST:
                            case HiveSqlParser.KW_KEY:
                            case HiveSqlParser.KW_KEYS:
                            case HiveSqlParser.KW_KEY_TYPE:
                            case HiveSqlParser.KW_KILL:
                            case HiveSqlParser.KW_LAST:
                            case HiveSqlParser.KW_LEVEL:
                            case HiveSqlParser.KW_LIFECYCLE:
                            case HiveSqlParser.KW_LIMIT:
                            case HiveSqlParser.KW_LINES:
                            case HiveSqlParser.KW_LOAD:
                            case HiveSqlParser.KW_LOCATION:
                            case HiveSqlParser.KW_LOCK:
                            case HiveSqlParser.KW_LOCKS:
                            case HiveSqlParser.KW_LOGICAL:
                            case HiveSqlParser.KW_LONG:
                            case HiveSqlParser.KW_MANAGED:
                            case HiveSqlParser.KW_MANAGEDLOCATION:
                            case HiveSqlParser.KW_MANAGEMENT:
                            case HiveSqlParser.KW_MAP:
                            case HiveSqlParser.KW_MAPJOIN:
                            case HiveSqlParser.KW_MAPPING:
                            case HiveSqlParser.KW_MATCHED:
                            case HiveSqlParser.KW_MATERIALIZED:
                            case HiveSqlParser.KW_MERGE:
                            case HiveSqlParser.KW_METADATA:
                            case HiveSqlParser.KW_MINUTE:
                            case HiveSqlParser.KW_MINUTES:
                            case HiveSqlParser.KW_MONTH:
                            case HiveSqlParser.KW_MONTHS:
                            case HiveSqlParser.KW_MOVE:
                            case HiveSqlParser.KW_MSCK:
                            case HiveSqlParser.KW_NORELY:
                            case HiveSqlParser.KW_NOSCAN:
                            case HiveSqlParser.KW_NOVALIDATE:
                            case HiveSqlParser.KW_NO_DROP:
                            case HiveSqlParser.KW_NULLS:
                            case HiveSqlParser.KW_OFFLINE:
                            case HiveSqlParser.KW_OFFSET:
                            case HiveSqlParser.KW_OPERATOR:
                            case HiveSqlParser.KW_OPTION:
                            case HiveSqlParser.KW_ORDER:
                            case HiveSqlParser.KW_OUTPUTDRIVER:
                            case HiveSqlParser.KW_OUTPUTFORMAT:
                            case HiveSqlParser.KW_OVERWRITE:
                            case HiveSqlParser.KW_OWNER:
                            case HiveSqlParser.KW_PARTITIONED:
                            case HiveSqlParser.KW_PARTITIONS:
                            case HiveSqlParser.KW_PATH:
                            case HiveSqlParser.KW_PLAN:
                            case HiveSqlParser.KW_PLANS:
                            case HiveSqlParser.KW_PLUS:
                            case HiveSqlParser.KW_POOL:
                            case HiveSqlParser.KW_PREPARE:
                            case HiveSqlParser.KW_PRINCIPALS:
                            case HiveSqlParser.KW_PROTECTION:
                            case HiveSqlParser.KW_PURGE:
                            case HiveSqlParser.KW_QUARTER:
                            case HiveSqlParser.KW_QUERY:
                            case HiveSqlParser.KW_QUERY_PARALLELISM:
                            case HiveSqlParser.KW_READ:
                            case HiveSqlParser.KW_READONLY:
                            case HiveSqlParser.KW_REBUILD:
                            case HiveSqlParser.KW_RECORDREADER:
                            case HiveSqlParser.KW_RECORDWRITER:
                            case HiveSqlParser.KW_REDUCE:
                            case HiveSqlParser.KW_RELOAD:
                            case HiveSqlParser.KW_RELY:
                            case HiveSqlParser.KW_REMOTE:
                            case HiveSqlParser.KW_RENAME:
                            case HiveSqlParser.KW_REOPTIMIZATION:
                            case HiveSqlParser.KW_REPAIR:
                            case HiveSqlParser.KW_REPL:
                            case HiveSqlParser.KW_REPLACE:
                            case HiveSqlParser.KW_REPLICATION:
                            case HiveSqlParser.KW_RESOURCE:
                            case HiveSqlParser.KW_RESPECT:
                            case HiveSqlParser.KW_RESTRICT:
                            case HiveSqlParser.KW_REVOKE:
                            case HiveSqlParser.KW_REWRITE:
                            case HiveSqlParser.KW_ROLE:
                            case HiveSqlParser.KW_ROLES:
                            case HiveSqlParser.KW_ROLLBACK:
                            case HiveSqlParser.KW_SCHEDULED:
                            case HiveSqlParser.KW_SCHEDULING_POLICY:
                            case HiveSqlParser.KW_SCHEMA:
                            case HiveSqlParser.KW_SCHEMAS:
                            case HiveSqlParser.KW_SECOND:
                            case HiveSqlParser.KW_SECONDS:
                            case HiveSqlParser.KW_SELECT:
                            case HiveSqlParser.KW_SEMI:
                            case HiveSqlParser.KW_SERDE:
                            case HiveSqlParser.KW_SERDEPROPERTIES:
                            case HiveSqlParser.KW_SERVER:
                            case HiveSqlParser.KW_SET:
                            case HiveSqlParser.KW_SETS:
                            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                            case HiveSqlParser.KW_SHARED:
                            case HiveSqlParser.KW_SHOW:
                            case HiveSqlParser.KW_SHOW_DATABASE:
                            case HiveSqlParser.KW_SKEWED:
                            case HiveSqlParser.KW_SNAPSHOT:
                            case HiveSqlParser.KW_SORT:
                            case HiveSqlParser.KW_SORTED:
                            case HiveSqlParser.KW_SPEC:
                            case HiveSqlParser.KW_SSL:
                            case HiveSqlParser.KW_START:
                            case HiveSqlParser.KW_STATISTICS:
                            case HiveSqlParser.KW_STATUS:
                            case HiveSqlParser.KW_STORED:
                            case HiveSqlParser.KW_STREAMTABLE:
                            case HiveSqlParser.KW_STRING:
                            case HiveSqlParser.KW_STRUCT:
                            case HiveSqlParser.KW_SUMMARY:
                            case HiveSqlParser.KW_SYSTEM_TIME:
                            case HiveSqlParser.KW_SYSTEM_VERSION:
                            case HiveSqlParser.KW_TABLES:
                            case HiveSqlParser.KW_TBLPROPERTIES:
                            case HiveSqlParser.KW_TEMPORARY:
                            case HiveSqlParser.KW_TERMINATED:
                            case HiveSqlParser.KW_TIMESTAMPTZ:
                            case HiveSqlParser.KW_TINYINT:
                            case HiveSqlParser.KW_TOUCH:
                            case HiveSqlParser.KW_TRANSACTION:
                            case HiveSqlParser.KW_TRANSACTIONAL:
                            case HiveSqlParser.KW_TRANSACTIONS:
                            case HiveSqlParser.KW_TRIM:
                            case HiveSqlParser.KW_TRUNCATE:
                            case HiveSqlParser.KW_TYPE:
                            case HiveSqlParser.KW_UNARCHIVE:
                            case HiveSqlParser.KW_UNDO:
                            case HiveSqlParser.KW_UNIONTYPE:
                            case HiveSqlParser.KW_UNKNOWN:
                            case HiveSqlParser.KW_UNLOCK:
                            case HiveSqlParser.KW_UNMANAGED:
                            case HiveSqlParser.KW_UNSET:
                            case HiveSqlParser.KW_UNSIGNED:
                            case HiveSqlParser.KW_UPDATE:
                            case HiveSqlParser.KW_URI:
                            case HiveSqlParser.KW_URL:
                            case HiveSqlParser.KW_USE:
                            case HiveSqlParser.KW_UTC:
                            case HiveSqlParser.KW_UTCTIMESTAMP:
                            case HiveSqlParser.KW_VALIDATE:
                            case HiveSqlParser.KW_VALUES:
                            case HiveSqlParser.KW_VALUE_TYPE:
                            case HiveSqlParser.KW_VECTORIZATION:
                            case HiveSqlParser.KW_VIEW:
                            case HiveSqlParser.KW_VIEWS:
                            case HiveSqlParser.KW_WAIT:
                            case HiveSqlParser.KW_WEEK:
                            case HiveSqlParser.KW_WEEKS:
                            case HiveSqlParser.KW_WHILE:
                            case HiveSqlParser.KW_WITH:
                            case HiveSqlParser.KW_WITHIN:
                            case HiveSqlParser.KW_WORK:
                            case HiveSqlParser.KW_WORKLOAD:
                            case HiveSqlParser.KW_WRITE:
                            case HiveSqlParser.KW_YEAR:
                            case HiveSqlParser.KW_YEARS:
                            case HiveSqlParser.KW_ZONE:
                            case HiveSqlParser.SEMICOLON:
                            case HiveSqlParser.LPAREN:
                            case HiveSqlParser.Identifier:
                                {
                                    this.state = 1286;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context)) {
                                        case 1:
                                            {
                                                {
                                                    this.state = 1280;
                                                    this.db_schema();
                                                    this.state = 1281;
                                                    localContext._dbName = this.dbSchemaName();
                                                }
                                            }
                                            break;
                                        case 2:
                                            {
                                                this.state = 1284;
                                                this.errorHandler.sync(this);
                                                switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context)) {
                                                    case 1:
                                                        {
                                                            this.state = 1283;
                                                            localContext._parttype = this.partTypeExpr();
                                                        }
                                                        break;
                                                }
                                            }
                                            break;
                                    }
                                    this.state = 1289;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 246) {
                                        {
                                            this.state = 1288;
                                            this.compactionPool();
                                        }
                                    }
                                    this.state = 1292;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 352) {
                                        {
                                            this.state = 1291;
                                            this.compactionType();
                                        }
                                    }
                                    this.state = 1295;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 320) {
                                        {
                                            this.state = 1294;
                                            this.compactionStatus();
                                        }
                                    }
                                    this.state = 1298;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 229) {
                                        {
                                            this.state = 1297;
                                            this.orderByClause();
                                        }
                                    }
                                    this.state = 1301;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 185) {
                                        {
                                            this.state = 1300;
                                            this.limitClause();
                                        }
                                    }
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 1305;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1306;
                        this.match(HiveSqlParser.KW_TRANSACTIONS);
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 1307;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1308;
                        this.match(HiveSqlParser.KW_CONF);
                        this.state = 1309;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 1310;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1311;
                        this.match(HiveSqlParser.KW_RESOURCE);
                        this.state = 1315;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_PLAN:
                                {
                                    this.state = 1312;
                                    this.match(HiveSqlParser.KW_PLAN);
                                    this.state = 1313;
                                    localContext._rp_name = this.id_();
                                }
                                break;
                            case HiveSqlParser.KW_PLANS:
                                {
                                    this.state = 1314;
                                    this.match(HiveSqlParser.KW_PLANS);
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 1317;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1318;
                        this.match(HiveSqlParser.KW_DATACONNECTORS);
                    }
                    break;
                case 17:
                    this.enterOuterAlt(localContext, 17);
                    {
                        this.state = 1319;
                        this.match(HiveSqlParser.KW_SHOW);
                        this.state = 1321;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 138) {
                            {
                                this.state = 1320;
                                this.match(HiveSqlParser.KW_FORMATTED);
                            }
                        }
                        this.state = 1323;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 155 || _la === 156)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 1324;
                        this.match(HiveSqlParser.KW_ON);
                        this.state = 1325;
                        this.tableName();
                        this.state = 1329;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context)) {
                            case 1:
                                {
                                    this.state = 1326;
                                    this.from_in();
                                    this.state = 1327;
                                    this.dbSchemaName();
                                }
                                break;
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showTablesFilterExpr() {
        let localContext = new ShowTablesFilterExprContext(this.context, this.state);
        this.enterRule(localContext, 74, HiveSqlParser.RULE_showTablesFilterExpr);
        try {
            this.state = 1341;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_WHERE:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1333;
                        this.match(HiveSqlParser.KW_WHERE);
                        this.state = 1334;
                        this.id_();
                        this.state = 1335;
                        this.match(HiveSqlParser.EQUAL);
                        this.state = 1336;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case HiveSqlParser.KW_LIKE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1338;
                        this.match(HiveSqlParser.KW_LIKE);
                        this.state = 1339;
                        this.showStmtIdentifier();
                    }
                    break;
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.StringLiteral:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1340;
                        this.showStmtIdentifier();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    lockStatement() {
        let localContext = new LockStatementContext(this.context, this.state);
        this.enterRule(localContext, 76, HiveSqlParser.RULE_lockStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1343;
                this.match(HiveSqlParser.KW_LOCK);
                this.state = 1344;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1345;
                this.tableOrPartition();
                this.state = 1346;
                this.lockMode();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    lockDatabase() {
        let localContext = new LockDatabaseContext(this.context, this.state);
        this.enterRule(localContext, 78, HiveSqlParser.RULE_lockDatabase);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1348;
                this.match(HiveSqlParser.KW_LOCK);
                this.state = 1349;
                this.db_schema();
                this.state = 1350;
                localContext._dbName = this.dbSchemaName();
                this.state = 1351;
                this.lockMode();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    lockMode() {
        let localContext = new LockModeContext(this.context, this.state);
        this.enterRule(localContext, 80, HiveSqlParser.RULE_lockMode);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1353;
                _la = this.tokenStream.LA(1);
                if (!(_la === 114 || _la === 307)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    unlockStatement() {
        let localContext = new UnlockStatementContext(this.context, this.state);
        this.enterRule(localContext, 82, HiveSqlParser.RULE_unlockStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1355;
                this.match(HiveSqlParser.KW_UNLOCK);
                this.state = 1356;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1357;
                this.tableOrPartition();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    unlockDatabase() {
        let localContext = new UnlockDatabaseContext(this.context, this.state);
        this.enterRule(localContext, 84, HiveSqlParser.RULE_unlockDatabase);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1359;
                this.match(HiveSqlParser.KW_UNLOCK);
                this.state = 1360;
                this.db_schema();
                this.state = 1361;
                localContext._dbName = this.dbSchemaName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createRoleStatement() {
        let localContext = new CreateRoleStatementContext(this.context, this.state);
        this.enterRule(localContext, 86, HiveSqlParser.RULE_createRoleStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1363;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1364;
                this.match(HiveSqlParser.KW_ROLE);
                this.state = 1365;
                localContext._roleName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropRoleStatement() {
        let localContext = new DropRoleStatementContext(this.context, this.state);
        this.enterRule(localContext, 88, HiveSqlParser.RULE_dropRoleStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1367;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1368;
                this.match(HiveSqlParser.KW_ROLE);
                this.state = 1369;
                localContext._roleName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    grantPrivileges() {
        let localContext = new GrantPrivilegesContext(this.context, this.state);
        this.enterRule(localContext, 90, HiveSqlParser.RULE_grantPrivileges);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1371;
                this.match(HiveSqlParser.KW_GRANT);
                this.state = 1372;
                localContext._privList = this.privilegeList();
                this.state = 1374;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 224) {
                    {
                        this.state = 1373;
                        this.privilegeObject();
                    }
                }
                this.state = 1376;
                this.match(HiveSqlParser.KW_TO);
                this.state = 1377;
                this.principalSpecification();
                this.state = 1379;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 106, this.context)) {
                    case 1:
                        {
                            this.state = 1378;
                            this.withGrantOption();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    revokePrivileges() {
        let localContext = new RevokePrivilegesContext(this.context, this.state);
        this.enterRule(localContext, 92, HiveSqlParser.RULE_revokePrivileges);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1381;
                this.match(HiveSqlParser.KW_REVOKE);
                this.state = 1383;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 143) {
                    {
                        this.state = 1382;
                        this.grantOptionFor();
                    }
                }
                this.state = 1385;
                this.privilegeList();
                this.state = 1387;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 224) {
                    {
                        this.state = 1386;
                        this.privilegeObject();
                    }
                }
                this.state = 1389;
                this.match(HiveSqlParser.KW_FROM);
                this.state = 1390;
                this.principalSpecification();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    grantRole() {
        let localContext = new GrantRoleContext(this.context, this.state);
        this.enterRule(localContext, 94, HiveSqlParser.RULE_grantRole);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1392;
                this.match(HiveSqlParser.KW_GRANT);
                this.state = 1394;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 109, this.context)) {
                    case 1:
                        {
                            this.state = 1393;
                            this.match(HiveSqlParser.KW_ROLE);
                        }
                        break;
                }
                this.state = 1396;
                this.id_();
                this.state = 1401;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1397;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1398;
                            this.id_();
                        }
                    }
                    this.state = 1403;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 1404;
                this.match(HiveSqlParser.KW_TO);
                this.state = 1405;
                this.principalSpecification();
                this.state = 1407;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context)) {
                    case 1:
                        {
                            this.state = 1406;
                            this.withAdminOption();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    revokeRole() {
        let localContext = new RevokeRoleContext(this.context, this.state);
        this.enterRule(localContext, 96, HiveSqlParser.RULE_revokeRole);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1409;
                this.match(HiveSqlParser.KW_REVOKE);
                this.state = 1411;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 112, this.context)) {
                    case 1:
                        {
                            this.state = 1410;
                            this.adminOptionFor();
                        }
                        break;
                }
                this.state = 1414;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 113, this.context)) {
                    case 1:
                        {
                            this.state = 1413;
                            this.match(HiveSqlParser.KW_ROLE);
                        }
                        break;
                }
                this.state = 1416;
                this.id_();
                this.state = 1421;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1417;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1418;
                            this.id_();
                        }
                    }
                    this.state = 1423;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 1424;
                this.match(HiveSqlParser.KW_FROM);
                this.state = 1425;
                this.principalSpecification();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showRoleGrants() {
        let localContext = new ShowRoleGrantsContext(this.context, this.state);
        this.enterRule(localContext, 98, HiveSqlParser.RULE_showRoleGrants);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1427;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1428;
                this.match(HiveSqlParser.KW_ROLE);
                this.state = 1429;
                this.match(HiveSqlParser.KW_GRANT);
                this.state = 1430;
                this.principalName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showRoles() {
        let localContext = new ShowRolesContext(this.context, this.state);
        this.enterRule(localContext, 100, HiveSqlParser.RULE_showRoles);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1432;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1433;
                this.match(HiveSqlParser.KW_ROLES);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showCurrentRole() {
        let localContext = new ShowCurrentRoleContext(this.context, this.state);
        this.enterRule(localContext, 102, HiveSqlParser.RULE_showCurrentRole);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1435;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1436;
                this.match(HiveSqlParser.KW_CURRENT);
                this.state = 1437;
                this.match(HiveSqlParser.KW_ROLES);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    setRole() {
        let localContext = new SetRoleContext(this.context, this.state);
        this.enterRule(localContext, 104, HiveSqlParser.RULE_setRole);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1439;
                this.match(HiveSqlParser.KW_SET);
                this.state = 1440;
                this.match(HiveSqlParser.KW_ROLE);
                this.state = 1444;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_ALL:
                        {
                            this.state = 1441;
                            localContext._all = this.match(HiveSqlParser.KW_ALL);
                        }
                        break;
                    case HiveSqlParser.KW_NONE:
                        {
                            this.state = 1442;
                            localContext._none = this.match(HiveSqlParser.KW_NONE);
                        }
                        break;
                    case HiveSqlParser.KW_ABORT:
                    case HiveSqlParser.KW_ACTIVATE:
                    case HiveSqlParser.KW_ACTIVE:
                    case HiveSqlParser.KW_ADD:
                    case HiveSqlParser.KW_ADMIN:
                    case HiveSqlParser.KW_AFTER:
                    case HiveSqlParser.KW_ALLOC_FRACTION:
                    case HiveSqlParser.KW_ANALYZE:
                    case HiveSqlParser.KW_ARCHIVE:
                    case HiveSqlParser.KW_ASC:
                    case HiveSqlParser.KW_AST:
                    case HiveSqlParser.KW_AT:
                    case HiveSqlParser.KW_AUTOCOMMIT:
                    case HiveSqlParser.KW_BATCH:
                    case HiveSqlParser.KW_BEFORE:
                    case HiveSqlParser.KW_BUCKET:
                    case HiveSqlParser.KW_BUCKETS:
                    case HiveSqlParser.KW_CACHE:
                    case HiveSqlParser.KW_CASCADE:
                    case HiveSqlParser.KW_CBO:
                    case HiveSqlParser.KW_CHANGE:
                    case HiveSqlParser.KW_CHECK:
                    case HiveSqlParser.KW_CLUSTER:
                    case HiveSqlParser.KW_CLUSTERED:
                    case HiveSqlParser.KW_CLUSTERSTATUS:
                    case HiveSqlParser.KW_COLLECTION:
                    case HiveSqlParser.KW_COLUMNS:
                    case HiveSqlParser.KW_COMMENT:
                    case HiveSqlParser.KW_COMPACT:
                    case HiveSqlParser.KW_COMPACTIONS:
                    case HiveSqlParser.KW_COMPUTE:
                    case HiveSqlParser.KW_CONCATENATE:
                    case HiveSqlParser.KW_CONTINUE:
                    case HiveSqlParser.KW_COST:
                    case HiveSqlParser.KW_CRON:
                    case HiveSqlParser.KW_DATA:
                    case HiveSqlParser.KW_DATABASES:
                    case HiveSqlParser.KW_DATETIME:
                    case HiveSqlParser.KW_DAY:
                    case HiveSqlParser.KW_DAYS:
                    case HiveSqlParser.KW_DAYOFWEEK:
                    case HiveSqlParser.KW_DBPROPERTIES:
                    case HiveSqlParser.KW_DCPROPERTIES:
                    case HiveSqlParser.KW_DEBUG:
                    case HiveSqlParser.KW_DEFAULT:
                    case HiveSqlParser.KW_DEFERRED:
                    case HiveSqlParser.KW_DEFINED:
                    case HiveSqlParser.KW_DELIMITED:
                    case HiveSqlParser.KW_DEPENDENCY:
                    case HiveSqlParser.KW_DESC:
                    case HiveSqlParser.KW_DETAIL:
                    case HiveSqlParser.KW_DIRECTORIES:
                    case HiveSqlParser.KW_DIRECTORY:
                    case HiveSqlParser.KW_DISABLE:
                    case HiveSqlParser.KW_DISABLED:
                    case HiveSqlParser.KW_DISTRIBUTE:
                    case HiveSqlParser.KW_DISTRIBUTED:
                    case HiveSqlParser.KW_DO:
                    case HiveSqlParser.KW_DUMP:
                    case HiveSqlParser.KW_ELEM_TYPE:
                    case HiveSqlParser.KW_ENABLE:
                    case HiveSqlParser.KW_ENABLED:
                    case HiveSqlParser.KW_ENFORCED:
                    case HiveSqlParser.KW_ESCAPED:
                    case HiveSqlParser.KW_EVERY:
                    case HiveSqlParser.KW_EXCLUSIVE:
                    case HiveSqlParser.KW_EXECUTE:
                    case HiveSqlParser.KW_EXECUTED:
                    case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                    case HiveSqlParser.KW_EXPLAIN:
                    case HiveSqlParser.KW_EXPORT:
                    case HiveSqlParser.KW_EXPRESSION:
                    case HiveSqlParser.KW_FIELDS:
                    case HiveSqlParser.KW_FILE:
                    case HiveSqlParser.KW_FILEFORMAT:
                    case HiveSqlParser.KW_FIRST:
                    case HiveSqlParser.KW_FORMAT:
                    case HiveSqlParser.KW_FORMATTED:
                    case HiveSqlParser.KW_FUNCTIONS:
                    case HiveSqlParser.KW_HOLD_DDLTIME:
                    case HiveSqlParser.KW_HOUR:
                    case HiveSqlParser.KW_HOURS:
                    case HiveSqlParser.KW_IDXPROPERTIES:
                    case HiveSqlParser.KW_IGNORE:
                    case HiveSqlParser.KW_INDEX:
                    case HiveSqlParser.KW_INDEXES:
                    case HiveSqlParser.KW_INPATH:
                    case HiveSqlParser.KW_INPUTDRIVER:
                    case HiveSqlParser.KW_INPUTFORMAT:
                    case HiveSqlParser.KW_ISOLATION:
                    case HiveSqlParser.KW_ITEMS:
                    case HiveSqlParser.KW_JAR:
                    case HiveSqlParser.KW_JOINCOST:
                    case HiveSqlParser.KW_KEY:
                    case HiveSqlParser.KW_KEYS:
                    case HiveSqlParser.KW_KEY_TYPE:
                    case HiveSqlParser.KW_KILL:
                    case HiveSqlParser.KW_LAST:
                    case HiveSqlParser.KW_LEVEL:
                    case HiveSqlParser.KW_LIFECYCLE:
                    case HiveSqlParser.KW_LIMIT:
                    case HiveSqlParser.KW_LINES:
                    case HiveSqlParser.KW_LOAD:
                    case HiveSqlParser.KW_LOCATION:
                    case HiveSqlParser.KW_LOCK:
                    case HiveSqlParser.KW_LOCKS:
                    case HiveSqlParser.KW_LOGICAL:
                    case HiveSqlParser.KW_LONG:
                    case HiveSqlParser.KW_MANAGED:
                    case HiveSqlParser.KW_MANAGEDLOCATION:
                    case HiveSqlParser.KW_MANAGEMENT:
                    case HiveSqlParser.KW_MAPJOIN:
                    case HiveSqlParser.KW_MAPPING:
                    case HiveSqlParser.KW_MATCHED:
                    case HiveSqlParser.KW_MATERIALIZED:
                    case HiveSqlParser.KW_METADATA:
                    case HiveSqlParser.KW_MINUTE:
                    case HiveSqlParser.KW_MINUTES:
                    case HiveSqlParser.KW_MONTH:
                    case HiveSqlParser.KW_MONTHS:
                    case HiveSqlParser.KW_MOVE:
                    case HiveSqlParser.KW_MSCK:
                    case HiveSqlParser.KW_NORELY:
                    case HiveSqlParser.KW_NOSCAN:
                    case HiveSqlParser.KW_NOVALIDATE:
                    case HiveSqlParser.KW_NO_DROP:
                    case HiveSqlParser.KW_NULLS:
                    case HiveSqlParser.KW_OFFLINE:
                    case HiveSqlParser.KW_OFFSET:
                    case HiveSqlParser.KW_OPERATOR:
                    case HiveSqlParser.KW_OPTION:
                    case HiveSqlParser.KW_OUTPUTDRIVER:
                    case HiveSqlParser.KW_OUTPUTFORMAT:
                    case HiveSqlParser.KW_OVERWRITE:
                    case HiveSqlParser.KW_OWNER:
                    case HiveSqlParser.KW_PARTITIONED:
                    case HiveSqlParser.KW_PARTITIONS:
                    case HiveSqlParser.KW_PATH:
                    case HiveSqlParser.KW_PLAN:
                    case HiveSqlParser.KW_PLANS:
                    case HiveSqlParser.KW_PLUS:
                    case HiveSqlParser.KW_POOL:
                    case HiveSqlParser.KW_PRINCIPALS:
                    case HiveSqlParser.KW_PROTECTION:
                    case HiveSqlParser.KW_PURGE:
                    case HiveSqlParser.KW_QUARTER:
                    case HiveSqlParser.KW_QUERY:
                    case HiveSqlParser.KW_QUERY_PARALLELISM:
                    case HiveSqlParser.KW_READ:
                    case HiveSqlParser.KW_READONLY:
                    case HiveSqlParser.KW_REBUILD:
                    case HiveSqlParser.KW_RECORDREADER:
                    case HiveSqlParser.KW_RECORDWRITER:
                    case HiveSqlParser.KW_RELOAD:
                    case HiveSqlParser.KW_RELY:
                    case HiveSqlParser.KW_REMOTE:
                    case HiveSqlParser.KW_RENAME:
                    case HiveSqlParser.KW_REOPTIMIZATION:
                    case HiveSqlParser.KW_REPAIR:
                    case HiveSqlParser.KW_REPL:
                    case HiveSqlParser.KW_REPLACE:
                    case HiveSqlParser.KW_REPLICATION:
                    case HiveSqlParser.KW_RESOURCE:
                    case HiveSqlParser.KW_RESPECT:
                    case HiveSqlParser.KW_RESTRICT:
                    case HiveSqlParser.KW_REWRITE:
                    case HiveSqlParser.KW_ROLE:
                    case HiveSqlParser.KW_ROLES:
                    case HiveSqlParser.KW_SCHEDULED:
                    case HiveSqlParser.KW_SCHEDULING_POLICY:
                    case HiveSqlParser.KW_SCHEMA:
                    case HiveSqlParser.KW_SCHEMAS:
                    case HiveSqlParser.KW_SECOND:
                    case HiveSqlParser.KW_SECONDS:
                    case HiveSqlParser.KW_SEMI:
                    case HiveSqlParser.KW_SERDE:
                    case HiveSqlParser.KW_SERDEPROPERTIES:
                    case HiveSqlParser.KW_SERVER:
                    case HiveSqlParser.KW_SETS:
                    case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                    case HiveSqlParser.KW_SHARED:
                    case HiveSqlParser.KW_SHOW:
                    case HiveSqlParser.KW_SHOW_DATABASE:
                    case HiveSqlParser.KW_SKEWED:
                    case HiveSqlParser.KW_SNAPSHOT:
                    case HiveSqlParser.KW_SORT:
                    case HiveSqlParser.KW_SORTED:
                    case HiveSqlParser.KW_SPEC:
                    case HiveSqlParser.KW_SSL:
                    case HiveSqlParser.KW_STATISTICS:
                    case HiveSqlParser.KW_STATUS:
                    case HiveSqlParser.KW_STORED:
                    case HiveSqlParser.KW_STREAMTABLE:
                    case HiveSqlParser.KW_STRING:
                    case HiveSqlParser.KW_STRUCT:
                    case HiveSqlParser.KW_SUMMARY:
                    case HiveSqlParser.KW_SYSTEM_TIME:
                    case HiveSqlParser.KW_SYSTEM_VERSION:
                    case HiveSqlParser.KW_TABLES:
                    case HiveSqlParser.KW_TBLPROPERTIES:
                    case HiveSqlParser.KW_TEMPORARY:
                    case HiveSqlParser.KW_TERMINATED:
                    case HiveSqlParser.KW_TIMESTAMPTZ:
                    case HiveSqlParser.KW_TINYINT:
                    case HiveSqlParser.KW_TOUCH:
                    case HiveSqlParser.KW_TRANSACTION:
                    case HiveSqlParser.KW_TRANSACTIONAL:
                    case HiveSqlParser.KW_TRANSACTIONS:
                    case HiveSqlParser.KW_TRIM:
                    case HiveSqlParser.KW_TYPE:
                    case HiveSqlParser.KW_UNARCHIVE:
                    case HiveSqlParser.KW_UNDO:
                    case HiveSqlParser.KW_UNIONTYPE:
                    case HiveSqlParser.KW_UNKNOWN:
                    case HiveSqlParser.KW_UNLOCK:
                    case HiveSqlParser.KW_UNMANAGED:
                    case HiveSqlParser.KW_UNSET:
                    case HiveSqlParser.KW_UNSIGNED:
                    case HiveSqlParser.KW_URI:
                    case HiveSqlParser.KW_URL:
                    case HiveSqlParser.KW_USE:
                    case HiveSqlParser.KW_UTC:
                    case HiveSqlParser.KW_UTCTIMESTAMP:
                    case HiveSqlParser.KW_VALIDATE:
                    case HiveSqlParser.KW_VALUE_TYPE:
                    case HiveSqlParser.KW_VECTORIZATION:
                    case HiveSqlParser.KW_VIEW:
                    case HiveSqlParser.KW_VIEWS:
                    case HiveSqlParser.KW_WAIT:
                    case HiveSqlParser.KW_WEEK:
                    case HiveSqlParser.KW_WEEKS:
                    case HiveSqlParser.KW_WHILE:
                    case HiveSqlParser.KW_WITHIN:
                    case HiveSqlParser.KW_WORK:
                    case HiveSqlParser.KW_WORKLOAD:
                    case HiveSqlParser.KW_WRITE:
                    case HiveSqlParser.KW_YEAR:
                    case HiveSqlParser.KW_YEARS:
                    case HiveSqlParser.KW_ZONE:
                    case HiveSqlParser.Identifier:
                        {
                            this.state = 1443;
                            this.id_();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showGrants() {
        let localContext = new ShowGrantsContext(this.context, this.state);
        this.enterRule(localContext, 106, HiveSqlParser.RULE_showGrants);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1446;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1447;
                this.match(HiveSqlParser.KW_GRANT);
                this.state = 1449;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 144 || _la === 287 || _la === 369) {
                    {
                        this.state = 1448;
                        this.principalName();
                    }
                }
                this.state = 1453;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 224) {
                    {
                        this.state = 1451;
                        this.match(HiveSqlParser.KW_ON);
                        this.state = 1452;
                        this.privilegeIncludeColObject();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showRolePrincipals() {
        let localContext = new ShowRolePrincipalsContext(this.context, this.state);
        this.enterRule(localContext, 108, HiveSqlParser.RULE_showRolePrincipals);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1455;
                this.match(HiveSqlParser.KW_SHOW);
                this.state = 1456;
                this.match(HiveSqlParser.KW_PRINCIPALS);
                this.state = 1457;
                localContext._roleName = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privilegeIncludeColObject() {
        let localContext = new PrivilegeIncludeColObjectContext(this.context, this.state);
        this.enterRule(localContext, 110, HiveSqlParser.RULE_privilegeIncludeColObject);
        try {
            this.state = 1461;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ALL:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1459;
                        this.match(HiveSqlParser.KW_ALL);
                    }
                    break;
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASE:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLE:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1460;
                        this.privObjectCols();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privilegeObject() {
        let localContext = new PrivilegeObjectContext(this.context, this.state);
        this.enterRule(localContext, 112, HiveSqlParser.RULE_privilegeObject);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1463;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1464;
                this.privObject();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privObject() {
        let localContext = new PrivObjectContext(this.context, this.state);
        this.enterRule(localContext, 114, HiveSqlParser.RULE_privObject);
        let _la;
        try {
            this.state = 1477;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 120, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1466;
                        this.db_schema();
                        this.state = 1467;
                        this.dbSchemaName();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1470;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 329) {
                            {
                                this.state = 1469;
                                this.match(HiveSqlParser.KW_TABLE);
                            }
                        }
                        this.state = 1472;
                        this.tableOrPartition();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1473;
                        this.match(HiveSqlParser.KW_URI);
                        this.state = 1474;
                        localContext._path = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 1475;
                        this.match(HiveSqlParser.KW_SERVER);
                        this.state = 1476;
                        this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privObjectCols() {
        let localContext = new PrivObjectColsContext(this.context, this.state);
        this.enterRule(localContext, 116, HiveSqlParser.RULE_privObjectCols);
        let _la;
        try {
            this.state = 1499;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1479;
                        this.db_schema();
                        this.state = 1480;
                        this.dbSchemaName();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1483;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 329) {
                            {
                                this.state = 1482;
                                this.match(HiveSqlParser.KW_TABLE);
                            }
                        }
                        this.state = 1485;
                        this.tableName();
                        this.state = 1490;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context)) {
                            case 1:
                                {
                                    this.state = 1486;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 1487;
                                    localContext._cols = this.columnNameList();
                                    this.state = 1488;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                        }
                        this.state = 1493;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 237) {
                            {
                                this.state = 1492;
                                this.partitionSpec();
                            }
                        }
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1495;
                        this.match(HiveSqlParser.KW_URI);
                        this.state = 1496;
                        localContext._path = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 1497;
                        this.match(HiveSqlParser.KW_SERVER);
                        this.state = 1498;
                        this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privilegeList() {
        let localContext = new PrivilegeListContext(this.context, this.state);
        this.enterRule(localContext, 118, HiveSqlParser.RULE_privilegeList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1501;
                this.privilegeDef();
                this.state = 1506;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1502;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1503;
                            this.privilegeDef();
                        }
                    }
                    this.state = 1508;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privilegeDef() {
        let localContext = new PrivilegeDefContext(this.context, this.state);
        this.enterRule(localContext, 120, HiveSqlParser.RULE_privilegeDef);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1509;
                this.privilegeType();
                this.state = 1514;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 399) {
                    {
                        this.state = 1510;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 1511;
                        localContext._cols = this.columnNameList();
                        this.state = 1512;
                        this.match(HiveSqlParser.RPAREN);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    privilegeType() {
        let localContext = new PrivilegeTypeContext(this.context, this.state);
        this.enterRule(localContext, 122, HiveSqlParser.RULE_privilegeType);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1516;
                _la = this.tokenStream.LA(1);
                if (!(_la === 7 || _la === 9 || _la === 58 || _la === 86 || _la === 101 || _la === 155 || _la === 161 || _la === 190 || _la === 299 || _la === 309 || _la === 365)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    principalSpecification() {
        let localContext = new PrincipalSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 124, HiveSqlParser.RULE_principalSpecification);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1518;
                this.principalName();
                this.state = 1523;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1519;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1520;
                            this.principalName();
                        }
                    }
                    this.state = 1525;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    principalName() {
        let localContext = new PrincipalNameContext(this.context, this.state);
        this.enterRule(localContext, 126, HiveSqlParser.RULE_principalName);
        try {
            this.state = 1532;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_USER:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1526;
                        this.match(HiveSqlParser.KW_USER);
                        this.state = 1527;
                        this.principalIdentifier();
                    }
                    break;
                case HiveSqlParser.KW_GROUP:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1528;
                        this.match(HiveSqlParser.KW_GROUP);
                        this.state = 1529;
                        this.principalIdentifier();
                    }
                    break;
                case HiveSqlParser.KW_ROLE:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1530;
                        this.match(HiveSqlParser.KW_ROLE);
                        this.state = 1531;
                        this.id_();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    principalAlterName() {
        let localContext = new PrincipalAlterNameContext(this.context, this.state);
        this.enterRule(localContext, 128, HiveSqlParser.RULE_principalAlterName);
        try {
            this.state = 1539;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1534;
                        this.match(HiveSqlParser.KW_USER);
                        this.state = 1535;
                        this.principalIdentifier();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1536;
                        this.match(HiveSqlParser.KW_ROLE);
                        this.state = 1537;
                        this.id_();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1538;
                        this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    withGrantOption() {
        let localContext = new WithGrantOptionContext(this.context, this.state);
        this.enterRule(localContext, 130, HiveSqlParser.RULE_withGrantOption);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1541;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 1542;
                this.match(HiveSqlParser.KW_GRANT);
                this.state = 1543;
                this.match(HiveSqlParser.KW_OPTION);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    grantOptionFor() {
        let localContext = new GrantOptionForContext(this.context, this.state);
        this.enterRule(localContext, 132, HiveSqlParser.RULE_grantOptionFor);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1545;
                this.match(HiveSqlParser.KW_GRANT);
                this.state = 1546;
                this.match(HiveSqlParser.KW_OPTION);
                this.state = 1547;
                this.match(HiveSqlParser.KW_FOR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    adminOptionFor() {
        let localContext = new AdminOptionForContext(this.context, this.state);
        this.enterRule(localContext, 134, HiveSqlParser.RULE_adminOptionFor);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1549;
                this.match(HiveSqlParser.KW_ADMIN);
                this.state = 1550;
                this.match(HiveSqlParser.KW_OPTION);
                this.state = 1551;
                this.match(HiveSqlParser.KW_FOR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    withAdminOption() {
        let localContext = new WithAdminOptionContext(this.context, this.state);
        this.enterRule(localContext, 136, HiveSqlParser.RULE_withAdminOption);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1553;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 1554;
                this.match(HiveSqlParser.KW_ADMIN);
                this.state = 1555;
                this.match(HiveSqlParser.KW_OPTION);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    metastoreCheck() {
        let localContext = new MetastoreCheckContext(this.context, this.state);
        this.enterRule(localContext, 138, HiveSqlParser.RULE_metastoreCheck);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1557;
                this.match(HiveSqlParser.KW_MSCK);
                this.state = 1559;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 276) {
                    {
                        this.state = 1558;
                        localContext._repair = this.match(HiveSqlParser.KW_REPAIR);
                    }
                }
                {
                    this.state = 1561;
                    this.match(HiveSqlParser.KW_TABLE);
                    this.state = 1562;
                    this.tableName();
                    this.state = 1568;
                    this.errorHandler.sync(this);
                    switch (this.interpreter.adaptivePredict(this.tokenStream, 132, this.context)) {
                        case 1:
                            {
                                this.state = 1563;
                                localContext._opt = this.tokenStream.LT(1);
                                _la = this.tokenStream.LA(1);
                                if (!(_la === 4 || _la === 101 || _la === 326)) {
                                    localContext._opt = this.errorHandler.recoverInline(this);
                                }
                                else {
                                    this.errorHandler.reportMatch(this);
                                    this.consume();
                                }
                                this.state = 1564;
                                localContext._parts = this.match(HiveSqlParser.KW_PARTITIONS);
                                this.state = 1566;
                                this.errorHandler.sync(this);
                                switch (this.interpreter.adaptivePredict(this.tokenStream, 131, this.context)) {
                                    case 1:
                                        {
                                            this.state = 1565;
                                            this.partitionSelectorSpec();
                                        }
                                        break;
                                }
                            }
                            break;
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    resourceList() {
        let localContext = new ResourceListContext(this.context, this.state);
        this.enterRule(localContext, 140, HiveSqlParser.RULE_resourceList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1570;
                this.resource();
                this.state = 1575;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1571;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1572;
                            this.resource();
                        }
                    }
                    this.state = 1577;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    resource() {
        let localContext = new ResourceContext(this.context, this.state);
        this.enterRule(localContext, 142, HiveSqlParser.RULE_resource);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1578;
                localContext._resType = this.resourceType();
                this.state = 1579;
                localContext._resPath = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    resourceType() {
        let localContext = new ResourceTypeContext(this.context, this.state);
        this.enterRule(localContext, 144, HiveSqlParser.RULE_resourceType);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1581;
                _la = this.tokenStream.LA(1);
                if (!(_la === 15 || _la === 128 || _la === 170)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createFunctionStatement() {
        let localContext = new CreateFunctionStatementContext(this.context, this.state);
        this.enterRule(localContext, 146, HiveSqlParser.RULE_createFunctionStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1583;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1585;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 333) {
                    {
                        this.state = 1584;
                        localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY);
                    }
                }
                this.state = 1587;
                this.match(HiveSqlParser.KW_FUNCTION);
                this.state = 1588;
                this.functionNameCreate();
                this.state = 1589;
                this.match(HiveSqlParser.KW_AS);
                this.state = 1590;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 1593;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 370) {
                    {
                        this.state = 1591;
                        this.match(HiveSqlParser.KW_USING);
                        this.state = 1592;
                        localContext._rList = this.resourceList();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropFunctionStatement() {
        let localContext = new DropFunctionStatementContext(this.context, this.state);
        this.enterRule(localContext, 148, HiveSqlParser.RULE_dropFunctionStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1595;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1597;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 333) {
                    {
                        this.state = 1596;
                        localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY);
                    }
                }
                this.state = 1599;
                this.match(HiveSqlParser.KW_FUNCTION);
                this.state = 1601;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1600;
                        this.ifExists();
                    }
                }
                this.state = 1603;
                this.functionNameForDDL();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    reloadFunctionsStatement() {
        let localContext = new ReloadFunctionsStatementContext(this.context, this.state);
        this.enterRule(localContext, 150, HiveSqlParser.RULE_reloadFunctionsStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1605;
                this.match(HiveSqlParser.KW_RELOAD);
                this.state = 1606;
                _la = this.tokenStream.LA(1);
                if (!(_la === 141 || _la === 142)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createMacroStatement() {
        let localContext = new CreateMacroStatementContext(this.context, this.state);
        this.enterRule(localContext, 152, HiveSqlParser.RULE_createMacroStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1608;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1609;
                this.match(HiveSqlParser.KW_TEMPORARY);
                this.state = 1610;
                this.match(HiveSqlParser.KW_MACRO);
                this.state = 1611;
                this.match(HiveSqlParser.Identifier);
                this.state = 1612;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1614;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                    {
                        this.state = 1613;
                        this.columnNameTypeList();
                    }
                }
                this.state = 1616;
                this.match(HiveSqlParser.RPAREN);
                this.state = 1617;
                this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropMacroStatement() {
        let localContext = new DropMacroStatementContext(this.context, this.state);
        this.enterRule(localContext, 154, HiveSqlParser.RULE_dropMacroStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1619;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1620;
                this.match(HiveSqlParser.KW_TEMPORARY);
                this.state = 1621;
                this.match(HiveSqlParser.KW_MACRO);
                this.state = 1623;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1622;
                        this.ifExists();
                    }
                }
                this.state = 1625;
                this.match(HiveSqlParser.Identifier);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createIndexStatement() {
        let localContext = new CreateIndexStatementContext(this.context, this.state);
        this.enterRule(localContext, 156, HiveSqlParser.RULE_createIndexStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1627;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1628;
                this.match(HiveSqlParser.KW_INDEX);
                this.state = 1629;
                this.id_();
                this.state = 1630;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1631;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 1632;
                this.tableName();
                this.state = 1633;
                this.columnParenthesesList();
                this.state = 1634;
                this.match(HiveSqlParser.KW_AS);
                this.state = 1635;
                localContext._indextype = this.match(HiveSqlParser.StringLiteral);
                this.state = 1639;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 140, this.context)) {
                    case 1:
                        {
                            this.state = 1636;
                            this.match(HiveSqlParser.KW_WITH);
                            this.state = 1637;
                            this.match(HiveSqlParser.KW_DEFERRED);
                            this.state = 1638;
                            this.match(HiveSqlParser.KW_REBUILD);
                        }
                        break;
                }
                this.state = 1643;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 150) {
                    {
                        this.state = 1641;
                        this.match(HiveSqlParser.KW_IDXPROPERTIES);
                        this.state = 1642;
                        this.tableProperties();
                    }
                }
                this.state = 1648;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 154) {
                    {
                        this.state = 1645;
                        this.match(HiveSqlParser.KW_IN);
                        this.state = 1646;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 1647;
                        this.tableName();
                    }
                }
                this.state = 1653;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 238) {
                    {
                        this.state = 1650;
                        this.match(HiveSqlParser.KW_PARTITIONED);
                        this.state = 1651;
                        this.match(HiveSqlParser.KW_BY);
                        this.state = 1652;
                        this.columnParenthesesList();
                    }
                }
                this.state = 1659;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 291 || _la === 321) {
                    {
                        this.state = 1656;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 291) {
                            {
                                this.state = 1655;
                                this.tableRowFormat();
                            }
                        }
                        this.state = 1658;
                        this.tableFileFormat();
                    }
                }
                this.state = 1662;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 189) {
                    {
                        this.state = 1661;
                        this.locationPath();
                    }
                }
                this.state = 1665;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 332) {
                    {
                        this.state = 1664;
                        this.tablePropertiesPrefixed();
                    }
                }
                this.state = 1668;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 1667;
                        this.tableComment();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropIndexStatement() {
        let localContext = new DropIndexStatementContext(this.context, this.state);
        this.enterRule(localContext, 158, HiveSqlParser.RULE_dropIndexStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1670;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1671;
                this.match(HiveSqlParser.KW_INDEX);
                this.state = 1673;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1672;
                        this.ifExists();
                    }
                }
                this.state = 1675;
                this.id_();
                this.state = 1676;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1677;
                this.tableName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createViewStatement() {
        let localContext = new CreateViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 160, HiveSqlParser.RULE_createViewStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1679;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1682;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 228) {
                    {
                        this.state = 1680;
                        this.match(HiveSqlParser.KW_OR);
                        this.state = 1681;
                        this.match(HiveSqlParser.KW_REPLACE);
                    }
                }
                this.state = 1684;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 1686;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1685;
                        this.ifNotExists();
                    }
                }
                this.state = 1688;
                localContext._name = this.viewNameCreate();
                this.state = 1693;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 399) {
                    {
                        this.state = 1689;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 1690;
                        this.columnNameCommentList();
                        this.state = 1691;
                        this.match(HiveSqlParser.RPAREN);
                    }
                }
                this.state = 1696;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 1695;
                        this.tableComment();
                    }
                }
                this.state = 1699;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 238) {
                    {
                        this.state = 1698;
                        this.viewPartition();
                    }
                }
                this.state = 1702;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 332) {
                    {
                        this.state = 1701;
                        this.tablePropertiesPrefixed();
                    }
                }
                this.state = 1704;
                this.match(HiveSqlParser.KW_AS);
                this.state = 1705;
                this.selectStatementWithCTE();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewPartition() {
        let localContext = new ViewPartitionContext(this.context, this.state);
        this.enterRule(localContext, 162, HiveSqlParser.RULE_viewPartition);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1707;
                this.match(HiveSqlParser.KW_PARTITIONED);
                this.state = 1708;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1714;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.LPAREN:
                        {
                            this.state = 1709;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 1710;
                            this.columnNameList();
                        }
                        break;
                    case HiveSqlParser.KW_SPEC:
                        {
                            this.state = 1711;
                            this.match(HiveSqlParser.KW_SPEC);
                            this.state = 1712;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 1713;
                            localContext._spec = this.partitionTransformSpec();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 1716;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewOrganization() {
        let localContext = new ViewOrganizationContext(this.context, this.state);
        this.enterRule(localContext, 164, HiveSqlParser.RULE_viewOrganization);
        try {
            this.state = 1720;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_CLUSTERED:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1718;
                        this.viewClusterSpec();
                    }
                    break;
                case HiveSqlParser.KW_DISTRIBUTED:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1719;
                        this.viewComplexSpec();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewClusterSpec() {
        let localContext = new ViewClusterSpecContext(this.context, this.state);
        this.enterRule(localContext, 166, HiveSqlParser.RULE_viewClusterSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1722;
                this.match(HiveSqlParser.KW_CLUSTERED);
                this.state = 1723;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1724;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1725;
                this.columnNameList();
                this.state = 1726;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewComplexSpec() {
        let localContext = new ViewComplexSpecContext(this.context, this.state);
        this.enterRule(localContext, 168, HiveSqlParser.RULE_viewComplexSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1728;
                this.viewDistSpec();
                this.state = 1729;
                this.viewSortSpec();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewDistSpec() {
        let localContext = new ViewDistSpecContext(this.context, this.state);
        this.enterRule(localContext, 170, HiveSqlParser.RULE_viewDistSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1731;
                this.match(HiveSqlParser.KW_DISTRIBUTED);
                this.state = 1732;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1733;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1734;
                localContext._colList = this.columnNameList();
                this.state = 1735;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewSortSpec() {
        let localContext = new ViewSortSpecContext(this.context, this.state);
        this.enterRule(localContext, 172, HiveSqlParser.RULE_viewSortSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1737;
                this.match(HiveSqlParser.KW_SORTED);
                this.state = 1738;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1739;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1740;
                localContext._colList = this.columnNameList();
                this.state = 1741;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropViewStatement() {
        let localContext = new DropViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 174, HiveSqlParser.RULE_dropViewStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1743;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1744;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 1746;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1745;
                        this.ifExists();
                    }
                }
                this.state = 1748;
                this.viewName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createMaterializedViewStatement() {
        let localContext = new CreateMaterializedViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 176, HiveSqlParser.RULE_createMaterializedViewStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1750;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1751;
                this.match(HiveSqlParser.KW_MATERIALIZED);
                this.state = 1752;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 1754;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1753;
                        this.ifNotExists();
                    }
                }
                this.state = 1756;
                localContext._name = this.viewNameCreate();
                this.state = 1758;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 94 || _la === 95) {
                    {
                        this.state = 1757;
                        this.rewriteDisabled();
                    }
                }
                this.state = 1761;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 1760;
                        this.tableComment();
                    }
                }
                this.state = 1764;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 238) {
                    {
                        this.state = 1763;
                        this.viewPartition();
                    }
                }
                this.state = 1767;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 42 || _la === 98) {
                    {
                        this.state = 1766;
                        this.viewOrganization();
                    }
                }
                this.state = 1770;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 291) {
                    {
                        this.state = 1769;
                        this.tableRowFormat();
                    }
                }
                this.state = 1773;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 321) {
                    {
                        this.state = 1772;
                        this.tableFileFormat();
                    }
                }
                this.state = 1776;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 189) {
                    {
                        this.state = 1775;
                        this.locationPath();
                    }
                }
                this.state = 1779;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 332) {
                    {
                        this.state = 1778;
                        this.tablePropertiesPrefixed();
                    }
                }
                this.state = 1781;
                this.match(HiveSqlParser.KW_AS);
                this.state = 1782;
                this.selectStatementWithCTE();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropMaterializedViewStatement() {
        let localContext = new DropMaterializedViewStatementContext(this.context, this.state);
        this.enterRule(localContext, 178, HiveSqlParser.RULE_dropMaterializedViewStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1784;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1785;
                this.match(HiveSqlParser.KW_MATERIALIZED);
                this.state = 1786;
                this.match(HiveSqlParser.KW_VIEW);
                this.state = 1788;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 1787;
                        this.ifExists();
                    }
                }
                this.state = 1790;
                this.viewName();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createScheduledQueryStatement() {
        let localContext = new CreateScheduledQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 180, HiveSqlParser.RULE_createScheduledQueryStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1792;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 1793;
                this.match(HiveSqlParser.KW_SCHEDULED);
                this.state = 1794;
                this.match(HiveSqlParser.KW_QUERY);
                this.state = 1795;
                localContext._name = this.id_();
                this.state = 1796;
                this.scheduleSpec();
                this.state = 1798;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 116) {
                    {
                        this.state = 1797;
                        this.executedAsSpec();
                    }
                }
                this.state = 1801;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 12291) !== 0)) {
                    {
                        this.state = 1800;
                        this.enableSpecification();
                    }
                }
                this.state = 1803;
                this.definedAsSpec();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropScheduledQueryStatement() {
        let localContext = new DropScheduledQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 182, HiveSqlParser.RULE_dropScheduledQueryStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1805;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 1806;
                this.match(HiveSqlParser.KW_SCHEDULED);
                this.state = 1807;
                this.match(HiveSqlParser.KW_QUERY);
                this.state = 1808;
                localContext._name = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterScheduledQueryStatement() {
        let localContext = new AlterScheduledQueryStatementContext(this.context, this.state);
        this.enterRule(localContext, 184, HiveSqlParser.RULE_alterScheduledQueryStatement);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1810;
                this.match(HiveSqlParser.KW_ALTER);
                this.state = 1811;
                this.match(HiveSqlParser.KW_SCHEDULED);
                this.state = 1812;
                this.match(HiveSqlParser.KW_QUERY);
                this.state = 1813;
                localContext._name = this.id_();
                this.state = 1814;
                localContext._mod = this.alterScheduledQueryChange();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterScheduledQueryChange() {
        let localContext = new AlterScheduledQueryChangeContext(this.context, this.state);
        this.enterRule(localContext, 186, HiveSqlParser.RULE_alterScheduledQueryChange);
        try {
            this.state = 1821;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_EVERY:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1816;
                        this.scheduleSpec();
                    }
                    break;
                case HiveSqlParser.KW_EXECUTED:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1817;
                        this.executedAsSpec();
                    }
                    break;
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1818;
                        this.enableSpecification();
                    }
                    break;
                case HiveSqlParser.KW_AS:
                case HiveSqlParser.KW_DEFINED:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 1819;
                        this.definedAsSpec();
                    }
                    break;
                case HiveSqlParser.KW_EXECUTE:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 1820;
                        this.match(HiveSqlParser.KW_EXECUTE);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    scheduleSpec() {
        let localContext = new ScheduleSpecContext(this.context, this.state);
        this.enterRule(localContext, 188, HiveSqlParser.RULE_scheduleSpec);
        let _la;
        try {
            this.state = 1838;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_CRON:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1823;
                        this.match(HiveSqlParser.KW_CRON);
                        this.state = 1824;
                        localContext._cronString = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case HiveSqlParser.KW_EVERY:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1825;
                        this.match(HiveSqlParser.KW_EVERY);
                        this.state = 1827;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 431) {
                            {
                                this.state = 1826;
                                localContext._value = this.match(HiveSqlParser.Number);
                            }
                        }
                        this.state = 1829;
                        localContext._qualifier = this.intervalQualifiers();
                        this.state = 1836;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 20 || _la === 223) {
                            {
                                this.state = 1833;
                                this.errorHandler.sync(this);
                                switch (this.tokenStream.LA(1)) {
                                    case HiveSqlParser.KW_AT:
                                        {
                                            this.state = 1830;
                                            this.match(HiveSqlParser.KW_AT);
                                        }
                                        break;
                                    case HiveSqlParser.KW_OFFSET:
                                        {
                                            this.state = 1831;
                                            this.match(HiveSqlParser.KW_OFFSET);
                                            this.state = 1832;
                                            this.match(HiveSqlParser.KW_BY);
                                        }
                                        break;
                                    default:
                                        throw new antlr.NoViableAltException(this);
                                }
                                this.state = 1835;
                                localContext._offsetTs = this.match(HiveSqlParser.StringLiteral);
                            }
                        }
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    executedAsSpec() {
        let localContext = new ExecutedAsSpecContext(this.context, this.state);
        this.enterRule(localContext, 190, HiveSqlParser.RULE_executedAsSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1840;
                this.match(HiveSqlParser.KW_EXECUTED);
                this.state = 1841;
                this.match(HiveSqlParser.KW_AS);
                this.state = 1842;
                localContext._executedAs = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    definedAsSpec() {
        let localContext = new DefinedAsSpecContext(this.context, this.state);
        this.enterRule(localContext, 192, HiveSqlParser.RULE_definedAsSpec);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1845;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 85) {
                    {
                        this.state = 1844;
                        this.match(HiveSqlParser.KW_DEFINED);
                    }
                }
                this.state = 1847;
                this.match(HiveSqlParser.KW_AS);
                this.state = 1848;
                this.statement();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    showStmtIdentifier() {
        let localContext = new ShowStmtIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 194, HiveSqlParser.RULE_showStmtIdentifier);
        try {
            this.state = 1852;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1850;
                        this.id_();
                    }
                    break;
                case HiveSqlParser.StringLiteral:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1851;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableComment() {
        let localContext = new TableCommentContext(this.context, this.state);
        this.enterRule(localContext, 196, HiveSqlParser.RULE_tableComment);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1854;
                this.match(HiveSqlParser.KW_COMMENT);
                this.state = 1855;
                localContext._comment = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableLifecycle() {
        let localContext = new TableLifecycleContext(this.context, this.state);
        this.enterRule(localContext, 198, HiveSqlParser.RULE_tableLifecycle);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1857;
                this.match(HiveSqlParser.KW_LIFECYCLE);
                this.state = 1858;
                this.match(HiveSqlParser.Number);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createTablePartitionSpec() {
        let localContext = new CreateTablePartitionSpecContext(this.context, this.state);
        this.enterRule(localContext, 200, HiveSqlParser.RULE_createTablePartitionSpec);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1860;
                this.match(HiveSqlParser.KW_PARTITIONED);
                this.state = 1861;
                this.match(HiveSqlParser.KW_BY);
                this.state = 1870;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.LPAREN:
                        {
                            this.state = 1862;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 1865;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 178, this.context)) {
                                case 1:
                                    {
                                        this.state = 1863;
                                        localContext._opt1 = this.createTablePartitionColumnTypeSpec();
                                    }
                                    break;
                                case 2:
                                    {
                                        this.state = 1864;
                                        localContext._opt2 = this.columnNameList();
                                    }
                                    break;
                            }
                        }
                        break;
                    case HiveSqlParser.KW_SPEC:
                        {
                            this.state = 1867;
                            this.match(HiveSqlParser.KW_SPEC);
                            this.state = 1868;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 1869;
                            localContext._spec = this.partitionTransformSpec();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 1872;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createTablePartitionColumnTypeSpec() {
        let localContext = new CreateTablePartitionColumnTypeSpecContext(this.context, this.state);
        this.enterRule(localContext, 202, HiveSqlParser.RULE_createTablePartitionColumnTypeSpec);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1874;
                this.columnNameTypeConstraint();
                this.state = 1879;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1875;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1876;
                            this.columnNameTypeConstraint();
                        }
                    }
                    this.state = 1881;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionTransformSpec() {
        let localContext = new PartitionTransformSpecContext(this.context, this.state);
        this.enterRule(localContext, 204, HiveSqlParser.RULE_partitionTransformSpec);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1882;
                this.partitionTransformType();
                this.state = 1887;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 1883;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 1884;
                            this.partitionTransformType();
                        }
                    }
                    this.state = 1889;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionTransformType() {
        let localContext = new PartitionTransformTypeContext(this.context, this.state);
        this.enterRule(localContext, 206, HiveSqlParser.RULE_partitionTransformType);
        let _la;
        try {
            this.state = 1908;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1890;
                        this.columnName();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1895;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_YEAR:
                            case HiveSqlParser.KW_YEARS:
                                {
                                    this.state = 1891;
                                    this.year();
                                }
                                break;
                            case HiveSqlParser.KW_MONTH:
                            case HiveSqlParser.KW_MONTHS:
                                {
                                    this.state = 1892;
                                    this.month();
                                }
                                break;
                            case HiveSqlParser.KW_DAY:
                            case HiveSqlParser.KW_DAYS:
                                {
                                    this.state = 1893;
                                    this.day();
                                }
                                break;
                            case HiveSqlParser.KW_HOUR:
                            case HiveSqlParser.KW_HOURS:
                                {
                                    this.state = 1894;
                                    this.hour();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                        this.state = 1897;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 1898;
                        this.columnName();
                        this.state = 1899;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 1901;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 30 || _la === 351)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 1902;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 1903;
                        localContext._value = this.match(HiveSqlParser.Number);
                        this.state = 1904;
                        this.match(HiveSqlParser.COMMA);
                        this.state = 1905;
                        this.columnName();
                        this.state = 1906;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableBuckets() {
        let localContext = new TableBucketsContext(this.context, this.state);
        this.enterRule(localContext, 208, HiveSqlParser.RULE_tableBuckets);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1910;
                this.match(HiveSqlParser.KW_CLUSTERED);
                this.state = 1911;
                this.match(HiveSqlParser.KW_BY);
                this.state = 1912;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1913;
                localContext._bucketCols = this.columnNameList();
                this.state = 1914;
                this.match(HiveSqlParser.RPAREN);
                this.state = 1921;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 315) {
                    {
                        this.state = 1915;
                        this.match(HiveSqlParser.KW_SORTED);
                        this.state = 1916;
                        this.match(HiveSqlParser.KW_BY);
                        this.state = 1917;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 1918;
                        localContext._sortCols = this.columnNameOrderList();
                        this.state = 1919;
                        this.match(HiveSqlParser.RPAREN);
                    }
                }
                this.state = 1923;
                this.match(HiveSqlParser.KW_INTO);
                this.state = 1924;
                localContext._num = this.match(HiveSqlParser.Number);
                this.state = 1925;
                this.match(HiveSqlParser.KW_BUCKETS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableSkewed() {
        let localContext = new TableSkewedContext(this.context, this.state);
        this.enterRule(localContext, 210, HiveSqlParser.RULE_tableSkewed);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1927;
                this.match(HiveSqlParser.KW_SKEWED);
                this.state = 1928;
                this.match(HiveSqlParser.KW_BY);
                this.state = 1929;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1930;
                localContext._skewedCols = this.columnNameList();
                this.state = 1931;
                this.match(HiveSqlParser.RPAREN);
                this.state = 1932;
                this.match(HiveSqlParser.KW_ON);
                this.state = 1933;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1934;
                localContext._skewedValues = this.skewedValueElement();
                this.state = 1935;
                this.match(HiveSqlParser.RPAREN);
                this.state = 1937;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context)) {
                    case 1:
                        {
                            this.state = 1936;
                            this.storedAsDirs();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rowFormat() {
        let localContext = new RowFormatContext(this.context, this.state);
        this.enterRule(localContext, 212, HiveSqlParser.RULE_rowFormat);
        try {
            this.state = 1941;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1939;
                        this.rowFormatSerde();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1940;
                        this.rowFormatDelimited();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    recordReader() {
        let localContext = new RecordReaderContext(this.context, this.state);
        this.enterRule(localContext, 214, HiveSqlParser.RULE_recordReader);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1943;
                this.match(HiveSqlParser.KW_RECORDREADER);
                this.state = 1944;
                this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    recordWriter() {
        let localContext = new RecordWriterContext(this.context, this.state);
        this.enterRule(localContext, 216, HiveSqlParser.RULE_recordWriter);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1946;
                this.match(HiveSqlParser.KW_RECORDWRITER);
                this.state = 1947;
                this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rowFormatSerde() {
        let localContext = new RowFormatSerdeContext(this.context, this.state);
        this.enterRule(localContext, 218, HiveSqlParser.RULE_rowFormatSerde);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1949;
                this.match(HiveSqlParser.KW_ROW);
                this.state = 1950;
                this.match(HiveSqlParser.KW_FORMAT);
                this.state = 1951;
                this.match(HiveSqlParser.KW_SERDE);
                this.state = 1952;
                localContext._name = this.match(HiveSqlParser.StringLiteral);
                this.state = 1956;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context)) {
                    case 1:
                        {
                            this.state = 1953;
                            this.match(HiveSqlParser.KW_WITH);
                            this.state = 1954;
                            this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                            this.state = 1955;
                            localContext._serderops = this.tableProperties();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rowFormatDelimited() {
        let localContext = new RowFormatDelimitedContext(this.context, this.state);
        this.enterRule(localContext, 220, HiveSqlParser.RULE_rowFormatDelimited);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1958;
                this.match(HiveSqlParser.KW_ROW);
                this.state = 1959;
                this.match(HiveSqlParser.KW_FORMAT);
                this.state = 1960;
                this.match(HiveSqlParser.KW_DELIMITED);
                this.state = 1962;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 127) {
                    {
                        this.state = 1961;
                        this.tableRowFormatFieldIdentifier();
                    }
                }
                this.state = 1965;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 44) {
                    {
                        this.state = 1964;
                        this.tableRowFormatCollItemsIdentifier();
                    }
                }
                this.state = 1968;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context)) {
                    case 1:
                        {
                            this.state = 1967;
                            this.tableRowFormatMapKeysIdentifier();
                        }
                        break;
                }
                this.state = 1971;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 186) {
                    {
                        this.state = 1970;
                        this.tableRowFormatLinesIdentifier();
                    }
                }
                this.state = 1974;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 219) {
                    {
                        this.state = 1973;
                        this.tableRowNullFormat();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableRowFormat() {
        let localContext = new TableRowFormatContext(this.context, this.state);
        this.enterRule(localContext, 222, HiveSqlParser.RULE_tableRowFormat);
        try {
            this.state = 1978;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 193, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1976;
                        this.rowFormatDelimited();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1977;
                        this.rowFormatSerde();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tablePropertiesPrefixed() {
        let localContext = new TablePropertiesPrefixedContext(this.context, this.state);
        this.enterRule(localContext, 224, HiveSqlParser.RULE_tablePropertiesPrefixed);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1980;
                this.match(HiveSqlParser.KW_TBLPROPERTIES);
                this.state = 1981;
                this.tableProperties();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableProperties() {
        let localContext = new TablePropertiesContext(this.context, this.state);
        this.enterRule(localContext, 226, HiveSqlParser.RULE_tableProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1983;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1984;
                this.tablePropertiesList();
                this.state = 1985;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tablePropertiesList() {
        let localContext = new TablePropertiesListContext(this.context, this.state);
        this.enterRule(localContext, 228, HiveSqlParser.RULE_tablePropertiesList);
        let _la;
        try {
            this.state = 1996;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 195, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 1987;
                        this.keyValuePropertyList();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 1988;
                        localContext._key = this.match(HiveSqlParser.StringLiteral);
                        this.state = 1993;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                                {
                                    this.state = 1989;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 1990;
                                    localContext._key = this.match(HiveSqlParser.StringLiteral);
                                }
                            }
                            this.state = 1995;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    keyValueProperties() {
        let localContext = new KeyValuePropertiesContext(this.context, this.state);
        this.enterRule(localContext, 230, HiveSqlParser.RULE_keyValueProperties);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 1998;
                this.match(HiveSqlParser.LPAREN);
                this.state = 1999;
                this.keyValuePropertyList();
                this.state = 2000;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    keyValuePropertyList() {
        let localContext = new KeyValuePropertyListContext(this.context, this.state);
        this.enterRule(localContext, 232, HiveSqlParser.RULE_keyValuePropertyList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2002;
                this.keyValueProperty();
                this.state = 2007;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2003;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2004;
                            this.keyValueProperty();
                        }
                    }
                    this.state = 2009;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    keyValueProperty() {
        let localContext = new KeyValuePropertyContext(this.context, this.state);
        this.enterRule(localContext, 234, HiveSqlParser.RULE_keyValueProperty);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2010;
                localContext._key = this.match(HiveSqlParser.StringLiteral);
                this.state = 2011;
                this.match(HiveSqlParser.EQUAL);
                this.state = 2012;
                localContext._value = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableRowFormatFieldIdentifier() {
        let localContext = new TableRowFormatFieldIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 236, HiveSqlParser.RULE_tableRowFormatFieldIdentifier);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2014;
                this.match(HiveSqlParser.KW_FIELDS);
                this.state = 2015;
                this.match(HiveSqlParser.KW_TERMINATED);
                this.state = 2016;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2017;
                localContext._fldIdnt = this.match(HiveSqlParser.StringLiteral);
                this.state = 2021;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 110) {
                    {
                        this.state = 2018;
                        this.match(HiveSqlParser.KW_ESCAPED);
                        this.state = 2019;
                        this.match(HiveSqlParser.KW_BY);
                        this.state = 2020;
                        localContext._fldEscape = this.match(HiveSqlParser.StringLiteral);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableRowFormatCollItemsIdentifier() {
        let localContext = new TableRowFormatCollItemsIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 238, HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2023;
                this.match(HiveSqlParser.KW_COLLECTION);
                this.state = 2024;
                this.match(HiveSqlParser.KW_ITEMS);
                this.state = 2025;
                this.match(HiveSqlParser.KW_TERMINATED);
                this.state = 2026;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2027;
                localContext._collIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableRowFormatMapKeysIdentifier() {
        let localContext = new TableRowFormatMapKeysIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 240, HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2029;
                this.match(HiveSqlParser.KW_MAP);
                this.state = 2030;
                this.match(HiveSqlParser.KW_KEYS);
                this.state = 2031;
                this.match(HiveSqlParser.KW_TERMINATED);
                this.state = 2032;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2033;
                localContext._mapKeysIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableRowFormatLinesIdentifier() {
        let localContext = new TableRowFormatLinesIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 242, HiveSqlParser.RULE_tableRowFormatLinesIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2035;
                this.match(HiveSqlParser.KW_LINES);
                this.state = 2036;
                this.match(HiveSqlParser.KW_TERMINATED);
                this.state = 2037;
                this.match(HiveSqlParser.KW_BY);
                this.state = 2038;
                localContext._linesIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableRowNullFormat() {
        let localContext = new TableRowNullFormatContext(this.context, this.state);
        this.enterRule(localContext, 244, HiveSqlParser.RULE_tableRowNullFormat);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2040;
                this.match(HiveSqlParser.KW_NULL);
                this.state = 2041;
                this.match(HiveSqlParser.KW_DEFINED);
                this.state = 2042;
                this.match(HiveSqlParser.KW_AS);
                this.state = 2043;
                localContext._nullIdnt = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableFileFormat() {
        let localContext = new TableFileFormatContext(this.context, this.state);
        this.enterRule(localContext, 246, HiveSqlParser.RULE_tableFileFormat);
        let _la;
        try {
            this.state = 2086;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 203, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2045;
                        this.match(HiveSqlParser.KW_STORED);
                        this.state = 2046;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 2047;
                        this.match(HiveSqlParser.KW_INPUTFORMAT);
                        this.state = 2048;
                        localContext._inFmt = this.match(HiveSqlParser.StringLiteral);
                        this.state = 2049;
                        this.match(HiveSqlParser.KW_OUTPUTFORMAT);
                        this.state = 2050;
                        localContext._outFmt = this.match(HiveSqlParser.StringLiteral);
                        this.state = 2055;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 159) {
                            {
                                this.state = 2051;
                                this.match(HiveSqlParser.KW_INPUTDRIVER);
                                this.state = 2052;
                                localContext._inDriver = this.match(HiveSqlParser.StringLiteral);
                                this.state = 2053;
                                this.match(HiveSqlParser.KW_OUTPUTDRIVER);
                                this.state = 2054;
                                localContext._outDriver = this.match(HiveSqlParser.StringLiteral);
                            }
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2057;
                        this.match(HiveSqlParser.KW_STORED);
                        this.state = 2058;
                        this.match(HiveSqlParser.KW_BY);
                        this.state = 2059;
                        localContext._storageHandler = this.match(HiveSqlParser.StringLiteral);
                        this.state = 2063;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 199, this.context)) {
                            case 1:
                                {
                                    this.state = 2060;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 2061;
                                    this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                                    this.state = 2062;
                                    localContext._serdeprops = this.tableProperties();
                                }
                                break;
                        }
                        this.state = 2068;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 321) {
                            {
                                this.state = 2065;
                                this.match(HiveSqlParser.KW_STORED);
                                this.state = 2066;
                                this.match(HiveSqlParser.KW_AS);
                                this.state = 2067;
                                localContext._fileformat = this.id_();
                            }
                        }
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2070;
                        this.match(HiveSqlParser.KW_STORED);
                        this.state = 2071;
                        this.match(HiveSqlParser.KW_BY);
                        this.state = 2072;
                        localContext._genericSpec = this.id_();
                        this.state = 2076;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context)) {
                            case 1:
                                {
                                    this.state = 2073;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 2074;
                                    this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                                    this.state = 2075;
                                    localContext._serdeprops = this.tableProperties();
                                }
                                break;
                        }
                        this.state = 2081;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 321) {
                            {
                                this.state = 2078;
                                this.match(HiveSqlParser.KW_STORED);
                                this.state = 2079;
                                this.match(HiveSqlParser.KW_AS);
                                this.state = 2080;
                                localContext._fileformat = this.id_();
                            }
                        }
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2083;
                        this.match(HiveSqlParser.KW_STORED);
                        this.state = 2084;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 2085;
                        localContext._genericSpec = this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameTypeList() {
        let localContext = new ColumnNameTypeListContext(this.context, this.state);
        this.enterRule(localContext, 248, HiveSqlParser.RULE_columnNameTypeList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2088;
                this.columnNameType();
                this.state = 2093;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2089;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2090;
                            this.columnNameType();
                        }
                    }
                    this.state = 2095;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameTypeOrConstraintList() {
        let localContext = new ColumnNameTypeOrConstraintListContext(this.context, this.state);
        this.enterRule(localContext, 250, HiveSqlParser.RULE_columnNameTypeOrConstraintList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2096;
                this.columnNameTypeOrConstraint();
                this.state = 2101;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2097;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2098;
                            this.columnNameTypeOrConstraint();
                        }
                    }
                    this.state = 2103;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameColonTypeList() {
        let localContext = new ColumnNameColonTypeListContext(this.context, this.state);
        this.enterRule(localContext, 252, HiveSqlParser.RULE_columnNameColonTypeList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2104;
                this.columnNameColonType();
                this.state = 2109;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2105;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2106;
                            this.columnNameColonType();
                        }
                    }
                    this.state = 2111;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameList() {
        let localContext = new ColumnNameListContext(this.context, this.state);
        this.enterRule(localContext, 254, HiveSqlParser.RULE_columnNameList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2112;
                this.columnName();
                this.state = 2117;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2113;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2114;
                            this.columnName();
                        }
                    }
                    this.state = 2119;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnName() {
        let localContext = new ColumnNameContext(this.context, this.state);
        this.enterRule(localContext, 256, HiveSqlParser.RULE_columnName);
        try {
            this.state = 2122;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2120;
                        this.poolPath();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2121;
                        if (!(this.shouldMatchEmpty())) {
                            throw this.createFailedPredicateException("this.shouldMatchEmpty()");
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNamePath() {
        let localContext = new ColumnNamePathContext(this.context, this.state);
        this.enterRule(localContext, 258, HiveSqlParser.RULE_columnNamePath);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2124;
                this.poolPath();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameCreate() {
        let localContext = new ColumnNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 260, HiveSqlParser.RULE_columnNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2126;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    extColumnName() {
        let localContext = new ExtColumnNameContext(this.context, this.state);
        this.enterRule(localContext, 262, HiveSqlParser.RULE_extColumnName);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2128;
                this.columnName();
                this.state = 2138;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 395) {
                    {
                        {
                            this.state = 2129;
                            this.match(HiveSqlParser.DOT);
                            this.state = 2134;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 209, this.context)) {
                                case 1:
                                    {
                                        this.state = 2130;
                                        this.match(HiveSqlParser.KW_ELEM_TYPE);
                                    }
                                    break;
                                case 2:
                                    {
                                        this.state = 2131;
                                        this.match(HiveSqlParser.KW_KEY_TYPE);
                                    }
                                    break;
                                case 3:
                                    {
                                        this.state = 2132;
                                        this.match(HiveSqlParser.KW_VALUE_TYPE);
                                    }
                                    break;
                                case 4:
                                    {
                                        this.state = 2133;
                                        this.id_();
                                    }
                                    break;
                            }
                        }
                    }
                    this.state = 2140;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameOrderList() {
        let localContext = new ColumnNameOrderListContext(this.context, this.state);
        this.enterRule(localContext, 264, HiveSqlParser.RULE_columnNameOrderList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2141;
                this.columnNameOrder();
                this.state = 2146;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2142;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2143;
                            this.columnNameOrder();
                        }
                    }
                    this.state = 2148;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnParenthesesList() {
        let localContext = new ColumnParenthesesListContext(this.context, this.state);
        this.enterRule(localContext, 266, HiveSqlParser.RULE_columnParenthesesList);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2149;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2150;
                this.columnNameList();
                this.state = 2151;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    enableValidateSpecification() {
        let localContext = new EnableValidateSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 268, HiveSqlParser.RULE_enableValidateSpecification);
        let _la;
        try {
            this.state = 2158;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2153;
                        this.enableSpecification();
                        this.state = 2155;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 217 || _la === 373) {
                            {
                                this.state = 2154;
                                this.validateSpecification();
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_NOT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2157;
                        this.enforcedSpecification();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    enableSpecification() {
        let localContext = new EnableSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 270, HiveSqlParser.RULE_enableSpecification);
        try {
            this.state = 2162;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2160;
                        this.enable();
                    }
                    break;
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2161;
                        this.disable();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    validateSpecification() {
        let localContext = new ValidateSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 272, HiveSqlParser.RULE_validateSpecification);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2164;
                _la = this.tokenStream.LA(1);
                if (!(_la === 217 || _la === 373)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    enforcedSpecification() {
        let localContext = new EnforcedSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 274, HiveSqlParser.RULE_enforcedSpecification);
        try {
            this.state = 2169;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ENFORCED:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2166;
                        this.match(HiveSqlParser.KW_ENFORCED);
                    }
                    break;
                case HiveSqlParser.KW_NOT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2167;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 2168;
                        this.match(HiveSqlParser.KW_ENFORCED);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    relySpecification() {
        let localContext = new RelySpecificationContext(this.context, this.state);
        this.enterRule(localContext, 276, HiveSqlParser.RULE_relySpecification);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2171;
                _la = this.tokenStream.LA(1);
                if (!(_la === 214 || _la === 272)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createConstraint() {
        let localContext = new CreateConstraintContext(this.context, this.state);
        this.enterRule(localContext, 278, HiveSqlParser.RULE_createConstraint);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2175;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 55) {
                    {
                        this.state = 2173;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2174;
                        localContext._constraintName = this.id_();
                    }
                }
                this.state = 2177;
                this.tableLevelConstraint();
                this.state = 2179;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                    {
                        this.state = 2178;
                        this.constraintOptsCreate();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterConstraintWithName() {
        let localContext = new AlterConstraintWithNameContext(this.context, this.state);
        this.enterRule(localContext, 280, HiveSqlParser.RULE_alterConstraintWithName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2181;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2182;
                localContext._constraintName = this.id_();
                this.state = 2183;
                this.tableLevelConstraint();
                this.state = 2185;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context)) {
                    case 1:
                        {
                            this.state = 2184;
                            this.constraintOptsAlter();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableLevelConstraint() {
        let localContext = new TableLevelConstraintContext(this.context, this.state);
        this.enterRule(localContext, 282, HiveSqlParser.RULE_tableLevelConstraint);
        try {
            this.state = 2189;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_PRIMARY:
                case HiveSqlParser.KW_UNIQUE:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2187;
                        this.pkUkConstraint();
                    }
                    break;
                case HiveSqlParser.KW_CHECK:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2188;
                        this.checkConstraint();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    pkUkConstraint() {
        let localContext = new PkUkConstraintContext(this.context, this.state);
        this.enterRule(localContext, 284, HiveSqlParser.RULE_pkUkConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2191;
                this.tableConstraintType();
                this.state = 2192;
                localContext._pkCols = this.columnParenthesesList();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    checkConstraint() {
        let localContext = new CheckConstraintContext(this.context, this.state);
        this.enterRule(localContext, 286, HiveSqlParser.RULE_checkConstraint);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2194;
                this.match(HiveSqlParser.KW_CHECK);
                this.state = 2195;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2196;
                this.expression();
                this.state = 2197;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createForeignKey() {
        let localContext = new CreateForeignKeyContext(this.context, this.state);
        this.enterRule(localContext, 288, HiveSqlParser.RULE_createForeignKey);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2201;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 55) {
                    {
                        this.state = 2199;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2200;
                        localContext._constraintName = this.id_();
                    }
                }
                this.state = 2203;
                this.match(HiveSqlParser.KW_FOREIGN);
                this.state = 2204;
                this.match(HiveSqlParser.KW_KEY);
                this.state = 2205;
                localContext._fkCols = this.columnParenthesesList();
                this.state = 2206;
                this.match(HiveSqlParser.KW_REFERENCES);
                this.state = 2207;
                localContext._tabName = this.tableName();
                this.state = 2208;
                localContext._parCols = this.columnParenthesesList();
                this.state = 2210;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                    {
                        this.state = 2209;
                        this.constraintOptsCreate();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterForeignKeyWithName() {
        let localContext = new AlterForeignKeyWithNameContext(this.context, this.state);
        this.enterRule(localContext, 290, HiveSqlParser.RULE_alterForeignKeyWithName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2212;
                this.match(HiveSqlParser.KW_CONSTRAINT);
                this.state = 2213;
                localContext._constraintName = this.id_();
                this.state = 2214;
                this.match(HiveSqlParser.KW_FOREIGN);
                this.state = 2215;
                this.match(HiveSqlParser.KW_KEY);
                this.state = 2216;
                localContext._fkCols = this.columnParenthesesList();
                this.state = 2217;
                this.match(HiveSqlParser.KW_REFERENCES);
                this.state = 2218;
                localContext._tabName = this.tableName();
                this.state = 2219;
                localContext._parCols = this.columnParenthesesList();
                this.state = 2221;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 222, this.context)) {
                    case 1:
                        {
                            this.state = 2220;
                            this.constraintOptsAlter();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    skewedValueElement() {
        let localContext = new SkewedValueElementContext(this.context, this.state);
        this.enterRule(localContext, 292, HiveSqlParser.RULE_skewedValueElement);
        try {
            this.state = 2225;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_CURRENT_DATE:
                case HiveSqlParser.KW_CURRENT_TIMESTAMP:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATE:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FALSE:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULL:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMP:
                case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TRUE:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.QUESTION:
                case HiveSqlParser.StringLiteral:
                case HiveSqlParser.IntegralLiteral:
                case HiveSqlParser.NumberLiteral:
                case HiveSqlParser.Number:
                case HiveSqlParser.Identifier:
                case HiveSqlParser.CharSetName:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2223;
                        this.constantList();
                    }
                    break;
                case HiveSqlParser.LPAREN:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2224;
                        this.skewedColumnValuePairList();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    skewedColumnValuePairList() {
        let localContext = new SkewedColumnValuePairListContext(this.context, this.state);
        this.enterRule(localContext, 294, HiveSqlParser.RULE_skewedColumnValuePairList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2227;
                this.skewedColumnValuePair();
                this.state = 2232;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2228;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2229;
                            this.skewedColumnValuePair();
                        }
                    }
                    this.state = 2234;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    skewedColumnValuePair() {
        let localContext = new SkewedColumnValuePairContext(this.context, this.state);
        this.enterRule(localContext, 296, HiveSqlParser.RULE_skewedColumnValuePair);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2235;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2236;
                localContext._colValues = this.constantList();
                this.state = 2237;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    constantList() {
        let localContext = new ConstantListContext(this.context, this.state);
        this.enterRule(localContext, 298, HiveSqlParser.RULE_constantList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2239;
                this.constant();
                this.state = 2244;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2240;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2241;
                            this.constant();
                        }
                    }
                    this.state = 2246;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    orderSpecification() {
        let localContext = new OrderSpecificationContext(this.context, this.state);
        this.enterRule(localContext, 300, HiveSqlParser.RULE_orderSpecification);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2247;
                _la = this.tokenStream.LA(1);
                if (!(_la === 18 || _la === 89)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    nullOrdering() {
        let localContext = new NullOrderingContext(this.context, this.state);
        this.enterRule(localContext, 302, HiveSqlParser.RULE_nullOrdering);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2249;
                this.match(HiveSqlParser.KW_NULLS);
                this.state = 2250;
                _la = this.tokenStream.LA(1);
                if (!(_la === 130 || _la === 177)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameOrder() {
        let localContext = new ColumnNameOrderContext(this.context, this.state);
        this.enterRule(localContext, 304, HiveSqlParser.RULE_columnNameOrder);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2252;
                this.columnName();
                this.state = 2254;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 18 || _la === 89) {
                    {
                        this.state = 2253;
                        localContext._orderSpec = this.orderSpecification();
                    }
                }
                this.state = 2257;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 220) {
                    {
                        this.state = 2256;
                        localContext._nullSpec = this.nullOrdering();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameCommentList() {
        let localContext = new ColumnNameCommentListContext(this.context, this.state);
        this.enterRule(localContext, 306, HiveSqlParser.RULE_columnNameCommentList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2259;
                this.columnNameComment();
                this.state = 2264;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2260;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2261;
                            this.columnNameComment();
                        }
                    }
                    this.state = 2266;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameComment() {
        let localContext = new ColumnNameCommentContext(this.context, this.state);
        this.enterRule(localContext, 308, HiveSqlParser.RULE_columnNameComment);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2267;
                localContext._colName = this.columnNameCreate();
                this.state = 2270;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 2268;
                        this.match(HiveSqlParser.KW_COMMENT);
                        this.state = 2269;
                        localContext._comment = this.match(HiveSqlParser.StringLiteral);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnRefOrder() {
        let localContext = new ColumnRefOrderContext(this.context, this.state);
        this.enterRule(localContext, 310, HiveSqlParser.RULE_columnRefOrder);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2274;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context)) {
                    case 1:
                        {
                            this.state = 2272;
                            this.columnName();
                        }
                        break;
                    case 2:
                        {
                            this.state = 2273;
                            this.expression();
                        }
                        break;
                }
                this.state = 2277;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context)) {
                    case 1:
                        {
                            this.state = 2276;
                            localContext._orderSpec = this.orderSpecification();
                        }
                        break;
                }
                this.state = 2280;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 220) {
                    {
                        this.state = 2279;
                        localContext._nullSpec = this.nullOrdering();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameType() {
        let localContext = new ColumnNameTypeContext(this.context, this.state);
        this.enterRule(localContext, 312, HiveSqlParser.RULE_columnNameType);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2282;
                localContext._colName = this.columnNameCreate();
                this.state = 2283;
                this.columnType();
                this.state = 2286;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 2284;
                        this.match(HiveSqlParser.KW_COMMENT);
                        this.state = 2285;
                        localContext._comment = this.match(HiveSqlParser.StringLiteral);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameTypeOrConstraint() {
        let localContext = new ColumnNameTypeOrConstraintContext(this.context, this.state);
        this.enterRule(localContext, 314, HiveSqlParser.RULE_columnNameTypeOrConstraint);
        try {
            this.state = 2290;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 234, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2288;
                        this.tableConstraint();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2289;
                        this.columnNameTypeConstraint();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableConstraint() {
        let localContext = new TableConstraintContext(this.context, this.state);
        this.enterRule(localContext, 316, HiveSqlParser.RULE_tableConstraint);
        try {
            this.state = 2294;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2292;
                        this.createForeignKey();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2293;
                        this.createConstraint();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameTypeConstraint() {
        let localContext = new ColumnNameTypeConstraintContext(this.context, this.state);
        this.enterRule(localContext, 318, HiveSqlParser.RULE_columnNameTypeConstraint);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2296;
                localContext._colName = this.columnNameCreate();
                this.state = 2297;
                localContext._colType = this.columnType();
                this.state = 2299;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) {
                    {
                        this.state = 2298;
                        this.columnConstraint();
                    }
                }
                this.state = 2303;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 2301;
                        this.match(HiveSqlParser.KW_COMMENT);
                        this.state = 2302;
                        localContext._comment = this.match(HiveSqlParser.StringLiteral);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnConstraint() {
        let localContext = new ColumnConstraintContext(this.context, this.state);
        this.enterRule(localContext, 320, HiveSqlParser.RULE_columnConstraint);
        try {
            this.state = 2307;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2305;
                        this.foreignKeyConstraint();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2306;
                        this.colConstraint();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    foreignKeyConstraint() {
        let localContext = new ForeignKeyConstraintContext(this.context, this.state);
        this.enterRule(localContext, 322, HiveSqlParser.RULE_foreignKeyConstraint);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2311;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 55) {
                    {
                        this.state = 2309;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2310;
                        localContext._constraintName = this.id_();
                    }
                }
                this.state = 2313;
                this.match(HiveSqlParser.KW_REFERENCES);
                this.state = 2314;
                localContext._tabName = this.tableName();
                this.state = 2315;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2316;
                localContext._colName = this.columnName();
                this.state = 2317;
                this.match(HiveSqlParser.RPAREN);
                this.state = 2319;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                    {
                        this.state = 2318;
                        this.constraintOptsCreate();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    colConstraint() {
        let localContext = new ColConstraintContext(this.context, this.state);
        this.enterRule(localContext, 324, HiveSqlParser.RULE_colConstraint);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2323;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 55) {
                    {
                        this.state = 2321;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2322;
                        localContext._constraintName = this.id_();
                    }
                }
                this.state = 2325;
                this.columnConstraintType();
                this.state = 2327;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) {
                    {
                        this.state = 2326;
                        this.constraintOptsCreate();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterColumnConstraint() {
        let localContext = new AlterColumnConstraintContext(this.context, this.state);
        this.enterRule(localContext, 326, HiveSqlParser.RULE_alterColumnConstraint);
        try {
            this.state = 2331;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 243, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2329;
                        this.alterForeignKeyConstraint();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2330;
                        this.alterColConstraint();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterForeignKeyConstraint() {
        let localContext = new AlterForeignKeyConstraintContext(this.context, this.state);
        this.enterRule(localContext, 328, HiveSqlParser.RULE_alterForeignKeyConstraint);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2335;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 55) {
                    {
                        this.state = 2333;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2334;
                        localContext._constraintName = this.id_();
                    }
                }
                this.state = 2337;
                this.match(HiveSqlParser.KW_REFERENCES);
                this.state = 2338;
                localContext._tabName = this.tableName();
                this.state = 2339;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2340;
                localContext._colName = this.columnName();
                this.state = 2341;
                this.match(HiveSqlParser.RPAREN);
                this.state = 2343;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context)) {
                    case 1:
                        {
                            this.state = 2342;
                            this.constraintOptsAlter();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterColConstraint() {
        let localContext = new AlterColConstraintContext(this.context, this.state);
        this.enterRule(localContext, 330, HiveSqlParser.RULE_alterColConstraint);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2347;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 55) {
                    {
                        this.state = 2345;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2346;
                        localContext._constraintName = this.id_();
                    }
                }
                this.state = 2349;
                this.columnConstraintType();
                this.state = 2351;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context)) {
                    case 1:
                        {
                            this.state = 2350;
                            this.constraintOptsAlter();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnConstraintType() {
        let localContext = new ColumnConstraintTypeContext(this.context, this.state);
        this.enterRule(localContext, 332, HiveSqlParser.RULE_columnConstraintType);
        try {
            this.state = 2359;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_NOT:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2353;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 2354;
                        this.match(HiveSqlParser.KW_NULL);
                    }
                    break;
                case HiveSqlParser.KW_DEFAULT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2355;
                        this.match(HiveSqlParser.KW_DEFAULT);
                        this.state = 2356;
                        this.defaultVal();
                    }
                    break;
                case HiveSqlParser.KW_CHECK:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2357;
                        this.checkConstraint();
                    }
                    break;
                case HiveSqlParser.KW_PRIMARY:
                case HiveSqlParser.KW_UNIQUE:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2358;
                        this.tableConstraintType();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    defaultVal() {
        let localContext = new DefaultValContext(this.context, this.state);
        this.enterRule(localContext, 334, HiveSqlParser.RULE_defaultVal);
        try {
            this.state = 2364;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2361;
                        this.constant();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2362;
                        this.function_();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2363;
                        this.castExpression();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableConstraintType() {
        let localContext = new TableConstraintTypeContext(this.context, this.state);
        this.enterRule(localContext, 336, HiveSqlParser.RULE_tableConstraintType);
        try {
            this.state = 2369;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_PRIMARY:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2366;
                        this.match(HiveSqlParser.KW_PRIMARY);
                        this.state = 2367;
                        this.match(HiveSqlParser.KW_KEY);
                    }
                    break;
                case HiveSqlParser.KW_UNIQUE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2368;
                        this.match(HiveSqlParser.KW_UNIQUE);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    constraintOptsCreate() {
        let localContext = new ConstraintOptsCreateContext(this.context, this.state);
        this.enterRule(localContext, 338, HiveSqlParser.RULE_constraintOptsCreate);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2371;
                this.enableValidateSpecification();
                this.state = 2373;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 214 || _la === 272) {
                    {
                        this.state = 2372;
                        this.relySpecification();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    constraintOptsAlter() {
        let localContext = new ConstraintOptsAlterContext(this.context, this.state);
        this.enterRule(localContext, 340, HiveSqlParser.RULE_constraintOptsAlter);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2375;
                this.enableValidateSpecification();
                this.state = 2377;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 214 || _la === 272) {
                    {
                        this.state = 2376;
                        this.relySpecification();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnNameColonType() {
        let localContext = new ColumnNameColonTypeContext(this.context, this.state);
        this.enterRule(localContext, 342, HiveSqlParser.RULE_columnNameColonType);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2379;
                localContext._colName = this.columnNameCreate();
                this.state = 2380;
                this.match(HiveSqlParser.COLON);
                this.state = 2381;
                this.columnType();
                this.state = 2384;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 2382;
                        this.match(HiveSqlParser.KW_COMMENT);
                        this.state = 2383;
                        localContext._comment = this.match(HiveSqlParser.StringLiteral);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnType() {
        let localContext = new ColumnTypeContext(this.context, this.state);
        this.enterRule(localContext, 344, HiveSqlParser.RULE_columnType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2386;
                this.type_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnTypeList() {
        let localContext = new ColumnTypeListContext(this.context, this.state);
        this.enterRule(localContext, 346, HiveSqlParser.RULE_columnTypeList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2388;
                this.columnType();
                this.state = 2393;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2389;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2390;
                            this.columnType();
                        }
                    }
                    this.state = 2395;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    type_() {
        let localContext = new TypeContext(this.context, this.state);
        this.enterRule(localContext, 348, HiveSqlParser.RULE_type);
        try {
            this.state = 2401;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_BIGINT:
                case HiveSqlParser.KW_BINARY:
                case HiveSqlParser.KW_BOOLEAN:
                case HiveSqlParser.KW_CHAR:
                case HiveSqlParser.KW_DATE:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DEC:
                case HiveSqlParser.KW_DECIMAL:
                case HiveSqlParser.KW_NUMERIC:
                case HiveSqlParser.KW_DOUBLE:
                case HiveSqlParser.KW_FLOAT:
                case HiveSqlParser.KW_INT:
                case HiveSqlParser.KW_INTEGER:
                case HiveSqlParser.KW_REAL:
                case HiveSqlParser.KW_SMALLINT:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_TIMESTAMP:
                case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_VARCHAR:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2396;
                        this.primitiveType();
                    }
                    break;
                case HiveSqlParser.KW_ARRAY:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2397;
                        this.listType();
                    }
                    break;
                case HiveSqlParser.KW_STRUCT:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2398;
                        this.structType();
                    }
                    break;
                case HiveSqlParser.KW_MAP:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2399;
                        this.mapType();
                    }
                    break;
                case HiveSqlParser.KW_UNIONTYPE:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 2400;
                        this.unionType();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    primitiveType() {
        let localContext = new PrimitiveTypeContext(this.context, this.state);
        this.enterRule(localContext, 350, HiveSqlParser.RULE_primitiveType);
        let _la;
        try {
            this.state = 2440;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 259, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2403;
                        this.match(HiveSqlParser.KW_TINYINT);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2404;
                        this.match(HiveSqlParser.KW_SMALLINT);
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2405;
                        this.match(HiveSqlParser.KW_INT);
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2406;
                        this.match(HiveSqlParser.KW_INTEGER);
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 2407;
                        this.match(HiveSqlParser.KW_BIGINT);
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 2408;
                        this.match(HiveSqlParser.KW_BOOLEAN);
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 2409;
                        this.match(HiveSqlParser.KW_FLOAT);
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 2410;
                        this.match(HiveSqlParser.KW_REAL);
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 2411;
                        this.match(HiveSqlParser.KW_DOUBLE);
                        this.state = 2413;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 248) {
                            {
                                this.state = 2412;
                                this.match(HiveSqlParser.KW_PRECISION);
                            }
                        }
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 2415;
                        this.match(HiveSqlParser.KW_DATE);
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 2416;
                        this.match(HiveSqlParser.KW_DATETIME);
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 2417;
                        this.match(HiveSqlParser.KW_TIMESTAMP);
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 2418;
                        this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ);
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 2419;
                        this.match(HiveSqlParser.KW_TIMESTAMP);
                        this.state = 2420;
                        this.match(HiveSqlParser.KW_WITH);
                        this.state = 2421;
                        this.match(HiveSqlParser.KW_LOCAL);
                        this.state = 2422;
                        this.match(HiveSqlParser.KW_TIME);
                        this.state = 2423;
                        this.match(HiveSqlParser.KW_ZONE);
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 2424;
                        this.match(HiveSqlParser.KW_STRING);
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 2425;
                        this.match(HiveSqlParser.KW_BINARY);
                    }
                    break;
                case 17:
                    this.enterOuterAlt(localContext, 17);
                    {
                        this.state = 2426;
                        this.decimal();
                        this.state = 2434;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context)) {
                            case 1:
                                {
                                    this.state = 2427;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 2428;
                                    localContext._prec = this.match(HiveSqlParser.Number);
                                    this.state = 2431;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 397) {
                                        {
                                            this.state = 2429;
                                            this.match(HiveSqlParser.COMMA);
                                            this.state = 2430;
                                            localContext._scale = this.match(HiveSqlParser.Number);
                                        }
                                    }
                                    this.state = 2433;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                        }
                    }
                    break;
                case 18:
                    this.enterOuterAlt(localContext, 18);
                    {
                        this.state = 2436;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 39 || _la === 376)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 2437;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 2438;
                        localContext._length = this.match(HiveSqlParser.Number);
                        this.state = 2439;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    listType() {
        let localContext = new ListTypeContext(this.context, this.state);
        this.enterRule(localContext, 352, HiveSqlParser.RULE_listType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2442;
                this.match(HiveSqlParser.KW_ARRAY);
                this.state = 2443;
                this.match(HiveSqlParser.LESSTHAN);
                this.state = 2444;
                this.type_();
                this.state = 2445;
                this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    structType() {
        let localContext = new StructTypeContext(this.context, this.state);
        this.enterRule(localContext, 354, HiveSqlParser.RULE_structType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2447;
                this.match(HiveSqlParser.KW_STRUCT);
                this.state = 2448;
                this.match(HiveSqlParser.LESSTHAN);
                this.state = 2449;
                this.columnNameColonTypeList();
                this.state = 2450;
                this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    mapType() {
        let localContext = new MapTypeContext(this.context, this.state);
        this.enterRule(localContext, 356, HiveSqlParser.RULE_mapType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2452;
                this.match(HiveSqlParser.KW_MAP);
                this.state = 2453;
                this.match(HiveSqlParser.LESSTHAN);
                this.state = 2454;
                localContext._left = this.primitiveType();
                this.state = 2455;
                this.match(HiveSqlParser.COMMA);
                this.state = 2456;
                localContext._right = this.type_();
                this.state = 2457;
                this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    unionType() {
        let localContext = new UnionTypeContext(this.context, this.state);
        this.enterRule(localContext, 358, HiveSqlParser.RULE_unionType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2459;
                this.match(HiveSqlParser.KW_UNIONTYPE);
                this.state = 2460;
                this.match(HiveSqlParser.LESSTHAN);
                this.state = 2461;
                this.columnTypeList();
                this.state = 2462;
                this.match(HiveSqlParser.GREATERTHAN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    setOperator() {
        let localContext = new SetOperatorContext(this.context, this.state);
        this.enterRule(localContext, 360, HiveSqlParser.RULE_setOperator);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2464;
                _la = this.tokenStream.LA(1);
                if (!(_la === 112 || _la === 164 || _la === 205 || _la === 356)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 2466;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 7 || _la === 96) {
                    {
                        this.state = 2465;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 7 || _la === 96)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    queryStatementExpression() {
        let localContext = new QueryStatementExpressionContext(this.context, this.state);
        this.enterRule(localContext, 362, HiveSqlParser.RULE_queryStatementExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2469;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 387) {
                    {
                        this.state = 2468;
                        localContext._w = this.withClause();
                    }
                }
                this.state = 2471;
                this.queryStatementExpressionBody();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    queryStatementExpressionBody() {
        let localContext = new QueryStatementExpressionBodyContext(this.context, this.state);
        this.enterRule(localContext, 364, HiveSqlParser.RULE_queryStatementExpressionBody);
        try {
            this.state = 2475;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_FROM:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2473;
                        this.fromStatement();
                    }
                    break;
                case HiveSqlParser.KW_INSERT:
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.LPAREN:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2474;
                        this.regularBody();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    withClause() {
        let localContext = new WithClauseContext(this.context, this.state);
        this.enterRule(localContext, 366, HiveSqlParser.RULE_withClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2477;
                this.match(HiveSqlParser.KW_WITH);
                this.state = 2478;
                this.cteStatement();
                this.state = 2483;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2479;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2480;
                            this.cteStatement();
                        }
                    }
                    this.state = 2485;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    cteStatement() {
        let localContext = new CteStatementContext(this.context, this.state);
        this.enterRule(localContext, 368, HiveSqlParser.RULE_cteStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2486;
                this.id_();
                this.state = 2491;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 399) {
                    {
                        this.state = 2487;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 2488;
                        localContext._colAliases = this.columnNameList();
                        this.state = 2489;
                        this.match(HiveSqlParser.RPAREN);
                    }
                }
                this.state = 2493;
                this.match(HiveSqlParser.KW_AS);
                this.state = 2494;
                this.match(HiveSqlParser.LPAREN);
                this.state = 2495;
                this.queryStatementExpression();
                this.state = 2496;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    fromStatement() {
        let localContext = new FromStatementContext(this.context, this.state);
        this.enterRule(localContext, 370, HiveSqlParser.RULE_fromStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2498;
                this.singleFromStatement();
                this.state = 2504;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 112 || _la === 164 || _la === 205 || _la === 356) {
                    {
                        {
                            this.state = 2499;
                            localContext._u = this.setOperator();
                            this.state = 2500;
                            localContext._r = this.singleFromStatement();
                        }
                    }
                    this.state = 2506;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    singleFromStatement() {
        let localContext = new SingleFromStatementContext(this.context, this.state);
        this.enterRule(localContext, 372, HiveSqlParser.RULE_singleFromStatement);
        let _la;
        try {
            this.state = 2578;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 288, this.context)) {
                case 1:
                    localContext = new FromInsertStmtContext(localContext);
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2507;
                        this.fromClause();
                        this.state = 2508;
                        this.insertClause();
                        this.state = 2509;
                        this.selectClause();
                        this.state = 2511;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 178 || _la === 397) {
                            {
                                this.state = 2510;
                                this.lateralView();
                            }
                        }
                        this.state = 2514;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 384) {
                            {
                                this.state = 2513;
                                this.whereClause();
                            }
                        }
                        this.state = 2517;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 144) {
                            {
                                this.state = 2516;
                                this.groupByClause();
                            }
                        }
                        this.state = 2520;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 146) {
                            {
                                this.state = 2519;
                                this.havingClause();
                            }
                        }
                        this.state = 2523;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 386) {
                            {
                                this.state = 2522;
                                this.window_clause();
                            }
                        }
                        this.state = 2526;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 256) {
                            {
                                this.state = 2525;
                                this.qualifyClause();
                            }
                        }
                        this.state = 2529;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 229) {
                            {
                                this.state = 2528;
                                this.orderByClause();
                            }
                        }
                        this.state = 2532;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 41) {
                            {
                                this.state = 2531;
                                this.clusterByClause();
                            }
                        }
                        this.state = 2535;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 97) {
                            {
                                this.state = 2534;
                                this.distributeByClause();
                            }
                        }
                        this.state = 2538;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 314) {
                            {
                                this.state = 2537;
                                this.sortByClause();
                            }
                        }
                        this.state = 2541;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 185) {
                            {
                                this.state = 2540;
                                this.limitClause();
                            }
                        }
                    }
                    break;
                case 2:
                    localContext = new FromSelectStmtContext(localContext);
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2543;
                        this.fromClause();
                        this.state = 2544;
                        this.selectClause();
                        this.state = 2546;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 178 || _la === 397) {
                            {
                                this.state = 2545;
                                this.lateralView();
                            }
                        }
                        this.state = 2549;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 384) {
                            {
                                this.state = 2548;
                                this.whereClause();
                            }
                        }
                        this.state = 2552;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 144) {
                            {
                                this.state = 2551;
                                this.groupByClause();
                            }
                        }
                        this.state = 2555;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 146) {
                            {
                                this.state = 2554;
                                this.havingClause();
                            }
                        }
                        this.state = 2558;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 386) {
                            {
                                this.state = 2557;
                                this.window_clause();
                            }
                        }
                        this.state = 2561;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 256) {
                            {
                                this.state = 2560;
                                this.qualifyClause();
                            }
                        }
                        this.state = 2564;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 229) {
                            {
                                this.state = 2563;
                                this.orderByClause();
                            }
                        }
                        this.state = 2567;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 41) {
                            {
                                this.state = 2566;
                                this.clusterByClause();
                            }
                        }
                        this.state = 2570;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 97) {
                            {
                                this.state = 2569;
                                this.distributeByClause();
                            }
                        }
                        this.state = 2573;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 314) {
                            {
                                this.state = 2572;
                                this.sortByClause();
                            }
                        }
                        this.state = 2576;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 185) {
                            {
                                this.state = 2575;
                                this.limitClause();
                            }
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    regularBody() {
        let localContext = new RegularBodyContext(this.context, this.state);
        this.enterRule(localContext, 374, HiveSqlParser.RULE_regularBody);
        try {
            this.state = 2584;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_INSERT:
                    localContext = new InsertStmtContext(localContext);
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2580;
                        localContext._i = this.insertClause();
                        this.state = 2581;
                        localContext._s = this.selectStatement();
                    }
                    break;
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.LPAREN:
                    localContext = new SelectStmtContext(localContext);
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2583;
                        this.selectStatement();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    atomSelectStatement() {
        let localContext = new AtomSelectStatementContext(this.context, this.state);
        this.enterRule(localContext, 376, HiveSqlParser.RULE_atomSelectStatement);
        let _la;
        try {
            this.state = 2610;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_SELECT:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2586;
                        localContext._s = this.selectClause();
                        this.state = 2588;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context)) {
                            case 1:
                                {
                                    this.state = 2587;
                                    localContext._f = this.fromClause();
                                }
                                break;
                        }
                        this.state = 2591;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 384) {
                            {
                                this.state = 2590;
                                localContext._w = this.whereClause();
                            }
                        }
                        this.state = 2594;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 144) {
                            {
                                this.state = 2593;
                                localContext._g = this.groupByClause();
                            }
                        }
                        this.state = 2597;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 146) {
                            {
                                this.state = 2596;
                                localContext._h = this.havingClause();
                            }
                        }
                        this.state = 2600;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 386) {
                            {
                                this.state = 2599;
                                localContext._win = this.window_clause();
                            }
                        }
                        this.state = 2603;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 256) {
                            {
                                this.state = 2602;
                                localContext._q = this.qualifyClause();
                            }
                        }
                    }
                    break;
                case HiveSqlParser.LPAREN:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2605;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 2606;
                        this.selectStatement();
                        this.state = 2607;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case HiveSqlParser.KW_VALUES:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2609;
                        this.valuesClause();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectStatement() {
        let localContext = new SelectStatementContext(this.context, this.state);
        this.enterRule(localContext, 378, HiveSqlParser.RULE_selectStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2612;
                localContext._a = this.atomSelectStatement();
                this.state = 2614;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 112 || _la === 164 || _la === 205 || _la === 356) {
                    {
                        this.state = 2613;
                        localContext._set_ = this.setOpSelectStatement();
                    }
                }
                this.state = 2617;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 229) {
                    {
                        this.state = 2616;
                        localContext._o = this.orderByClause();
                    }
                }
                this.state = 2620;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 41) {
                    {
                        this.state = 2619;
                        localContext._c = this.clusterByClause();
                    }
                }
                this.state = 2623;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 97) {
                    {
                        this.state = 2622;
                        localContext._d = this.distributeByClause();
                    }
                }
                this.state = 2626;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 314) {
                    {
                        this.state = 2625;
                        localContext._sort = this.sortByClause();
                    }
                }
                this.state = 2629;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 185) {
                    {
                        this.state = 2628;
                        localContext._l = this.limitClause();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    setOpSelectStatement() {
        let localContext = new SetOpSelectStatementContext(this.context, this.state);
        this.enterRule(localContext, 380, HiveSqlParser.RULE_setOpSelectStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2634;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                do {
                    {
                        {
                            this.state = 2631;
                            localContext._u = this.setOperator();
                            this.state = 2632;
                            localContext._b = this.atomSelectStatement();
                        }
                    }
                    this.state = 2636;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                } while (_la === 112 || _la === 164 || _la === 205 || _la === 356);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectStatementWithCTE() {
        let localContext = new SelectStatementWithCTEContext(this.context, this.state);
        this.enterRule(localContext, 382, HiveSqlParser.RULE_selectStatementWithCTE);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2639;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 387) {
                    {
                        this.state = 2638;
                        localContext._w = this.withClause();
                    }
                }
                this.state = 2641;
                this.selectStatement();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    insertClause() {
        let localContext = new InsertClauseContext(this.context, this.state);
        this.enterRule(localContext, 384, HiveSqlParser.RULE_insertClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2643;
                this.match(HiveSqlParser.KW_INSERT);
                this.state = 2660;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_OVERWRITE:
                        {
                            this.state = 2644;
                            this.match(HiveSqlParser.KW_OVERWRITE);
                            this.state = 2645;
                            this.destination();
                            this.state = 2647;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 151) {
                                {
                                    this.state = 2646;
                                    this.ifNotExists();
                                }
                            }
                        }
                        break;
                    case HiveSqlParser.KW_INTO:
                        {
                            this.state = 2649;
                            this.match(HiveSqlParser.KW_INTO);
                            this.state = 2651;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 329) {
                                {
                                    this.state = 2650;
                                    this.match(HiveSqlParser.KW_TABLE);
                                }
                            }
                            this.state = 2653;
                            this.tableOrPartition();
                            this.state = 2658;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context)) {
                                case 1:
                                    {
                                        this.state = 2654;
                                        this.match(HiveSqlParser.LPAREN);
                                        this.state = 2655;
                                        localContext._targetCols = this.columnNameList();
                                        this.state = 2656;
                                        this.match(HiveSqlParser.RPAREN);
                                    }
                                    break;
                            }
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    destination() {
        let localContext = new DestinationContext(this.context, this.state);
        this.enterRule(localContext, 386, HiveSqlParser.RULE_destination);
        let _la;
        try {
            this.state = 2675;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_LOCAL:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2663;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 188) {
                            {
                                this.state = 2662;
                                localContext._local = this.match(HiveSqlParser.KW_LOCAL);
                            }
                        }
                        this.state = 2665;
                        this.match(HiveSqlParser.KW_DIRECTORY);
                        this.state = 2666;
                        this.match(HiveSqlParser.StringLiteral);
                        this.state = 2668;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 291) {
                            {
                                this.state = 2667;
                                this.tableRowFormat();
                            }
                        }
                        this.state = 2671;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 321) {
                            {
                                this.state = 2670;
                                this.tableFileFormat();
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_TABLE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2673;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 2674;
                        this.tableOrPartition();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    limitClause() {
        let localContext = new LimitClauseContext(this.context, this.state);
        this.enterRule(localContext, 388, HiveSqlParser.RULE_limitClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2677;
                this.match(HiveSqlParser.KW_LIMIT);
                this.state = 2686;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context)) {
                    case 1:
                        {
                            this.state = 2680;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context)) {
                                case 1:
                                    {
                                        this.state = 2678;
                                        localContext._offset = this.match(HiveSqlParser.Number);
                                        this.state = 2679;
                                        this.match(HiveSqlParser.COMMA);
                                    }
                                    break;
                            }
                            this.state = 2682;
                            localContext._num = this.match(HiveSqlParser.Number);
                        }
                        break;
                    case 2:
                        {
                            this.state = 2683;
                            localContext._num = this.match(HiveSqlParser.Number);
                            this.state = 2684;
                            this.match(HiveSqlParser.KW_OFFSET);
                            this.state = 2685;
                            localContext._offset = this.match(HiveSqlParser.Number);
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    columnAssignmentClause() {
        let localContext = new ColumnAssignmentClauseContext(this.context, this.state);
        this.enterRule(localContext, 390, HiveSqlParser.RULE_columnAssignmentClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2688;
                this.columnName();
                this.state = 2689;
                this.match(HiveSqlParser.EQUAL);
                this.state = 2690;
                this.precedencePlusExpressionOrDefault();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedencePlusExpressionOrDefault() {
        let localContext = new PrecedencePlusExpressionOrDefaultContext(this.context, this.state);
        this.enterRule(localContext, 392, HiveSqlParser.RULE_precedencePlusExpressionOrDefault);
        try {
            this.state = 2694;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2692;
                        this.match(HiveSqlParser.KW_DEFAULT);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2693;
                        this.precedencePlusExpression();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    setColumnsClause() {
        let localContext = new SetColumnsClauseContext(this.context, this.state);
        this.enterRule(localContext, 394, HiveSqlParser.RULE_setColumnsClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2696;
                this.match(HiveSqlParser.KW_SET);
                this.state = 2697;
                this.columnAssignmentClause();
                this.state = 2702;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 2698;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 2699;
                            this.columnAssignmentClause();
                        }
                    }
                    this.state = 2704;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    sqlTransactionStatement() {
        let localContext = new SqlTransactionStatementContext(this.context, this.state);
        this.enterRule(localContext, 396, HiveSqlParser.RULE_sqlTransactionStatement);
        let _la;
        try {
            this.state = 2728;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_START:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2705;
                        this.match(HiveSqlParser.KW_START);
                        this.state = 2706;
                        this.match(HiveSqlParser.KW_TRANSACTION);
                        this.state = 2715;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 168 || _la === 261) {
                            {
                                this.state = 2707;
                                this.transactionMode();
                                this.state = 2712;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                                while (_la === 397) {
                                    {
                                        {
                                            this.state = 2708;
                                            this.match(HiveSqlParser.COMMA);
                                            this.state = 2709;
                                            this.transactionMode();
                                        }
                                    }
                                    this.state = 2714;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                }
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_COMMIT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2717;
                        this.match(HiveSqlParser.KW_COMMIT);
                        this.state = 2719;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 389) {
                            {
                                this.state = 2718;
                                this.match(HiveSqlParser.KW_WORK);
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_ROLLBACK:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2721;
                        this.match(HiveSqlParser.KW_ROLLBACK);
                        this.state = 2723;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 389) {
                            {
                                this.state = 2722;
                                this.match(HiveSqlParser.KW_WORK);
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_SET:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2725;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2726;
                        this.match(HiveSqlParser.KW_AUTOCOMMIT);
                        this.state = 2727;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 125 || _la === 350)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    transactionMode() {
        let localContext = new TransactionModeContext(this.context, this.state);
        this.enterRule(localContext, 398, HiveSqlParser.RULE_transactionMode);
        let _la;
        try {
            this.state = 2735;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ISOLATION:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2730;
                        this.match(HiveSqlParser.KW_ISOLATION);
                        this.state = 2731;
                        this.match(HiveSqlParser.KW_LEVEL);
                        this.state = 2732;
                        this.match(HiveSqlParser.KW_SNAPSHOT);
                    }
                    break;
                case HiveSqlParser.KW_READ:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2733;
                        this.match(HiveSqlParser.KW_READ);
                        this.state = 2734;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 225 || _la === 391)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    whenClauses() {
        let localContext = new WhenClausesContext(this.context, this.state);
        this.enterRule(localContext, 400, HiveSqlParser.RULE_whenClauses);
        let _la;
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2741;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 324, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                            this.state = 2739;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context)) {
                                case 1:
                                    {
                                        this.state = 2737;
                                        this.whenMatchedAndClause();
                                    }
                                    break;
                                case 2:
                                    {
                                        this.state = 2738;
                                        this.whenMatchedThenClause();
                                    }
                                    break;
                            }
                        }
                    }
                    this.state = 2743;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 324, this.context);
                }
                this.state = 2745;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 383) {
                    {
                        this.state = 2744;
                        this.whenNotMatchedClause();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    whenNotMatchedClause() {
        let localContext = new WhenNotMatchedClauseContext(this.context, this.state);
        this.enterRule(localContext, 402, HiveSqlParser.RULE_whenNotMatchedClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2747;
                this.match(HiveSqlParser.KW_WHEN);
                this.state = 2748;
                this.match(HiveSqlParser.KW_NOT);
                this.state = 2749;
                this.match(HiveSqlParser.KW_MATCHED);
                this.state = 2752;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 11) {
                    {
                        this.state = 2750;
                        this.match(HiveSqlParser.KW_AND);
                        this.state = 2751;
                        this.expression();
                    }
                }
                this.state = 2754;
                this.match(HiveSqlParser.KW_THEN);
                this.state = 2755;
                this.match(HiveSqlParser.KW_INSERT);
                this.state = 2757;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 399) {
                    {
                        this.state = 2756;
                        localContext._targetCols = this.columnParenthesesList();
                    }
                }
                this.state = 2759;
                this.match(HiveSqlParser.KW_VALUES);
                this.state = 2760;
                this.expressionsInParenthesis();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    whenMatchedAndClause() {
        let localContext = new WhenMatchedAndClauseContext(this.context, this.state);
        this.enterRule(localContext, 404, HiveSqlParser.RULE_whenMatchedAndClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2762;
                this.match(HiveSqlParser.KW_WHEN);
                this.state = 2763;
                this.match(HiveSqlParser.KW_MATCHED);
                this.state = 2764;
                this.match(HiveSqlParser.KW_AND);
                this.state = 2765;
                this.expression();
                this.state = 2766;
                this.match(HiveSqlParser.KW_THEN);
                this.state = 2770;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_UPDATE:
                        {
                            this.state = 2767;
                            this.match(HiveSqlParser.KW_UPDATE);
                            this.state = 2768;
                            this.setColumnsClause();
                        }
                        break;
                    case HiveSqlParser.KW_DELETE:
                        {
                            this.state = 2769;
                            this.match(HiveSqlParser.KW_DELETE);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    whenMatchedThenClause() {
        let localContext = new WhenMatchedThenClauseContext(this.context, this.state);
        this.enterRule(localContext, 406, HiveSqlParser.RULE_whenMatchedThenClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2772;
                this.match(HiveSqlParser.KW_WHEN);
                this.state = 2773;
                this.match(HiveSqlParser.KW_MATCHED);
                this.state = 2774;
                this.match(HiveSqlParser.KW_THEN);
                this.state = 2778;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_UPDATE:
                        {
                            this.state = 2775;
                            this.match(HiveSqlParser.KW_UPDATE);
                            this.state = 2776;
                            this.setColumnsClause();
                        }
                        break;
                    case HiveSqlParser.KW_DELETE:
                        {
                            this.state = 2777;
                            this.match(HiveSqlParser.KW_DELETE);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    compactionPool() {
        let localContext = new CompactionPoolContext(this.context, this.state);
        this.enterRule(localContext, 408, HiveSqlParser.RULE_compactionPool);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2780;
                this.match(HiveSqlParser.KW_POOL);
                this.state = 2781;
                localContext._poolName = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    compactionType() {
        let localContext = new CompactionTypeContext(this.context, this.state);
        this.enterRule(localContext, 410, HiveSqlParser.RULE_compactionType);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2783;
                this.match(HiveSqlParser.KW_TYPE);
                this.state = 2784;
                localContext._compactType = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    compactionStatus() {
        let localContext = new CompactionStatusContext(this.context, this.state);
        this.enterRule(localContext, 412, HiveSqlParser.RULE_compactionStatus);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2786;
                this.match(HiveSqlParser.KW_STATUS);
                this.state = 2787;
                localContext._status = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterStatement() {
        let localContext = new AlterStatementContext(this.context, this.state);
        this.enterRule(localContext, 414, HiveSqlParser.RULE_alterStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 2789;
                this.match(HiveSqlParser.KW_ALTER);
                this.state = 2820;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_TABLE:
                        {
                            this.state = 2790;
                            this.match(HiveSqlParser.KW_TABLE);
                            this.state = 2791;
                            this.tableName();
                            this.state = 2792;
                            this.alterTableStatementSuffix();
                        }
                        break;
                    case HiveSqlParser.KW_VIEW:
                        {
                            this.state = 2794;
                            this.match(HiveSqlParser.KW_VIEW);
                            this.state = 2795;
                            this.viewName();
                            this.state = 2797;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 17) {
                                {
                                    this.state = 2796;
                                    this.match(HiveSqlParser.KW_AS);
                                }
                            }
                            this.state = 2799;
                            this.alterViewStatementSuffix();
                        }
                        break;
                    case HiveSqlParser.KW_MATERIALIZED:
                        {
                            this.state = 2801;
                            this.match(HiveSqlParser.KW_MATERIALIZED);
                            this.state = 2802;
                            this.match(HiveSqlParser.KW_VIEW);
                            this.state = 2803;
                            localContext._tableNameTree = this.viewName();
                            this.state = 2807;
                            this.errorHandler.sync(this);
                            switch (this.tokenStream.LA(1)) {
                                case HiveSqlParser.KW_ENABLE:
                                case HiveSqlParser.KW_ENABLED:
                                    {
                                        this.state = 2804;
                                        localContext._mvRewriteFlag = this.rewriteEnabled();
                                    }
                                    break;
                                case HiveSqlParser.KW_DISABLE:
                                case HiveSqlParser.KW_DISABLED:
                                    {
                                        this.state = 2805;
                                        localContext._mvRewriteFlag2 = this.rewriteDisabled();
                                    }
                                    break;
                                case HiveSqlParser.KW_REBUILD:
                                    {
                                        this.state = 2806;
                                        this.match(HiveSqlParser.KW_REBUILD);
                                    }
                                    break;
                                default:
                                    throw new antlr.NoViableAltException(this);
                            }
                        }
                        break;
                    case HiveSqlParser.KW_DATABASE:
                    case HiveSqlParser.KW_SCHEMA:
                        {
                            this.state = 2809;
                            this.db_schema();
                            this.state = 2810;
                            this.alterDatabaseStatementSuffix();
                        }
                        break;
                    case HiveSqlParser.KW_DATACONNECTOR:
                        {
                            this.state = 2812;
                            this.match(HiveSqlParser.KW_DATACONNECTOR);
                            this.state = 2813;
                            this.alterDataConnectorStatementSuffix();
                        }
                        break;
                    case HiveSqlParser.KW_INDEX:
                        {
                            this.state = 2814;
                            this.match(HiveSqlParser.KW_INDEX);
                            this.state = 2815;
                            this.id_();
                            this.state = 2816;
                            this.match(HiveSqlParser.KW_ON);
                            this.state = 2817;
                            this.tableOrPartition();
                            this.state = 2818;
                            this.match(HiveSqlParser.KW_REBUILD);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterTableStatementSuffix() {
        let localContext = new AlterTableStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 416, HiveSqlParser.RULE_alterTableStatementSuffix);
        let _la;
        try {
            this.state = 2911;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2822;
                        this.match(HiveSqlParser.KW_RENAME);
                        this.state = 2823;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 2824;
                        this.tableNameCreate();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2825;
                        this.match(HiveSqlParser.KW_RECOVER);
                        this.state = 2826;
                        this.match(HiveSqlParser.KW_PARTITIONS);
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2827;
                        this.alterStatementSuffixDropPartitions();
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2828;
                        this.match(HiveSqlParser.KW_ADD);
                        this.state = 2830;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 2829;
                                this.ifNotExists();
                            }
                        }
                        this.state = 2836;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        do {
                            {
                                {
                                    this.state = 2832;
                                    this.partitionSpec();
                                    this.state = 2834;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 189) {
                                        {
                                            this.state = 2833;
                                            this.locationPath();
                                        }
                                    }
                                }
                            }
                            this.state = 2838;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        } while (_la === 237);
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 2840;
                        this.match(HiveSqlParser.KW_TOUCH);
                        this.state = 2844;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 237) {
                            {
                                {
                                    this.state = 2841;
                                    this.partitionSpec();
                                }
                            }
                            this.state = 2846;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 2847;
                        this.match(HiveSqlParser.KW_ARCHIVE);
                        this.state = 2851;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 237) {
                            {
                                {
                                    this.state = 2848;
                                    this.partitionSpec();
                                }
                            }
                            this.state = 2853;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 2854;
                        this.match(HiveSqlParser.KW_UNARCHIVE);
                        this.state = 2858;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 237) {
                            {
                                {
                                    this.state = 2855;
                                    this.partitionSpec();
                                }
                            }
                            this.state = 2860;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 2861;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2862;
                        this.match(HiveSqlParser.KW_TBLPROPERTIES);
                        this.state = 2863;
                        this.tableProperties();
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 2864;
                        this.match(HiveSqlParser.KW_UNSET);
                        this.state = 2865;
                        this.match(HiveSqlParser.KW_TBLPROPERTIES);
                        this.state = 2867;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 2866;
                                this.ifExists();
                            }
                        }
                        this.state = 2869;
                        this.tableProperties();
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 2870;
                        this.tableSkewed();
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 2871;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 2874;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_SKEWED:
                                {
                                    this.state = 2872;
                                    this.match(HiveSqlParser.KW_SKEWED);
                                }
                                break;
                            case HiveSqlParser.KW_STORED:
                                {
                                    this.state = 2873;
                                    this.storedAsDirs();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 2876;
                        this.match(HiveSqlParser.KW_EXCHANGE);
                        this.state = 2877;
                        this.partitionSpec();
                        this.state = 2878;
                        this.match(HiveSqlParser.KW_WITH);
                        this.state = 2879;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 2880;
                        localContext._exchangename = this.tableName();
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 2882;
                        this.match(HiveSqlParser.KW_PARTITION);
                        this.state = 2883;
                        this.match(HiveSqlParser.KW_COLUMN);
                        this.state = 2884;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 2885;
                        this.columnNameType();
                        this.state = 2886;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 2888;
                        this.match(HiveSqlParser.KW_DROP);
                        this.state = 2889;
                        this.match(HiveSqlParser.KW_CONSTRAINT);
                        this.state = 2890;
                        localContext._cName = this.id_();
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 2891;
                        this.match(HiveSqlParser.KW_ADD);
                        this.state = 2894;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 341, this.context)) {
                            case 1:
                                {
                                    this.state = 2892;
                                    localContext._fk = this.alterForeignKeyWithName();
                                }
                                break;
                            case 2:
                                {
                                    this.state = 2893;
                                    this.alterConstraintWithName();
                                }
                                break;
                        }
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 2897;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 237) {
                            {
                                this.state = 2896;
                                this.partitionSpec();
                            }
                        }
                        this.state = 2899;
                        this.alterTblPartitionStatementSuffix();
                    }
                    break;
                case 17:
                    this.enterOuterAlt(localContext, 17);
                    {
                        this.state = 2900;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2901;
                        this.match(HiveSqlParser.KW_OWNER);
                        this.state = 2902;
                        this.principalName();
                    }
                    break;
                case 18:
                    this.enterOuterAlt(localContext, 18);
                    {
                        this.state = 2903;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2904;
                        this.match(HiveSqlParser.KW_PARTITION);
                        this.state = 2905;
                        this.match(HiveSqlParser.KW_SPEC);
                        this.state = 2906;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 2907;
                        localContext._spec = this.partitionTransformSpec();
                        this.state = 2908;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 19:
                    this.enterOuterAlt(localContext, 19);
                    {
                        this.state = 2910;
                        this.alterStatementSuffixExecute();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterTblPartitionStatementSuffix() {
        let localContext = new AlterTblPartitionStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 418, HiveSqlParser.RULE_alterTblPartitionStatementSuffix);
        let _la;
        try {
            this.state = 3045;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 364, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 2913;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2914;
                        this.match(HiveSqlParser.KW_FILEFORMAT);
                        this.state = 2915;
                        this.fileFormat();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 2916;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2917;
                        this.match(HiveSqlParser.KW_LOCATION);
                        this.state = 2918;
                        localContext._newLoc = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 2919;
                        this.match(HiveSqlParser.KW_CONCATENATE);
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 2920;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2930;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_SERDE:
                                {
                                    this.state = 2921;
                                    this.match(HiveSqlParser.KW_SERDE);
                                    this.state = 2922;
                                    localContext._serdeName = this.match(HiveSqlParser.StringLiteral);
                                    this.state = 2926;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context)) {
                                        case 1:
                                            {
                                                this.state = 2923;
                                                this.match(HiveSqlParser.KW_WITH);
                                                this.state = 2924;
                                                this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                                                this.state = 2925;
                                                this.tableProperties();
                                            }
                                            break;
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_SERDEPROPERTIES:
                                {
                                    this.state = 2928;
                                    this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                                    this.state = 2929;
                                    this.tableProperties();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 2932;
                        this.match(HiveSqlParser.KW_UNSET);
                        this.state = 2933;
                        this.match(HiveSqlParser.KW_SERDEPROPERTIES);
                        this.state = 2934;
                        this.tableProperties();
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 2935;
                        this.match(HiveSqlParser.KW_RENAME);
                        this.state = 2936;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 2937;
                        this.partitionSpec();
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 2938;
                        this.match(HiveSqlParser.KW_INTO);
                        this.state = 2939;
                        localContext._num = this.match(HiveSqlParser.Number);
                        this.state = 2940;
                        this.match(HiveSqlParser.KW_BUCKETS);
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 2941;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2942;
                        this.match(HiveSqlParser.KW_SKEWED);
                        this.state = 2943;
                        this.match(HiveSqlParser.KW_LOCATION);
                        this.state = 2944;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 2945;
                        this.skewedLocationMap();
                        this.state = 2950;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                                {
                                    this.state = 2946;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 2947;
                                    this.skewedLocationMap();
                                }
                            }
                            this.state = 2952;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                        this.state = 2953;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 2955;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 2956;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 42 || _la === 315)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 2957;
                        this.tableBuckets();
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 2958;
                        this.match(HiveSqlParser.KW_COMPACT);
                        this.state = 2959;
                        localContext._compactType = this.match(HiveSqlParser.StringLiteral);
                        this.state = 2962;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 11) {
                            {
                                this.state = 2960;
                                this.match(HiveSqlParser.KW_AND);
                                this.state = 2961;
                                this.match(HiveSqlParser.KW_WAIT);
                            }
                        }
                        this.state = 2968;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 42) {
                            {
                                this.state = 2964;
                                this.match(HiveSqlParser.KW_CLUSTERED);
                                this.state = 2965;
                                this.match(HiveSqlParser.KW_INTO);
                                this.state = 2966;
                                localContext._num = this.match(HiveSqlParser.Number);
                                this.state = 2967;
                                this.match(HiveSqlParser.KW_BUCKETS);
                            }
                        }
                        this.state = 2971;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 229) {
                            {
                                this.state = 2970;
                                this.orderByClause();
                            }
                        }
                        this.state = 2974;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 246) {
                            {
                                this.state = 2973;
                                this.compactionPool();
                            }
                        }
                        this.state = 2980;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context)) {
                            case 1:
                                {
                                    this.state = 2976;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 2977;
                                    this.match(HiveSqlParser.KW_OVERWRITE);
                                    this.state = 2978;
                                    this.match(HiveSqlParser.KW_TBLPROPERTIES);
                                    this.state = 2979;
                                    this.tableProperties();
                                }
                                break;
                        }
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 2982;
                        this.match(HiveSqlParser.KW_UPDATE);
                        this.state = 2983;
                        this.match(HiveSqlParser.KW_STATISTICS);
                        this.state = 2984;
                        this.match(HiveSqlParser.KW_FOR);
                        this.state = 2986;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 352, this.context)) {
                            case 1:
                                {
                                    this.state = 2985;
                                    this.match(HiveSqlParser.KW_COLUMN);
                                }
                                break;
                        }
                        this.state = 2988;
                        localContext._colName = this.columnName();
                        this.state = 2989;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2990;
                        this.tableProperties();
                        this.state = 2993;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 47) {
                            {
                                this.state = 2991;
                                this.match(HiveSqlParser.KW_COMMENT);
                                this.state = 2992;
                                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                            }
                        }
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 2995;
                        this.match(HiveSqlParser.KW_UPDATE);
                        this.state = 2996;
                        this.match(HiveSqlParser.KW_STATISTICS);
                        this.state = 2997;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 2998;
                        this.tableProperties();
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 2999;
                        this.match(HiveSqlParser.KW_CHANGE);
                        this.state = 3001;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context)) {
                            case 1:
                                {
                                    this.state = 3000;
                                    this.match(HiveSqlParser.KW_COLUMN);
                                }
                                break;
                        }
                        this.state = 3003;
                        localContext._oldName = this.columnName();
                        this.state = 3004;
                        localContext._newName = this.columnNameCreate();
                        this.state = 3005;
                        this.columnType();
                        this.state = 3007;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) {
                            {
                                this.state = 3006;
                                this.alterColumnConstraint();
                            }
                        }
                        this.state = 3011;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 47) {
                            {
                                this.state = 3009;
                                this.match(HiveSqlParser.KW_COMMENT);
                                this.state = 3010;
                                localContext._comment = this.match(HiveSqlParser.StringLiteral);
                            }
                        }
                        this.state = 3016;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_FIRST:
                                {
                                    this.state = 3013;
                                    localContext._first = this.match(HiveSqlParser.KW_FIRST);
                                }
                                break;
                            case HiveSqlParser.KW_AFTER:
                                {
                                    this.state = 3014;
                                    this.match(HiveSqlParser.KW_AFTER);
                                    this.state = 3015;
                                    localContext._afterCol = this.id_();
                                }
                                break;
                            case HiveSqlParser.EOF:
                            case HiveSqlParser.KW_ABORT:
                            case HiveSqlParser.KW_ALTER:
                            case HiveSqlParser.KW_ANALYZE:
                            case HiveSqlParser.KW_CASCADE:
                            case HiveSqlParser.KW_COMMIT:
                            case HiveSqlParser.KW_CREATE:
                            case HiveSqlParser.KW_DELETE:
                            case HiveSqlParser.KW_DESC:
                            case HiveSqlParser.KW_DESCRIBE:
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                            case HiveSqlParser.KW_DROP:
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                            case HiveSqlParser.KW_EXECUTE:
                            case HiveSqlParser.KW_EXPLAIN:
                            case HiveSqlParser.KW_EXPORT:
                            case HiveSqlParser.KW_FROM:
                            case HiveSqlParser.KW_GRANT:
                            case HiveSqlParser.KW_IMPORT:
                            case HiveSqlParser.KW_INSERT:
                            case HiveSqlParser.KW_KILL:
                            case HiveSqlParser.KW_LOAD:
                            case HiveSqlParser.KW_LOCK:
                            case HiveSqlParser.KW_MAP:
                            case HiveSqlParser.KW_MERGE:
                            case HiveSqlParser.KW_MSCK:
                            case HiveSqlParser.KW_PREPARE:
                            case HiveSqlParser.KW_REDUCE:
                            case HiveSqlParser.KW_RELOAD:
                            case HiveSqlParser.KW_REPL:
                            case HiveSqlParser.KW_REPLACE:
                            case HiveSqlParser.KW_RESTRICT:
                            case HiveSqlParser.KW_REVOKE:
                            case HiveSqlParser.KW_ROLLBACK:
                            case HiveSqlParser.KW_SELECT:
                            case HiveSqlParser.KW_SET:
                            case HiveSqlParser.KW_SHOW:
                            case HiveSqlParser.KW_START:
                            case HiveSqlParser.KW_TRUNCATE:
                            case HiveSqlParser.KW_UNLOCK:
                            case HiveSqlParser.KW_UPDATE:
                            case HiveSqlParser.KW_USE:
                            case HiveSqlParser.KW_VALUES:
                            case HiveSqlParser.KW_WITH:
                            case HiveSqlParser.SEMICOLON:
                            case HiveSqlParser.LPAREN:
                                break;
                            default:
                                break;
                        }
                        this.state = 3019;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 34 || _la === 282) {
                            {
                                this.state = 3018;
                                this.restrictOrCascade();
                            }
                        }
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 3023;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_ADD:
                                {
                                    this.state = 3021;
                                    localContext._add = this.match(HiveSqlParser.KW_ADD);
                                }
                                break;
                            case HiveSqlParser.KW_REPLACE:
                                {
                                    this.state = 3022;
                                    localContext._replace = this.match(HiveSqlParser.KW_REPLACE);
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                        this.state = 3025;
                        this.match(HiveSqlParser.KW_COLUMNS);
                        this.state = 3026;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3027;
                        this.columnNameTypeList();
                        this.state = 3028;
                        this.match(HiveSqlParser.RPAREN);
                        this.state = 3030;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 34 || _la === 282) {
                            {
                                this.state = 3029;
                                this.restrictOrCascade();
                            }
                        }
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 3032;
                        this.match(HiveSqlParser.KW_UPDATE);
                        this.state = 3033;
                        this.match(HiveSqlParser.KW_COLUMNS);
                        this.state = 3035;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 34 || _la === 282) {
                            {
                                this.state = 3034;
                                this.restrictOrCascade();
                            }
                        }
                    }
                    break;
                case 17:
                    this.enterOuterAlt(localContext, 17);
                    {
                        this.state = 3037;
                        this.enableSpecification();
                        this.state = 3043;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_NO_DROP:
                                {
                                    {
                                        this.state = 3038;
                                        this.match(HiveSqlParser.KW_NO_DROP);
                                        this.state = 3040;
                                        this.errorHandler.sync(this);
                                        _la = this.tokenStream.LA(1);
                                        if (_la === 34) {
                                            {
                                                this.state = 3039;
                                                this.match(HiveSqlParser.KW_CASCADE);
                                            }
                                        }
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_OFFLINE:
                                {
                                    this.state = 3042;
                                    this.match(HiveSqlParser.KW_OFFLINE);
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterViewStatementSuffix() {
        let localContext = new AlterViewStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 420, HiveSqlParser.RULE_alterViewStatementSuffix);
        let _la;
        try {
            this.state = 3073;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_SET:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3047;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3048;
                        this.match(HiveSqlParser.KW_TBLPROPERTIES);
                        this.state = 3049;
                        this.tableProperties();
                    }
                    break;
                case HiveSqlParser.KW_UNSET:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3050;
                        this.match(HiveSqlParser.KW_UNSET);
                        this.state = 3051;
                        this.match(HiveSqlParser.KW_TBLPROPERTIES);
                        this.state = 3053;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 3052;
                                this.ifExists();
                            }
                        }
                        this.state = 3055;
                        this.tableProperties();
                    }
                    break;
                case HiveSqlParser.KW_RENAME:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3056;
                        this.match(HiveSqlParser.KW_RENAME);
                        this.state = 3057;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 3058;
                        this.tableNameCreate();
                    }
                    break;
                case HiveSqlParser.KW_ADD:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 3059;
                        this.match(HiveSqlParser.KW_ADD);
                        this.state = 3061;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 3060;
                                this.ifNotExists();
                            }
                        }
                        this.state = 3067;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        do {
                            {
                                {
                                    this.state = 3063;
                                    this.partitionSpec();
                                    this.state = 3065;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 189) {
                                        {
                                            this.state = 3064;
                                            this.locationPath();
                                        }
                                    }
                                }
                            }
                            this.state = 3069;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        } while (_la === 237);
                    }
                    break;
                case HiveSqlParser.KW_DROP:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 3071;
                        this.alterStatementSuffixDropPartitions();
                    }
                    break;
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_REDUCE:
                case HiveSqlParser.KW_SELECT:
                case HiveSqlParser.KW_VALUES:
                case HiveSqlParser.KW_WITH:
                case HiveSqlParser.LPAREN:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 3072;
                        this.selectStatementWithCTE();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterDatabaseStatementSuffix() {
        let localContext = new AlterDatabaseStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 422, HiveSqlParser.RULE_alterDatabaseStatementSuffix);
        let _la;
        try {
            this.state = 3090;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 370, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3075;
                        localContext._name = this.dbSchemaName();
                        this.state = 3076;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3077;
                        this.match(HiveSqlParser.KW_DBPROPERTIES);
                        this.state = 3078;
                        this.keyValueProperties();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3080;
                        localContext._dbName = this.dbSchemaName();
                        this.state = 3081;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3082;
                        this.match(HiveSqlParser.KW_OWNER);
                        this.state = 3083;
                        this.principalAlterName();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3085;
                        localContext._dbName = this.dbSchemaName();
                        this.state = 3086;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3087;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 189 || _la === 196)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 3088;
                        localContext._newLocation = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterDataConnectorStatementSuffix() {
        let localContext = new AlterDataConnectorStatementSuffixContext(this.context, this.state);
        this.enterRule(localContext, 424, HiveSqlParser.RULE_alterDataConnectorStatementSuffix);
        try {
            this.state = 3107;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3092;
                        localContext._name = this.dbSchemaName();
                        this.state = 3093;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3094;
                        this.match(HiveSqlParser.KW_DCPROPERTIES);
                        this.state = 3095;
                        this.keyValueProperties();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3097;
                        localContext._dcName = this.dbSchemaName();
                        this.state = 3098;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3099;
                        this.match(HiveSqlParser.KW_OWNER);
                        this.state = 3100;
                        this.principalAlterName();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3102;
                        localContext._dcName = this.dbSchemaName();
                        this.state = 3103;
                        this.match(HiveSqlParser.KW_SET);
                        this.state = 3104;
                        this.match(HiveSqlParser.KW_URL);
                        this.state = 3105;
                        localContext._newUri = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    locationPath() {
        let localContext = new LocationPathContext(this.context, this.state);
        this.enterRule(localContext, 426, HiveSqlParser.RULE_locationPath);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3109;
                this.match(HiveSqlParser.KW_LOCATION);
                this.state = 3110;
                localContext._locn = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterStatementSuffixDropPartitions() {
        let localContext = new AlterStatementSuffixDropPartitionsContext(this.context, this.state);
        this.enterRule(localContext, 428, HiveSqlParser.RULE_alterStatementSuffixDropPartitions);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3112;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 3114;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 3113;
                        this.ifExists();
                    }
                }
                this.state = 3116;
                this.match(HiveSqlParser.KW_PARTITION);
                this.state = 3117;
                this.partitionSelectorSpec();
                this.state = 3123;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3118;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3119;
                            this.match(HiveSqlParser.KW_PARTITION);
                            this.state = 3120;
                            this.partitionSelectorSpec();
                        }
                    }
                    this.state = 3125;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 3128;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 152) {
                    {
                        this.state = 3126;
                        this.match(HiveSqlParser.KW_IGNORE);
                        this.state = 3127;
                        this.match(HiveSqlParser.KW_PROTECTION);
                    }
                }
                this.state = 3131;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 255) {
                    {
                        this.state = 3130;
                        this.match(HiveSqlParser.KW_PURGE);
                    }
                }
                this.state = 3134;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 134) {
                    {
                        this.state = 3133;
                        this.replicationClause();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    skewedLocationMap() {
        let localContext = new SkewedLocationMapContext(this.context, this.state);
        this.enterRule(localContext, 430, HiveSqlParser.RULE_skewedLocationMap);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3138;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_ABORT:
                    case HiveSqlParser.KW_ACTIVATE:
                    case HiveSqlParser.KW_ACTIVE:
                    case HiveSqlParser.KW_ADD:
                    case HiveSqlParser.KW_ADMIN:
                    case HiveSqlParser.KW_AFTER:
                    case HiveSqlParser.KW_ALLOC_FRACTION:
                    case HiveSqlParser.KW_ANALYZE:
                    case HiveSqlParser.KW_ARCHIVE:
                    case HiveSqlParser.KW_ASC:
                    case HiveSqlParser.KW_AST:
                    case HiveSqlParser.KW_AT:
                    case HiveSqlParser.KW_AUTOCOMMIT:
                    case HiveSqlParser.KW_BATCH:
                    case HiveSqlParser.KW_BEFORE:
                    case HiveSqlParser.KW_BUCKET:
                    case HiveSqlParser.KW_BUCKETS:
                    case HiveSqlParser.KW_CACHE:
                    case HiveSqlParser.KW_CASCADE:
                    case HiveSqlParser.KW_CBO:
                    case HiveSqlParser.KW_CHANGE:
                    case HiveSqlParser.KW_CHECK:
                    case HiveSqlParser.KW_CLUSTER:
                    case HiveSqlParser.KW_CLUSTERED:
                    case HiveSqlParser.KW_CLUSTERSTATUS:
                    case HiveSqlParser.KW_COLLECTION:
                    case HiveSqlParser.KW_COLUMNS:
                    case HiveSqlParser.KW_COMMENT:
                    case HiveSqlParser.KW_COMPACT:
                    case HiveSqlParser.KW_COMPACTIONS:
                    case HiveSqlParser.KW_COMPUTE:
                    case HiveSqlParser.KW_CONCATENATE:
                    case HiveSqlParser.KW_CONTINUE:
                    case HiveSqlParser.KW_COST:
                    case HiveSqlParser.KW_CRON:
                    case HiveSqlParser.KW_CURRENT_DATE:
                    case HiveSqlParser.KW_CURRENT_TIMESTAMP:
                    case HiveSqlParser.KW_DATA:
                    case HiveSqlParser.KW_DATABASES:
                    case HiveSqlParser.KW_DATE:
                    case HiveSqlParser.KW_DATETIME:
                    case HiveSqlParser.KW_DAY:
                    case HiveSqlParser.KW_DAYS:
                    case HiveSqlParser.KW_DAYOFWEEK:
                    case HiveSqlParser.KW_DBPROPERTIES:
                    case HiveSqlParser.KW_DCPROPERTIES:
                    case HiveSqlParser.KW_DEBUG:
                    case HiveSqlParser.KW_DEFAULT:
                    case HiveSqlParser.KW_DEFERRED:
                    case HiveSqlParser.KW_DEFINED:
                    case HiveSqlParser.KW_DELIMITED:
                    case HiveSqlParser.KW_DEPENDENCY:
                    case HiveSqlParser.KW_DESC:
                    case HiveSqlParser.KW_DETAIL:
                    case HiveSqlParser.KW_DIRECTORIES:
                    case HiveSqlParser.KW_DIRECTORY:
                    case HiveSqlParser.KW_DISABLE:
                    case HiveSqlParser.KW_DISABLED:
                    case HiveSqlParser.KW_DISTRIBUTE:
                    case HiveSqlParser.KW_DISTRIBUTED:
                    case HiveSqlParser.KW_DO:
                    case HiveSqlParser.KW_DUMP:
                    case HiveSqlParser.KW_ELEM_TYPE:
                    case HiveSqlParser.KW_ENABLE:
                    case HiveSqlParser.KW_ENABLED:
                    case HiveSqlParser.KW_ENFORCED:
                    case HiveSqlParser.KW_ESCAPED:
                    case HiveSqlParser.KW_EVERY:
                    case HiveSqlParser.KW_EXCLUSIVE:
                    case HiveSqlParser.KW_EXECUTE:
                    case HiveSqlParser.KW_EXECUTED:
                    case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                    case HiveSqlParser.KW_EXPLAIN:
                    case HiveSqlParser.KW_EXPORT:
                    case HiveSqlParser.KW_EXPRESSION:
                    case HiveSqlParser.KW_FALSE:
                    case HiveSqlParser.KW_FIELDS:
                    case HiveSqlParser.KW_FILE:
                    case HiveSqlParser.KW_FILEFORMAT:
                    case HiveSqlParser.KW_FIRST:
                    case HiveSqlParser.KW_FORMAT:
                    case HiveSqlParser.KW_FORMATTED:
                    case HiveSqlParser.KW_FUNCTIONS:
                    case HiveSqlParser.KW_HOLD_DDLTIME:
                    case HiveSqlParser.KW_HOUR:
                    case HiveSqlParser.KW_HOURS:
                    case HiveSqlParser.KW_IDXPROPERTIES:
                    case HiveSqlParser.KW_IGNORE:
                    case HiveSqlParser.KW_INDEX:
                    case HiveSqlParser.KW_INDEXES:
                    case HiveSqlParser.KW_INPATH:
                    case HiveSqlParser.KW_INPUTDRIVER:
                    case HiveSqlParser.KW_INPUTFORMAT:
                    case HiveSqlParser.KW_ISOLATION:
                    case HiveSqlParser.KW_ITEMS:
                    case HiveSqlParser.KW_JAR:
                    case HiveSqlParser.KW_JOINCOST:
                    case HiveSqlParser.KW_KEY:
                    case HiveSqlParser.KW_KEYS:
                    case HiveSqlParser.KW_KEY_TYPE:
                    case HiveSqlParser.KW_KILL:
                    case HiveSqlParser.KW_LAST:
                    case HiveSqlParser.KW_LEVEL:
                    case HiveSqlParser.KW_LIFECYCLE:
                    case HiveSqlParser.KW_LIMIT:
                    case HiveSqlParser.KW_LINES:
                    case HiveSqlParser.KW_LOAD:
                    case HiveSqlParser.KW_LOCATION:
                    case HiveSqlParser.KW_LOCK:
                    case HiveSqlParser.KW_LOCKS:
                    case HiveSqlParser.KW_LOGICAL:
                    case HiveSqlParser.KW_LONG:
                    case HiveSqlParser.KW_MANAGED:
                    case HiveSqlParser.KW_MANAGEDLOCATION:
                    case HiveSqlParser.KW_MANAGEMENT:
                    case HiveSqlParser.KW_MAPJOIN:
                    case HiveSqlParser.KW_MAPPING:
                    case HiveSqlParser.KW_MATCHED:
                    case HiveSqlParser.KW_MATERIALIZED:
                    case HiveSqlParser.KW_METADATA:
                    case HiveSqlParser.KW_MINUTE:
                    case HiveSqlParser.KW_MINUTES:
                    case HiveSqlParser.KW_MONTH:
                    case HiveSqlParser.KW_MONTHS:
                    case HiveSqlParser.KW_MOVE:
                    case HiveSqlParser.KW_MSCK:
                    case HiveSqlParser.KW_NORELY:
                    case HiveSqlParser.KW_NOSCAN:
                    case HiveSqlParser.KW_NOVALIDATE:
                    case HiveSqlParser.KW_NO_DROP:
                    case HiveSqlParser.KW_NULL:
                    case HiveSqlParser.KW_NULLS:
                    case HiveSqlParser.KW_OFFLINE:
                    case HiveSqlParser.KW_OFFSET:
                    case HiveSqlParser.KW_OPERATOR:
                    case HiveSqlParser.KW_OPTION:
                    case HiveSqlParser.KW_OUTPUTDRIVER:
                    case HiveSqlParser.KW_OUTPUTFORMAT:
                    case HiveSqlParser.KW_OVERWRITE:
                    case HiveSqlParser.KW_OWNER:
                    case HiveSqlParser.KW_PARTITIONED:
                    case HiveSqlParser.KW_PARTITIONS:
                    case HiveSqlParser.KW_PATH:
                    case HiveSqlParser.KW_PLAN:
                    case HiveSqlParser.KW_PLANS:
                    case HiveSqlParser.KW_PLUS:
                    case HiveSqlParser.KW_POOL:
                    case HiveSqlParser.KW_PRINCIPALS:
                    case HiveSqlParser.KW_PROTECTION:
                    case HiveSqlParser.KW_PURGE:
                    case HiveSqlParser.KW_QUARTER:
                    case HiveSqlParser.KW_QUERY:
                    case HiveSqlParser.KW_QUERY_PARALLELISM:
                    case HiveSqlParser.KW_READ:
                    case HiveSqlParser.KW_READONLY:
                    case HiveSqlParser.KW_REBUILD:
                    case HiveSqlParser.KW_RECORDREADER:
                    case HiveSqlParser.KW_RECORDWRITER:
                    case HiveSqlParser.KW_RELOAD:
                    case HiveSqlParser.KW_RELY:
                    case HiveSqlParser.KW_REMOTE:
                    case HiveSqlParser.KW_RENAME:
                    case HiveSqlParser.KW_REOPTIMIZATION:
                    case HiveSqlParser.KW_REPAIR:
                    case HiveSqlParser.KW_REPL:
                    case HiveSqlParser.KW_REPLACE:
                    case HiveSqlParser.KW_REPLICATION:
                    case HiveSqlParser.KW_RESOURCE:
                    case HiveSqlParser.KW_RESPECT:
                    case HiveSqlParser.KW_RESTRICT:
                    case HiveSqlParser.KW_REWRITE:
                    case HiveSqlParser.KW_ROLE:
                    case HiveSqlParser.KW_ROLES:
                    case HiveSqlParser.KW_SCHEDULED:
                    case HiveSqlParser.KW_SCHEDULING_POLICY:
                    case HiveSqlParser.KW_SCHEMA:
                    case HiveSqlParser.KW_SCHEMAS:
                    case HiveSqlParser.KW_SECOND:
                    case HiveSqlParser.KW_SECONDS:
                    case HiveSqlParser.KW_SEMI:
                    case HiveSqlParser.KW_SERDE:
                    case HiveSqlParser.KW_SERDEPROPERTIES:
                    case HiveSqlParser.KW_SERVER:
                    case HiveSqlParser.KW_SETS:
                    case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                    case HiveSqlParser.KW_SHARED:
                    case HiveSqlParser.KW_SHOW:
                    case HiveSqlParser.KW_SHOW_DATABASE:
                    case HiveSqlParser.KW_SKEWED:
                    case HiveSqlParser.KW_SNAPSHOT:
                    case HiveSqlParser.KW_SORT:
                    case HiveSqlParser.KW_SORTED:
                    case HiveSqlParser.KW_SPEC:
                    case HiveSqlParser.KW_SSL:
                    case HiveSqlParser.KW_STATISTICS:
                    case HiveSqlParser.KW_STATUS:
                    case HiveSqlParser.KW_STORED:
                    case HiveSqlParser.KW_STREAMTABLE:
                    case HiveSqlParser.KW_STRING:
                    case HiveSqlParser.KW_STRUCT:
                    case HiveSqlParser.KW_SUMMARY:
                    case HiveSqlParser.KW_SYSTEM_TIME:
                    case HiveSqlParser.KW_SYSTEM_VERSION:
                    case HiveSqlParser.KW_TABLES:
                    case HiveSqlParser.KW_TBLPROPERTIES:
                    case HiveSqlParser.KW_TEMPORARY:
                    case HiveSqlParser.KW_TERMINATED:
                    case HiveSqlParser.KW_TIMESTAMP:
                    case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
                    case HiveSqlParser.KW_TIMESTAMPTZ:
                    case HiveSqlParser.KW_TINYINT:
                    case HiveSqlParser.KW_TOUCH:
                    case HiveSqlParser.KW_TRANSACTION:
                    case HiveSqlParser.KW_TRANSACTIONAL:
                    case HiveSqlParser.KW_TRANSACTIONS:
                    case HiveSqlParser.KW_TRIM:
                    case HiveSqlParser.KW_TRUE:
                    case HiveSqlParser.KW_TYPE:
                    case HiveSqlParser.KW_UNARCHIVE:
                    case HiveSqlParser.KW_UNDO:
                    case HiveSqlParser.KW_UNIONTYPE:
                    case HiveSqlParser.KW_UNKNOWN:
                    case HiveSqlParser.KW_UNLOCK:
                    case HiveSqlParser.KW_UNMANAGED:
                    case HiveSqlParser.KW_UNSET:
                    case HiveSqlParser.KW_UNSIGNED:
                    case HiveSqlParser.KW_URI:
                    case HiveSqlParser.KW_URL:
                    case HiveSqlParser.KW_USE:
                    case HiveSqlParser.KW_UTC:
                    case HiveSqlParser.KW_UTCTIMESTAMP:
                    case HiveSqlParser.KW_VALIDATE:
                    case HiveSqlParser.KW_VALUE_TYPE:
                    case HiveSqlParser.KW_VECTORIZATION:
                    case HiveSqlParser.KW_VIEW:
                    case HiveSqlParser.KW_VIEWS:
                    case HiveSqlParser.KW_WAIT:
                    case HiveSqlParser.KW_WEEK:
                    case HiveSqlParser.KW_WEEKS:
                    case HiveSqlParser.KW_WHILE:
                    case HiveSqlParser.KW_WITHIN:
                    case HiveSqlParser.KW_WORK:
                    case HiveSqlParser.KW_WORKLOAD:
                    case HiveSqlParser.KW_WRITE:
                    case HiveSqlParser.KW_YEAR:
                    case HiveSqlParser.KW_YEARS:
                    case HiveSqlParser.KW_ZONE:
                    case HiveSqlParser.QUESTION:
                    case HiveSqlParser.StringLiteral:
                    case HiveSqlParser.IntegralLiteral:
                    case HiveSqlParser.NumberLiteral:
                    case HiveSqlParser.Number:
                    case HiveSqlParser.Identifier:
                    case HiveSqlParser.CharSetName:
                        {
                            this.state = 3136;
                            this.constant();
                        }
                        break;
                    case HiveSqlParser.LPAREN:
                        {
                            this.state = 3137;
                            this.skewedColumnValuePair();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 3140;
                this.match(HiveSqlParser.EQUAL);
                this.state = 3141;
                localContext._value = this.match(HiveSqlParser.StringLiteral);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    alterStatementSuffixExecute() {
        let localContext = new AlterStatementSuffixExecuteContext(this.context, this.state);
        this.enterRule(localContext, 432, HiveSqlParser.RULE_alterStatementSuffixExecute);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3143;
                this.match(HiveSqlParser.KW_EXECUTE);
                this.state = 3153;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_ROLLBACK:
                        {
                            this.state = 3144;
                            this.match(HiveSqlParser.KW_ROLLBACK);
                            this.state = 3145;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 3146;
                            localContext._rollbackParam = this.tokenStream.LT(1);
                            _la = this.tokenStream.LA(1);
                            if (!(_la === 426 || _la === 431)) {
                                localContext._rollbackParam = this.errorHandler.recoverInline(this);
                            }
                            else {
                                this.errorHandler.reportMatch(this);
                                this.consume();
                            }
                        }
                        break;
                    case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                        {
                            this.state = 3147;
                            this.match(HiveSqlParser.KW_EXPIRE_SNAPSHOTS);
                            this.state = 3148;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 3149;
                            localContext._expireParam = this.match(HiveSqlParser.StringLiteral);
                        }
                        break;
                    case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                        {
                            this.state = 3150;
                            this.match(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT);
                            this.state = 3151;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 3152;
                            localContext._snapshotParam = this.match(HiveSqlParser.Number);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 3155;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    fileFormat() {
        let localContext = new FileFormatContext(this.context, this.state);
        this.enterRule(localContext, 434, HiveSqlParser.RULE_fileFormat);
        let _la;
        try {
            this.state = 3170;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3157;
                        this.match(HiveSqlParser.KW_INPUTFORMAT);
                        this.state = 3158;
                        localContext._inFmt = this.match(HiveSqlParser.StringLiteral);
                        this.state = 3159;
                        this.match(HiveSqlParser.KW_OUTPUTFORMAT);
                        this.state = 3160;
                        localContext._outFmt = this.match(HiveSqlParser.StringLiteral);
                        this.state = 3161;
                        this.match(HiveSqlParser.KW_SERDE);
                        this.state = 3162;
                        localContext._serdeCls = this.match(HiveSqlParser.StringLiteral);
                        this.state = 3167;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 159) {
                            {
                                this.state = 3163;
                                this.match(HiveSqlParser.KW_INPUTDRIVER);
                                this.state = 3164;
                                localContext._inDriver = this.match(HiveSqlParser.StringLiteral);
                                this.state = 3165;
                                this.match(HiveSqlParser.KW_OUTPUTDRIVER);
                                this.state = 3166;
                                localContext._outDriver = this.match(HiveSqlParser.StringLiteral);
                            }
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3169;
                        localContext._genericSpec = this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    likeTableOrFile() {
        let localContext = new LikeTableOrFileContext(this.context, this.state);
        this.enterRule(localContext, 436, HiveSqlParser.RULE_likeTableOrFile);
        try {
            this.state = 3181;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3172;
                        this.match(HiveSqlParser.KW_LIKE);
                        this.state = 3173;
                        this.match(HiveSqlParser.KW_FILE);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3174;
                        this.match(HiveSqlParser.KW_LIKE);
                        this.state = 3175;
                        this.match(HiveSqlParser.KW_FILE);
                        this.state = 3176;
                        localContext._format = this.id_();
                        this.state = 3177;
                        localContext._uri = this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3179;
                        this.match(HiveSqlParser.KW_LIKE);
                        this.state = 3180;
                        localContext._likeName = this.tableName();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createTableStatement() {
        let localContext = new CreateTableStatementContext(this.context, this.state);
        this.enterRule(localContext, 438, HiveSqlParser.RULE_createTableStatement);
        let _la;
        try {
            this.state = 3318;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3183;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 3185;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 333) {
                            {
                                this.state = 3184;
                                localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY);
                            }
                        }
                        this.state = 3188;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 345) {
                            {
                                this.state = 3187;
                                localContext._trans = this.match(HiveSqlParser.KW_TRANSACTIONAL);
                            }
                        }
                        this.state = 3191;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 123) {
                            {
                                this.state = 3190;
                                localContext._ext = this.match(HiveSqlParser.KW_EXTERNAL);
                            }
                        }
                        this.state = 3193;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 3195;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 3194;
                                this.ifNotExists();
                            }
                        }
                        this.state = 3197;
                        localContext._name = this.tableNameCreate();
                        this.state = 3254;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_LIKE:
                                {
                                    this.state = 3198;
                                    this.likeTableOrFile();
                                    this.state = 3200;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 238) {
                                        {
                                            this.state = 3199;
                                            this.createTablePartitionSpec();
                                        }
                                    }
                                    this.state = 3203;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 291) {
                                        {
                                            this.state = 3202;
                                            this.tableRowFormat();
                                        }
                                    }
                                    this.state = 3206;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 321) {
                                        {
                                            this.state = 3205;
                                            this.tableFileFormat();
                                        }
                                    }
                                    this.state = 3209;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 189) {
                                        {
                                            this.state = 3208;
                                            this.locationPath();
                                        }
                                    }
                                    this.state = 3212;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 332) {
                                        {
                                            this.state = 3211;
                                            this.tablePropertiesPrefixed();
                                        }
                                    }
                                    this.state = 3215;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 183) {
                                        {
                                            this.state = 3214;
                                            this.tableLifecycle();
                                        }
                                    }
                                }
                                break;
                            case HiveSqlParser.EOF:
                            case HiveSqlParser.KW_ABORT:
                            case HiveSqlParser.KW_ALTER:
                            case HiveSqlParser.KW_ANALYZE:
                            case HiveSqlParser.KW_AS:
                            case HiveSqlParser.KW_CLUSTERED:
                            case HiveSqlParser.KW_COMMENT:
                            case HiveSqlParser.KW_COMMIT:
                            case HiveSqlParser.KW_CREATE:
                            case HiveSqlParser.KW_DELETE:
                            case HiveSqlParser.KW_DESC:
                            case HiveSqlParser.KW_DESCRIBE:
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                            case HiveSqlParser.KW_DROP:
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                            case HiveSqlParser.KW_EXECUTE:
                            case HiveSqlParser.KW_EXPLAIN:
                            case HiveSqlParser.KW_EXPORT:
                            case HiveSqlParser.KW_FROM:
                            case HiveSqlParser.KW_GRANT:
                            case HiveSqlParser.KW_IMPORT:
                            case HiveSqlParser.KW_INSERT:
                            case HiveSqlParser.KW_KILL:
                            case HiveSqlParser.KW_LIFECYCLE:
                            case HiveSqlParser.KW_LOAD:
                            case HiveSqlParser.KW_LOCATION:
                            case HiveSqlParser.KW_LOCK:
                            case HiveSqlParser.KW_MAP:
                            case HiveSqlParser.KW_MERGE:
                            case HiveSqlParser.KW_MSCK:
                            case HiveSqlParser.KW_PARTITIONED:
                            case HiveSqlParser.KW_PREPARE:
                            case HiveSqlParser.KW_REDUCE:
                            case HiveSqlParser.KW_RELOAD:
                            case HiveSqlParser.KW_REPL:
                            case HiveSqlParser.KW_REPLACE:
                            case HiveSqlParser.KW_REVOKE:
                            case HiveSqlParser.KW_ROLLBACK:
                            case HiveSqlParser.KW_ROW:
                            case HiveSqlParser.KW_SELECT:
                            case HiveSqlParser.KW_SET:
                            case HiveSqlParser.KW_SHOW:
                            case HiveSqlParser.KW_SKEWED:
                            case HiveSqlParser.KW_START:
                            case HiveSqlParser.KW_STORED:
                            case HiveSqlParser.KW_TBLPROPERTIES:
                            case HiveSqlParser.KW_TRUNCATE:
                            case HiveSqlParser.KW_UNLOCK:
                            case HiveSqlParser.KW_UPDATE:
                            case HiveSqlParser.KW_USE:
                            case HiveSqlParser.KW_VALUES:
                            case HiveSqlParser.KW_WITH:
                            case HiveSqlParser.SEMICOLON:
                            case HiveSqlParser.LPAREN:
                                {
                                    this.state = 3221;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context)) {
                                        case 1:
                                            {
                                                this.state = 3217;
                                                this.match(HiveSqlParser.LPAREN);
                                                this.state = 3218;
                                                this.columnNameTypeOrConstraintList();
                                                this.state = 3219;
                                                this.match(HiveSqlParser.RPAREN);
                                            }
                                            break;
                                    }
                                    this.state = 3224;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 47) {
                                        {
                                            this.state = 3223;
                                            this.tableComment();
                                        }
                                    }
                                    this.state = 3227;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 238) {
                                        {
                                            this.state = 3226;
                                            this.createTablePartitionSpec();
                                        }
                                    }
                                    this.state = 3230;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 42) {
                                        {
                                            this.state = 3229;
                                            this.tableBuckets();
                                        }
                                    }
                                    this.state = 3233;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 310) {
                                        {
                                            this.state = 3232;
                                            this.tableSkewed();
                                        }
                                    }
                                    this.state = 3236;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 291) {
                                        {
                                            this.state = 3235;
                                            this.tableRowFormat();
                                        }
                                    }
                                    this.state = 3239;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 321) {
                                        {
                                            this.state = 3238;
                                            this.tableFileFormat();
                                        }
                                    }
                                    this.state = 3242;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 189) {
                                        {
                                            this.state = 3241;
                                            this.locationPath();
                                        }
                                    }
                                    this.state = 3245;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 332) {
                                        {
                                            this.state = 3244;
                                            this.tablePropertiesPrefixed();
                                        }
                                    }
                                    this.state = 3248;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 183) {
                                        {
                                            this.state = 3247;
                                            this.tableLifecycle();
                                        }
                                    }
                                    this.state = 3252;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 17) {
                                        {
                                            this.state = 3250;
                                            this.match(HiveSqlParser.KW_AS);
                                            this.state = 3251;
                                            this.selectStatementWithCTE();
                                        }
                                    }
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3256;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 3257;
                        localContext._mgd = this.match(HiveSqlParser.KW_MANAGED);
                        this.state = 3258;
                        this.match(HiveSqlParser.KW_TABLE);
                        this.state = 3260;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 3259;
                                this.ifNotExists();
                            }
                        }
                        this.state = 3262;
                        localContext._name = this.tableNameCreate();
                        this.state = 3316;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_LIKE:
                                {
                                    this.state = 3263;
                                    this.likeTableOrFile();
                                    this.state = 3265;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 291) {
                                        {
                                            this.state = 3264;
                                            this.tableRowFormat();
                                        }
                                    }
                                    this.state = 3268;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 321) {
                                        {
                                            this.state = 3267;
                                            this.tableFileFormat();
                                        }
                                    }
                                    this.state = 3271;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 189) {
                                        {
                                            this.state = 3270;
                                            this.locationPath();
                                        }
                                    }
                                    this.state = 3274;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 332) {
                                        {
                                            this.state = 3273;
                                            this.tablePropertiesPrefixed();
                                        }
                                    }
                                    this.state = 3277;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 183) {
                                        {
                                            this.state = 3276;
                                            this.tableLifecycle();
                                        }
                                    }
                                }
                                break;
                            case HiveSqlParser.EOF:
                            case HiveSqlParser.KW_ABORT:
                            case HiveSqlParser.KW_ALTER:
                            case HiveSqlParser.KW_ANALYZE:
                            case HiveSqlParser.KW_AS:
                            case HiveSqlParser.KW_CLUSTERED:
                            case HiveSqlParser.KW_COMMENT:
                            case HiveSqlParser.KW_COMMIT:
                            case HiveSqlParser.KW_CREATE:
                            case HiveSqlParser.KW_DELETE:
                            case HiveSqlParser.KW_DESC:
                            case HiveSqlParser.KW_DESCRIBE:
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                            case HiveSqlParser.KW_DROP:
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                            case HiveSqlParser.KW_EXECUTE:
                            case HiveSqlParser.KW_EXPLAIN:
                            case HiveSqlParser.KW_EXPORT:
                            case HiveSqlParser.KW_FROM:
                            case HiveSqlParser.KW_GRANT:
                            case HiveSqlParser.KW_IMPORT:
                            case HiveSqlParser.KW_INSERT:
                            case HiveSqlParser.KW_KILL:
                            case HiveSqlParser.KW_LIFECYCLE:
                            case HiveSqlParser.KW_LOAD:
                            case HiveSqlParser.KW_LOCATION:
                            case HiveSqlParser.KW_LOCK:
                            case HiveSqlParser.KW_MAP:
                            case HiveSqlParser.KW_MERGE:
                            case HiveSqlParser.KW_MSCK:
                            case HiveSqlParser.KW_PARTITIONED:
                            case HiveSqlParser.KW_PREPARE:
                            case HiveSqlParser.KW_REDUCE:
                            case HiveSqlParser.KW_RELOAD:
                            case HiveSqlParser.KW_REPL:
                            case HiveSqlParser.KW_REPLACE:
                            case HiveSqlParser.KW_REVOKE:
                            case HiveSqlParser.KW_ROLLBACK:
                            case HiveSqlParser.KW_ROW:
                            case HiveSqlParser.KW_SELECT:
                            case HiveSqlParser.KW_SET:
                            case HiveSqlParser.KW_SHOW:
                            case HiveSqlParser.KW_SKEWED:
                            case HiveSqlParser.KW_START:
                            case HiveSqlParser.KW_STORED:
                            case HiveSqlParser.KW_TBLPROPERTIES:
                            case HiveSqlParser.KW_TRUNCATE:
                            case HiveSqlParser.KW_UNLOCK:
                            case HiveSqlParser.KW_UPDATE:
                            case HiveSqlParser.KW_USE:
                            case HiveSqlParser.KW_VALUES:
                            case HiveSqlParser.KW_WITH:
                            case HiveSqlParser.SEMICOLON:
                            case HiveSqlParser.LPAREN:
                                {
                                    this.state = 3283;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context)) {
                                        case 1:
                                            {
                                                this.state = 3279;
                                                this.match(HiveSqlParser.LPAREN);
                                                this.state = 3280;
                                                this.columnNameTypeOrConstraintList();
                                                this.state = 3281;
                                                this.match(HiveSqlParser.RPAREN);
                                            }
                                            break;
                                    }
                                    this.state = 3286;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 47) {
                                        {
                                            this.state = 3285;
                                            this.tableComment();
                                        }
                                    }
                                    this.state = 3289;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 238) {
                                        {
                                            this.state = 3288;
                                            this.createTablePartitionSpec();
                                        }
                                    }
                                    this.state = 3292;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 42) {
                                        {
                                            this.state = 3291;
                                            this.tableBuckets();
                                        }
                                    }
                                    this.state = 3295;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 310) {
                                        {
                                            this.state = 3294;
                                            this.tableSkewed();
                                        }
                                    }
                                    this.state = 3298;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 291) {
                                        {
                                            this.state = 3297;
                                            this.tableRowFormat();
                                        }
                                    }
                                    this.state = 3301;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 321) {
                                        {
                                            this.state = 3300;
                                            this.tableFileFormat();
                                        }
                                    }
                                    this.state = 3304;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 189) {
                                        {
                                            this.state = 3303;
                                            this.locationPath();
                                        }
                                    }
                                    this.state = 3307;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 332) {
                                        {
                                            this.state = 3306;
                                            this.tablePropertiesPrefixed();
                                        }
                                    }
                                    this.state = 3310;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 183) {
                                        {
                                            this.state = 3309;
                                            this.tableLifecycle();
                                        }
                                    }
                                    this.state = 3314;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 17) {
                                        {
                                            this.state = 3312;
                                            this.match(HiveSqlParser.KW_AS);
                                            this.state = 3313;
                                            this.selectStatementWithCTE();
                                        }
                                    }
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    createDataConnectorStatement() {
        let localContext = new CreateDataConnectorStatementContext(this.context, this.state);
        this.enterRule(localContext, 440, HiveSqlParser.RULE_createDataConnectorStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3320;
                this.match(HiveSqlParser.KW_CREATE);
                this.state = 3321;
                this.match(HiveSqlParser.KW_DATACONNECTOR);
                this.state = 3323;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 3322;
                        this.ifNotExists();
                    }
                }
                this.state = 3325;
                localContext._name = this.id_();
                this.state = 3328;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 352) {
                    {
                        this.state = 3326;
                        this.match(HiveSqlParser.KW_TYPE);
                        this.state = 3327;
                        localContext._dcType = this.match(HiveSqlParser.StringLiteral);
                    }
                }
                this.state = 3332;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 367) {
                    {
                        this.state = 3330;
                        this.match(HiveSqlParser.KW_URL);
                        this.state = 3331;
                        localContext._url = this.match(HiveSqlParser.StringLiteral);
                    }
                }
                this.state = 3336;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 47) {
                    {
                        this.state = 3334;
                        this.match(HiveSqlParser.KW_COMMENT);
                        this.state = 3335;
                        localContext._comment = this.match(HiveSqlParser.StringLiteral);
                    }
                }
                this.state = 3341;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context)) {
                    case 1:
                        {
                            this.state = 3338;
                            this.match(HiveSqlParser.KW_WITH);
                            this.state = 3339;
                            this.match(HiveSqlParser.KW_DCPROPERTIES);
                            this.state = 3340;
                            localContext._dcprops = this.keyValueProperties();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dropDataConnectorStatement() {
        let localContext = new DropDataConnectorStatementContext(this.context, this.state);
        this.enterRule(localContext, 442, HiveSqlParser.RULE_dropDataConnectorStatement);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3343;
                this.match(HiveSqlParser.KW_DROP);
                this.state = 3344;
                this.match(HiveSqlParser.KW_DATACONNECTOR);
                this.state = 3346;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 151) {
                    {
                        this.state = 3345;
                        this.ifExists();
                    }
                }
                this.state = 3348;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableAllColumns() {
        let localContext = new TableAllColumnsContext(this.context, this.state);
        this.enterRule(localContext, 444, HiveSqlParser.RULE_tableAllColumns);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3355;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                    {
                        {
                            this.state = 3350;
                            this.id_();
                            this.state = 3351;
                            this.match(HiveSqlParser.DOT);
                        }
                    }
                    this.state = 3357;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 3358;
                this.match(HiveSqlParser.STAR);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    expressionList() {
        let localContext = new ExpressionListContext(this.context, this.state);
        this.enterRule(localContext, 446, HiveSqlParser.RULE_expressionList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3360;
                this.expression();
                this.state = 3365;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3361;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3362;
                            this.expression();
                        }
                    }
                    this.state = 3367;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    aliasList() {
        let localContext = new AliasListContext(this.context, this.state);
        this.enterRule(localContext, 448, HiveSqlParser.RULE_aliasList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3368;
                this.id_();
                this.state = 3373;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3369;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3370;
                            this.id_();
                        }
                    }
                    this.state = 3375;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    fromClause() {
        let localContext = new FromClauseContext(this.context, this.state);
        this.enterRule(localContext, 450, HiveSqlParser.RULE_fromClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3376;
                this.match(HiveSqlParser.KW_FROM);
                this.state = 3377;
                this.fromSource();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    fromSource() {
        let localContext = new FromSourceContext(this.context, this.state);
        this.enterRule(localContext, 452, HiveSqlParser.RULE_fromSource);
        let _la;
        try {
            this.state = 3388;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_UNIQUEJOIN:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3379;
                        this.match(HiveSqlParser.KW_UNIQUEJOIN);
                        this.state = 3380;
                        this.uniqueJoinSource();
                        this.state = 3383;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        do {
                            {
                                {
                                    this.state = 3381;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 3382;
                                    this.uniqueJoinSource();
                                }
                            }
                            this.state = 3385;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        } while (_la === 397);
                    }
                    break;
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLE:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.LPAREN:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3387;
                        this.joinSource();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    atomjoinSource() {
        let localContext = new AtomjoinSourceContext(this.context, this.state);
        this.enterRule(localContext, 454, HiveSqlParser.RULE_atomjoinSource);
        try {
            let alternative;
            this.state = 3422;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 438, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3390;
                        this.tableSource();
                        this.state = 3394;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 434, this.context);
                        while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                            if (alternative === 1) {
                                {
                                    {
                                        this.state = 3391;
                                        this.lateralView();
                                    }
                                }
                            }
                            this.state = 3396;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 434, this.context);
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3397;
                        this.virtualTableSource();
                        this.state = 3401;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context);
                        while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                            if (alternative === 1) {
                                {
                                    {
                                        this.state = 3398;
                                        this.lateralView();
                                    }
                                }
                            }
                            this.state = 3403;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context);
                        }
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3404;
                        this.subQuerySource();
                        this.state = 3408;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 436, this.context);
                        while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                            if (alternative === 1) {
                                {
                                    {
                                        this.state = 3405;
                                        this.lateralView();
                                    }
                                }
                            }
                            this.state = 3410;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 436, this.context);
                        }
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 3411;
                        this.partitionedTableFunction();
                        this.state = 3415;
                        this.errorHandler.sync(this);
                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 437, this.context);
                        while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                            if (alternative === 1) {
                                {
                                    {
                                        this.state = 3412;
                                        this.lateralView();
                                    }
                                }
                            }
                            this.state = 3417;
                            this.errorHandler.sync(this);
                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 437, this.context);
                        }
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 3418;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3419;
                        this.joinSource();
                        this.state = 3420;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    joinSource() {
        let localContext = new JoinSourceContext(this.context, this.state);
        this.enterRule(localContext, 456, HiveSqlParser.RULE_joinSource);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3424;
                this.atomjoinSource();
                this.state = 3435;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 60 || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 2147614721) !== 0) || _la === 180 || _la === 285 || _la === 397) {
                    {
                        {
                            this.state = 3425;
                            this.joinToken();
                            this.state = 3426;
                            this.joinSourcePart();
                            this.state = 3431;
                            this.errorHandler.sync(this);
                            switch (this.tokenStream.LA(1)) {
                                case HiveSqlParser.KW_ON:
                                    {
                                        this.state = 3427;
                                        this.match(HiveSqlParser.KW_ON);
                                        this.state = 3428;
                                        this.expression();
                                    }
                                    break;
                                case HiveSqlParser.KW_USING:
                                    {
                                        this.state = 3429;
                                        this.match(HiveSqlParser.KW_USING);
                                        this.state = 3430;
                                        this.columnParenthesesList();
                                    }
                                    break;
                                case HiveSqlParser.EOF:
                                case HiveSqlParser.KW_ABORT:
                                case HiveSqlParser.KW_ALTER:
                                case HiveSqlParser.KW_ANALYZE:
                                case HiveSqlParser.KW_CLUSTER:
                                case HiveSqlParser.KW_COMMIT:
                                case HiveSqlParser.KW_CREATE:
                                case HiveSqlParser.KW_CROSS:
                                case HiveSqlParser.KW_DELETE:
                                case HiveSqlParser.KW_DESC:
                                case HiveSqlParser.KW_DESCRIBE:
                                case HiveSqlParser.KW_DISABLE:
                                case HiveSqlParser.KW_DISABLED:
                                case HiveSqlParser.KW_DISTRIBUTE:
                                case HiveSqlParser.KW_DROP:
                                case HiveSqlParser.KW_ENABLE:
                                case HiveSqlParser.KW_ENABLED:
                                case HiveSqlParser.KW_EXCEPT:
                                case HiveSqlParser.KW_EXECUTE:
                                case HiveSqlParser.KW_EXPLAIN:
                                case HiveSqlParser.KW_EXPORT:
                                case HiveSqlParser.KW_FROM:
                                case HiveSqlParser.KW_FULL:
                                case HiveSqlParser.KW_GRANT:
                                case HiveSqlParser.KW_GROUP:
                                case HiveSqlParser.KW_HAVING:
                                case HiveSqlParser.KW_IMPORT:
                                case HiveSqlParser.KW_INNER:
                                case HiveSqlParser.KW_INSERT:
                                case HiveSqlParser.KW_INTERSECT:
                                case HiveSqlParser.KW_JOIN:
                                case HiveSqlParser.KW_KILL:
                                case HiveSqlParser.KW_LEFT:
                                case HiveSqlParser.KW_LIMIT:
                                case HiveSqlParser.KW_LOAD:
                                case HiveSqlParser.KW_LOCK:
                                case HiveSqlParser.KW_MAP:
                                case HiveSqlParser.KW_MERGE:
                                case HiveSqlParser.KW_MINUS:
                                case HiveSqlParser.KW_MSCK:
                                case HiveSqlParser.KW_ORDER:
                                case HiveSqlParser.KW_PREPARE:
                                case HiveSqlParser.KW_QUALIFY:
                                case HiveSqlParser.KW_REDUCE:
                                case HiveSqlParser.KW_RELOAD:
                                case HiveSqlParser.KW_REPL:
                                case HiveSqlParser.KW_REPLACE:
                                case HiveSqlParser.KW_REVOKE:
                                case HiveSqlParser.KW_RIGHT:
                                case HiveSqlParser.KW_ROLLBACK:
                                case HiveSqlParser.KW_SELECT:
                                case HiveSqlParser.KW_SET:
                                case HiveSqlParser.KW_SHOW:
                                case HiveSqlParser.KW_SORT:
                                case HiveSqlParser.KW_START:
                                case HiveSqlParser.KW_TRUNCATE:
                                case HiveSqlParser.KW_UNION:
                                case HiveSqlParser.KW_UNLOCK:
                                case HiveSqlParser.KW_UPDATE:
                                case HiveSqlParser.KW_USE:
                                case HiveSqlParser.KW_VALUES:
                                case HiveSqlParser.KW_WHERE:
                                case HiveSqlParser.KW_WINDOW:
                                case HiveSqlParser.KW_WITH:
                                case HiveSqlParser.COMMA:
                                case HiveSqlParser.SEMICOLON:
                                case HiveSqlParser.LPAREN:
                                case HiveSqlParser.RPAREN:
                                    break;
                                default:
                                    break;
                            }
                        }
                    }
                    this.state = 3437;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    joinSourcePart() {
        let localContext = new JoinSourcePartContext(this.context, this.state);
        this.enterRule(localContext, 458, HiveSqlParser.RULE_joinSourcePart);
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3442;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 441, this.context)) {
                    case 1:
                        {
                            this.state = 3438;
                            this.tableSource();
                        }
                        break;
                    case 2:
                        {
                            this.state = 3439;
                            this.virtualTableSource();
                        }
                        break;
                    case 3:
                        {
                            this.state = 3440;
                            this.subQuerySource();
                        }
                        break;
                    case 4:
                        {
                            this.state = 3441;
                            this.partitionedTableFunction();
                        }
                        break;
                }
                this.state = 3447;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 442, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                            {
                                this.state = 3444;
                                this.lateralView();
                            }
                        }
                    }
                    this.state = 3449;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 442, this.context);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    uniqueJoinSource() {
        let localContext = new UniqueJoinSourceContext(this.context, this.state);
        this.enterRule(localContext, 460, HiveSqlParser.RULE_uniqueJoinSource);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3451;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 250) {
                    {
                        this.state = 3450;
                        this.match(HiveSqlParser.KW_PRESERVE);
                    }
                }
                this.state = 3453;
                localContext._tabname = this.tableOrView();
                this.state = 3455;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 331) {
                    {
                        this.state = 3454;
                        localContext._ts = this.tableSample();
                    }
                }
                this.state = 3461;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                    {
                        this.state = 3458;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 17) {
                            {
                                this.state = 3457;
                                this.match(HiveSqlParser.KW_AS);
                            }
                        }
                        this.state = 3460;
                        localContext._alias = this.id_();
                    }
                }
                this.state = 3463;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3464;
                this.expressionList();
                this.state = 3465;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    joinToken() {
        let localContext = new JoinTokenContext(this.context, this.state);
        this.enterRule(localContext, 462, HiveSqlParser.RULE_joinToken);
        let _la;
        try {
            this.state = 3481;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.COMMA:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3467;
                        this.match(HiveSqlParser.COMMA);
                    }
                    break;
                case HiveSqlParser.KW_CROSS:
                case HiveSqlParser.KW_FULL:
                case HiveSqlParser.KW_INNER:
                case HiveSqlParser.KW_JOIN:
                case HiveSqlParser.KW_LEFT:
                case HiveSqlParser.KW_RIGHT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3478;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_INNER:
                                {
                                    this.state = 3468;
                                    this.match(HiveSqlParser.KW_INNER);
                                }
                                break;
                            case HiveSqlParser.KW_CROSS:
                                {
                                    this.state = 3469;
                                    this.match(HiveSqlParser.KW_CROSS);
                                }
                                break;
                            case HiveSqlParser.KW_FULL:
                            case HiveSqlParser.KW_RIGHT:
                                {
                                    this.state = 3470;
                                    _la = this.tokenStream.LA(1);
                                    if (!(_la === 140 || _la === 285)) {
                                        this.errorHandler.recoverInline(this);
                                    }
                                    else {
                                        this.errorHandler.reportMatch(this);
                                        this.consume();
                                    }
                                    this.state = 3472;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 231) {
                                        {
                                            this.state = 3471;
                                            this.match(HiveSqlParser.KW_OUTER);
                                        }
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_LEFT:
                                {
                                    this.state = 3474;
                                    this.match(HiveSqlParser.KW_LEFT);
                                    this.state = 3476;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 12 || _la === 231 || _la === 300) {
                                        {
                                            this.state = 3475;
                                            _la = this.tokenStream.LA(1);
                                            if (!(_la === 12 || _la === 231 || _la === 300)) {
                                                this.errorHandler.recoverInline(this);
                                            }
                                            else {
                                                this.errorHandler.reportMatch(this);
                                                this.consume();
                                            }
                                        }
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_JOIN:
                                break;
                            default:
                                break;
                        }
                        this.state = 3480;
                        this.match(HiveSqlParser.KW_JOIN);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    lateralView() {
        let localContext = new LateralViewContext(this.context, this.state);
        this.enterRule(localContext, 464, HiveSqlParser.RULE_lateralView);
        let _la;
        try {
            let alternative;
            this.state = 3540;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3483;
                        this.match(HiveSqlParser.KW_LATERAL);
                        this.state = 3484;
                        this.match(HiveSqlParser.KW_VIEW);
                        this.state = 3485;
                        this.match(HiveSqlParser.KW_OUTER);
                        this.state = 3486;
                        this.function_();
                        this.state = 3487;
                        localContext._alias = this.tableAlias();
                        this.state = 3497;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 17) {
                            {
                                this.state = 3488;
                                this.match(HiveSqlParser.KW_AS);
                                this.state = 3489;
                                this.id_();
                                this.state = 3494;
                                this.errorHandler.sync(this);
                                alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context);
                                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                                    if (alternative === 1) {
                                        {
                                            {
                                                this.state = 3490;
                                                this.match(HiveSqlParser.COMMA);
                                                this.state = 3491;
                                                this.id_();
                                            }
                                        }
                                    }
                                    this.state = 3496;
                                    this.errorHandler.sync(this);
                                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context);
                                }
                            }
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3500;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 397) {
                            {
                                this.state = 3499;
                                this.match(HiveSqlParser.COMMA);
                            }
                        }
                        this.state = 3502;
                        this.match(HiveSqlParser.KW_LATERAL);
                        this.state = 3538;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_VIEW:
                                {
                                    this.state = 3503;
                                    this.match(HiveSqlParser.KW_VIEW);
                                    this.state = 3504;
                                    this.function_();
                                    this.state = 3505;
                                    localContext._alias = this.tableAlias();
                                    this.state = 3515;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 17) {
                                        {
                                            this.state = 3506;
                                            this.match(HiveSqlParser.KW_AS);
                                            this.state = 3507;
                                            this.id_();
                                            this.state = 3512;
                                            this.errorHandler.sync(this);
                                            alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context);
                                            while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                                                if (alternative === 1) {
                                                    {
                                                        {
                                                            this.state = 3508;
                                                            this.match(HiveSqlParser.COMMA);
                                                            this.state = 3509;
                                                            this.id_();
                                                        }
                                                    }
                                                }
                                                this.state = 3514;
                                                this.errorHandler.sync(this);
                                                alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context);
                                            }
                                        }
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_TABLE:
                                {
                                    this.state = 3517;
                                    this.match(HiveSqlParser.KW_TABLE);
                                    this.state = 3518;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 3519;
                                    this.valuesClause();
                                    this.state = 3520;
                                    this.match(HiveSqlParser.RPAREN);
                                    this.state = 3522;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 17) {
                                        {
                                            this.state = 3521;
                                            this.match(HiveSqlParser.KW_AS);
                                        }
                                    }
                                    this.state = 3524;
                                    localContext._alias = this.tableAlias();
                                    this.state = 3536;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context)) {
                                        case 1:
                                            {
                                                this.state = 3525;
                                                this.match(HiveSqlParser.LPAREN);
                                                this.state = 3526;
                                                this.id_();
                                                this.state = 3531;
                                                this.errorHandler.sync(this);
                                                _la = this.tokenStream.LA(1);
                                                while (_la === 397) {
                                                    {
                                                        {
                                                            this.state = 3527;
                                                            this.match(HiveSqlParser.COMMA);
                                                            this.state = 3528;
                                                            this.id_();
                                                        }
                                                    }
                                                    this.state = 3533;
                                                    this.errorHandler.sync(this);
                                                    _la = this.tokenStream.LA(1);
                                                }
                                                this.state = 3534;
                                                this.match(HiveSqlParser.RPAREN);
                                            }
                                            break;
                                    }
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableAlias() {
        let localContext = new TableAliasContext(this.context, this.state);
        this.enterRule(localContext, 466, HiveSqlParser.RULE_tableAlias);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3542;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableSample() {
        let localContext = new TableSampleContext(this.context, this.state);
        this.enterRule(localContext, 468, HiveSqlParser.RULE_tableSample);
        let _la;
        try {
            this.state = 3571;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3544;
                        this.match(HiveSqlParser.KW_TABLESAMPLE);
                        this.state = 3545;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3546;
                        this.match(HiveSqlParser.KW_BUCKET);
                        this.state = 3547;
                        localContext._numerator = this.match(HiveSqlParser.Number);
                        this.state = 3548;
                        this.match(HiveSqlParser.KW_OUT);
                        this.state = 3549;
                        this.match(HiveSqlParser.KW_OF);
                        this.state = 3550;
                        localContext._denominator = this.match(HiveSqlParser.Number);
                        this.state = 3560;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 224) {
                            {
                                this.state = 3551;
                                this.match(HiveSqlParser.KW_ON);
                                this.state = 3552;
                                localContext._expression = this.expression();
                                localContext._expr.push(localContext._expression);
                                this.state = 3557;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                                while (_la === 397) {
                                    {
                                        {
                                            this.state = 3553;
                                            this.match(HiveSqlParser.COMMA);
                                            this.state = 3554;
                                            localContext._expression = this.expression();
                                            localContext._expr.push(localContext._expression);
                                        }
                                    }
                                    this.state = 3559;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                }
                            }
                        }
                        this.state = 3562;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3563;
                        this.match(HiveSqlParser.KW_TABLESAMPLE);
                        this.state = 3564;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3568;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.Number:
                                {
                                    this.state = 3565;
                                    this.match(HiveSqlParser.Number);
                                    this.state = 3566;
                                    _la = this.tokenStream.LA(1);
                                    if (!(_la === 241 || _la === 292)) {
                                        this.errorHandler.recoverInline(this);
                                    }
                                    else {
                                        this.errorHandler.reportMatch(this);
                                        this.consume();
                                    }
                                }
                                break;
                            case HiveSqlParser.ByteLengthLiteral:
                                {
                                    this.state = 3567;
                                    this.match(HiveSqlParser.ByteLengthLiteral);
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                        this.state = 3570;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableSource() {
        let localContext = new TableSourceContext(this.context, this.state);
        this.enterRule(localContext, 470, HiveSqlParser.RULE_tableSource);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3573;
                localContext._tabname = this.tableOrView();
                this.state = 3575;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context)) {
                    case 1:
                        {
                            this.state = 3574;
                            localContext._props = this.tableProperties();
                        }
                        break;
                }
                this.state = 3578;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 331) {
                    {
                        this.state = 3577;
                        localContext._ts = this.tableSample();
                    }
                }
                this.state = 3581;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 134) {
                    {
                        this.state = 3580;
                        localContext._asOf = this.asOfClause();
                    }
                }
                this.state = 3587;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context)) {
                    case 1:
                        {
                            this.state = 3584;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 17) {
                                {
                                    this.state = 3583;
                                    this.match(HiveSqlParser.KW_AS);
                                }
                            }
                            this.state = 3586;
                            localContext._alias = this.id_();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    asOfClause() {
        let localContext = new AsOfClauseContext(this.context, this.state);
        this.enterRule(localContext, 472, HiveSqlParser.RULE_asOfClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3589;
                this.match(HiveSqlParser.KW_FOR);
                this.state = 3599;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_SYSTEM_TIME:
                        {
                            this.state = 3590;
                            this.match(HiveSqlParser.KW_SYSTEM_TIME);
                            this.state = 3591;
                            this.match(HiveSqlParser.KW_AS);
                            this.state = 3592;
                            this.match(HiveSqlParser.KW_OF);
                            this.state = 3593;
                            localContext._asOfTime = this.expression();
                        }
                        break;
                    case HiveSqlParser.KW_FOR:
                        {
                            this.state = 3594;
                            this.match(HiveSqlParser.KW_FOR);
                            this.state = 3595;
                            this.match(HiveSqlParser.KW_SYSTEM_VERSION);
                            this.state = 3596;
                            this.match(HiveSqlParser.KW_AS);
                            this.state = 3597;
                            this.match(HiveSqlParser.KW_OF);
                            this.state = 3598;
                            localContext._asOfVersion = this.match(HiveSqlParser.Number);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dbSchemaName() {
        let localContext = new DbSchemaNameContext(this.context, this.state);
        this.enterRule(localContext, 474, HiveSqlParser.RULE_dbSchemaName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3601;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    dbSchemaNameCreate() {
        let localContext = new DbSchemaNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 476, HiveSqlParser.RULE_dbSchemaNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3603;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableOrView() {
        let localContext = new TableOrViewContext(this.context, this.state);
        this.enterRule(localContext, 478, HiveSqlParser.RULE_tableOrView);
        try {
            this.state = 3607;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3605;
                        this.tableName();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3606;
                        this.viewName();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableName() {
        let localContext = new TableNameContext(this.context, this.state);
        this.enterRule(localContext, 480, HiveSqlParser.RULE_tableName);
        try {
            this.state = 3617;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 473, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3609;
                        localContext._db = this.id_();
                        this.state = 3610;
                        this.match(HiveSqlParser.DOT);
                        this.state = 3611;
                        localContext._tab = this.id_();
                        this.state = 3614;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 472, this.context)) {
                            case 1:
                                {
                                    this.state = 3612;
                                    this.match(HiveSqlParser.DOT);
                                    this.state = 3613;
                                    localContext._meta = this.id_();
                                }
                                break;
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3616;
                        localContext._tab = this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableNameCreate() {
        let localContext = new TableNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 482, HiveSqlParser.RULE_tableNameCreate);
        let _la;
        try {
            this.state = 3627;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 475, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3619;
                        localContext._db = this.id_();
                        this.state = 3620;
                        this.match(HiveSqlParser.DOT);
                        this.state = 3621;
                        localContext._tab = this.id_();
                        this.state = 3624;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 395) {
                            {
                                this.state = 3622;
                                this.match(HiveSqlParser.DOT);
                                this.state = 3623;
                                localContext._meta = this.id_();
                            }
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3626;
                        localContext._tab = this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewName() {
        let localContext = new ViewNameContext(this.context, this.state);
        this.enterRule(localContext, 484, HiveSqlParser.RULE_viewName);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3632;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context)) {
                    case 1:
                        {
                            this.state = 3629;
                            localContext._db = this.id_();
                            this.state = 3630;
                            this.match(HiveSqlParser.DOT);
                        }
                        break;
                }
                this.state = 3634;
                localContext._view = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    viewNameCreate() {
        let localContext = new ViewNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 486, HiveSqlParser.RULE_viewNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3639;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 477, this.context)) {
                    case 1:
                        {
                            this.state = 3636;
                            localContext._db = this.id_();
                            this.state = 3637;
                            this.match(HiveSqlParser.DOT);
                        }
                        break;
                }
                this.state = 3641;
                localContext._view = this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    subQuerySource() {
        let localContext = new SubQuerySourceContext(this.context, this.state);
        this.enterRule(localContext, 488, HiveSqlParser.RULE_subQuerySource);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3643;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3644;
                this.queryStatementExpression();
                this.state = 3645;
                this.match(HiveSqlParser.RPAREN);
                this.state = 3647;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                        this.state = 3646;
                        this.match(HiveSqlParser.KW_AS);
                    }
                }
                this.state = 3649;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitioningSpec() {
        let localContext = new PartitioningSpecContext(this.context, this.state);
        this.enterRule(localContext, 490, HiveSqlParser.RULE_partitioningSpec);
        let _la;
        try {
            this.state = 3662;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_PARTITION:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3651;
                        this.partitionByClause();
                        this.state = 3653;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 229) {
                            {
                                this.state = 3652;
                                this.orderByClause();
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_ORDER:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3655;
                        this.orderByClause();
                    }
                    break;
                case HiveSqlParser.KW_DISTRIBUTE:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3656;
                        this.distributeByClause();
                        this.state = 3658;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 314) {
                            {
                                this.state = 3657;
                                this.sortByClause();
                            }
                        }
                    }
                    break;
                case HiveSqlParser.KW_SORT:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 3660;
                        this.sortByClause();
                    }
                    break;
                case HiveSqlParser.KW_CLUSTER:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 3661;
                        this.clusterByClause();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionTableFunctionSource() {
        let localContext = new PartitionTableFunctionSourceContext(this.context, this.state);
        this.enterRule(localContext, 492, HiveSqlParser.RULE_partitionTableFunctionSource);
        try {
            this.state = 3667;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 482, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3664;
                        this.subQuerySource();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3665;
                        this.tableSource();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 3666;
                        this.partitionedTableFunction();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionedTableFunction() {
        let localContext = new PartitionedTableFunctionContext(this.context, this.state);
        this.enterRule(localContext, 494, HiveSqlParser.RULE_partitionedTableFunction);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3669;
                localContext._n = this.id_();
                this.state = 3670;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3671;
                this.match(HiveSqlParser.KW_ON);
                this.state = 3672;
                localContext._ptfsrc = this.partitionTableFunctionSource();
                this.state = 3674;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 41 || _la === 97 || _la === 229 || _la === 237 || _la === 314) {
                    {
                        this.state = 3673;
                        localContext._spec = this.partitioningSpec();
                    }
                }
                this.state = 3691;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 432) {
                    {
                        this.state = 3676;
                        this.match(HiveSqlParser.Identifier);
                        this.state = 3677;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3678;
                        this.expression();
                        this.state = 3679;
                        this.match(HiveSqlParser.RPAREN);
                        this.state = 3688;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                                {
                                    this.state = 3680;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 3681;
                                    this.match(HiveSqlParser.Identifier);
                                    this.state = 3682;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 3683;
                                    this.expression();
                                    this.state = 3684;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                            }
                            this.state = 3690;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                }
                this.state = 3693;
                this.match(HiveSqlParser.RPAREN);
                this.state = 3695;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 486, this.context)) {
                    case 1:
                        {
                            this.state = 3694;
                            localContext._alias = this.id_();
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    whereClause() {
        let localContext = new WhereClauseContext(this.context, this.state);
        this.enterRule(localContext, 496, HiveSqlParser.RULE_whereClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3697;
                this.match(HiveSqlParser.KW_WHERE);
                this.state = 3698;
                this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    valuesClause() {
        let localContext = new ValuesClauseContext(this.context, this.state);
        this.enterRule(localContext, 498, HiveSqlParser.RULE_valuesClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3700;
                this.match(HiveSqlParser.KW_VALUES);
                this.state = 3719;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 489, this.context)) {
                    case 1:
                        {
                            this.state = 3701;
                            this.expressionsInParenthesis();
                            this.state = 3706;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            while (_la === 397) {
                                {
                                    {
                                        this.state = 3702;
                                        this.match(HiveSqlParser.COMMA);
                                        this.state = 3703;
                                        this.expressionsInParenthesis();
                                    }
                                }
                                this.state = 3708;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                            }
                        }
                        break;
                    case 2:
                        {
                            this.state = 3709;
                            this.match(HiveSqlParser.LPAREN);
                            this.state = 3710;
                            this.firstExpressionsWithAlias();
                            this.state = 3711;
                            this.match(HiveSqlParser.RPAREN);
                            this.state = 3716;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            while (_la === 397) {
                                {
                                    {
                                        this.state = 3712;
                                        this.match(HiveSqlParser.COMMA);
                                        this.state = 3713;
                                        this.expressionsInParenthesis();
                                    }
                                }
                                this.state = 3718;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                            }
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    virtualTableSource() {
        let localContext = new VirtualTableSourceContext(this.context, this.state);
        this.enterRule(localContext, 500, HiveSqlParser.RULE_virtualTableSource);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3721;
                this.match(HiveSqlParser.KW_TABLE);
                this.state = 3722;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3723;
                this.valuesClause();
                this.state = 3724;
                this.match(HiveSqlParser.RPAREN);
                this.state = 3726;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                        this.state = 3725;
                        this.match(HiveSqlParser.KW_AS);
                    }
                }
                this.state = 3728;
                this.tableAlias();
                this.state = 3738;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 399) {
                    {
                        this.state = 3729;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3730;
                        this.id_();
                        this.state = 3735;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                                {
                                    this.state = 3731;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 3732;
                                    this.id_();
                                }
                            }
                            this.state = 3737;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                }
                this.state = 3740;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectClause() {
        let localContext = new SelectClauseContext(this.context, this.state);
        this.enterRule(localContext, 502, HiveSqlParser.RULE_selectClause);
        let _la;
        try {
            let alternative;
            this.state = 3762;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_SELECT:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3742;
                        this.match(HiveSqlParser.KW_SELECT);
                        this.state = 3744;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 493, this.context)) {
                            case 1:
                                {
                                    this.state = 3743;
                                    this.match(HiveSqlParser.QUERY_HINT);
                                }
                                break;
                        }
                        this.state = 3759;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 496, this.context)) {
                            case 1:
                                {
                                    this.state = 3747;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 494, this.context)) {
                                        case 1:
                                            {
                                                this.state = 3746;
                                                _la = this.tokenStream.LA(1);
                                                if (!(_la === 7 || _la === 96)) {
                                                    this.errorHandler.recoverInline(this);
                                                }
                                                else {
                                                    this.errorHandler.reportMatch(this);
                                                    this.consume();
                                                }
                                            }
                                            break;
                                    }
                                    this.state = 3749;
                                    this.selectItem();
                                    this.state = 3754;
                                    this.errorHandler.sync(this);
                                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 495, this.context);
                                    while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                                        if (alternative === 1) {
                                            {
                                                {
                                                    this.state = 3750;
                                                    this.match(HiveSqlParser.COMMA);
                                                    this.state = 3751;
                                                    this.selectItem();
                                                }
                                            }
                                        }
                                        this.state = 3756;
                                        this.errorHandler.sync(this);
                                        alternative = this.interpreter.adaptivePredict(this.tokenStream, 495, this.context);
                                    }
                                }
                                break;
                            case 2:
                                {
                                    this.state = 3757;
                                    this.match(HiveSqlParser.KW_TRANSFORM);
                                    this.state = 3758;
                                    this.selectTrfmClause();
                                }
                                break;
                        }
                    }
                    break;
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_REDUCE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3761;
                        this.trfmClause();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectTrfmClause() {
        let localContext = new SelectTrfmClauseContext(this.context, this.state);
        this.enterRule(localContext, 504, HiveSqlParser.RULE_selectTrfmClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3764;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3765;
                this.selectExpressionList();
                this.state = 3766;
                this.match(HiveSqlParser.RPAREN);
                this.state = 3767;
                this.rowFormat();
                this.state = 3768;
                this.recordWriter();
                this.state = 3769;
                this.match(HiveSqlParser.KW_USING);
                this.state = 3770;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 3783;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                        this.state = 3771;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 3781;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 499, this.context)) {
                            case 1:
                                {
                                    this.state = 3772;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 3775;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 498, this.context)) {
                                        case 1:
                                            {
                                                this.state = 3773;
                                                this.aliasList();
                                            }
                                            break;
                                        case 2:
                                            {
                                                this.state = 3774;
                                                this.columnNameTypeList();
                                            }
                                            break;
                                    }
                                    this.state = 3777;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                            case 2:
                                {
                                    this.state = 3779;
                                    this.aliasList();
                                }
                                break;
                            case 3:
                                {
                                    this.state = 3780;
                                    this.columnNameTypeList();
                                }
                                break;
                        }
                    }
                }
                this.state = 3785;
                this.rowFormat();
                this.state = 3786;
                this.recordReader();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectItem() {
        let localContext = new SelectItemContext(this.context, this.state);
        this.enterRule(localContext, 506, HiveSqlParser.RULE_selectItem);
        let _la;
        try {
            this.state = 3811;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 505, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3788;
                        this.tableAllColumns();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        {
                            this.state = 3791;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 501, this.context)) {
                                case 1:
                                    {
                                        this.state = 3789;
                                        this.columnName();
                                    }
                                    break;
                                case 2:
                                    {
                                        this.state = 3790;
                                        this.expression();
                                    }
                                    break;
                            }
                            this.state = 3809;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 504, this.context)) {
                                case 1:
                                    {
                                        this.state = 3794;
                                        this.errorHandler.sync(this);
                                        _la = this.tokenStream.LA(1);
                                        if (_la === 17) {
                                            {
                                                this.state = 3793;
                                                this.match(HiveSqlParser.KW_AS);
                                            }
                                        }
                                        this.state = 3796;
                                        this.id_();
                                    }
                                    break;
                                case 2:
                                    {
                                        this.state = 3797;
                                        this.match(HiveSqlParser.KW_AS);
                                        this.state = 3798;
                                        this.match(HiveSqlParser.LPAREN);
                                        this.state = 3799;
                                        this.id_();
                                        this.state = 3804;
                                        this.errorHandler.sync(this);
                                        _la = this.tokenStream.LA(1);
                                        while (_la === 397) {
                                            {
                                                {
                                                    this.state = 3800;
                                                    this.match(HiveSqlParser.COMMA);
                                                    this.state = 3801;
                                                    this.id_();
                                                }
                                            }
                                            this.state = 3806;
                                            this.errorHandler.sync(this);
                                            _la = this.tokenStream.LA(1);
                                        }
                                        this.state = 3807;
                                        this.match(HiveSqlParser.RPAREN);
                                    }
                                    break;
                            }
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    trfmClause() {
        let localContext = new TrfmClauseContext(this.context, this.state);
        this.enterRule(localContext, 508, HiveSqlParser.RULE_trfmClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3813;
                _la = this.tokenStream.LA(1);
                if (!(_la === 198 || _la === 268)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 3814;
                this.selectExpressionList();
                this.state = 3815;
                this.rowFormat();
                this.state = 3816;
                this.recordWriter();
                this.state = 3817;
                this.match(HiveSqlParser.KW_USING);
                this.state = 3818;
                this.match(HiveSqlParser.StringLiteral);
                this.state = 3831;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                        this.state = 3819;
                        this.match(HiveSqlParser.KW_AS);
                        this.state = 3829;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context)) {
                            case 1:
                                {
                                    this.state = 3820;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 3823;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 506, this.context)) {
                                        case 1:
                                            {
                                                this.state = 3821;
                                                this.aliasList();
                                            }
                                            break;
                                        case 2:
                                            {
                                                this.state = 3822;
                                                this.columnNameTypeList();
                                            }
                                            break;
                                    }
                                    this.state = 3825;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                            case 2:
                                {
                                    this.state = 3827;
                                    this.aliasList();
                                }
                                break;
                            case 3:
                                {
                                    this.state = 3828;
                                    this.columnNameTypeList();
                                }
                                break;
                        }
                    }
                }
                this.state = 3833;
                this.rowFormat();
                this.state = 3834;
                this.recordReader();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectExpression() {
        let localContext = new SelectExpressionContext(this.context, this.state);
        this.enterRule(localContext, 510, HiveSqlParser.RULE_selectExpression);
        try {
            this.state = 3838;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 509, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3836;
                        this.tableAllColumns();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3837;
                        this.expression();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    selectExpressionList() {
        let localContext = new SelectExpressionListContext(this.context, this.state);
        this.enterRule(localContext, 512, HiveSqlParser.RULE_selectExpressionList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3840;
                this.selectExpression();
                this.state = 3845;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3841;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3842;
                            this.selectExpression();
                        }
                    }
                    this.state = 3847;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    window_clause() {
        let localContext = new Window_clauseContext(this.context, this.state);
        this.enterRule(localContext, 514, HiveSqlParser.RULE_window_clause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3848;
                this.match(HiveSqlParser.KW_WINDOW);
                this.state = 3849;
                this.id_();
                this.state = 3850;
                this.match(HiveSqlParser.KW_AS);
                this.state = 3851;
                this.window_specification();
                this.state = 3859;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3852;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3853;
                            this.id_();
                            this.state = 3854;
                            this.match(HiveSqlParser.KW_AS);
                            this.state = 3855;
                            this.window_specification();
                        }
                    }
                    this.state = 3861;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    window_specification() {
        let localContext = new Window_specificationContext(this.context, this.state);
        this.enterRule(localContext, 516, HiveSqlParser.RULE_window_specification);
        let _la;
        try {
            this.state = 3874;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3862;
                        this.id_();
                    }
                    break;
                case HiveSqlParser.LPAREN:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3863;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3865;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context)) {
                            case 1:
                                {
                                    this.state = 3864;
                                    this.id_();
                                }
                                break;
                        }
                        this.state = 3868;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 41 || _la === 97 || _la === 229 || _la === 237 || _la === 314) {
                            {
                                this.state = 3867;
                                this.partitioningSpec();
                            }
                        }
                        this.state = 3871;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 260 || _la === 292) {
                            {
                                this.state = 3870;
                                this.window_frame();
                            }
                        }
                        this.state = 3873;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    window_frame() {
        let localContext = new Window_frameContext(this.context, this.state);
        this.enterRule(localContext, 518, HiveSqlParser.RULE_window_frame);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3876;
                _la = this.tokenStream.LA(1);
                if (!(_la === 260 || _la === 292)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 3890;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_CURRENT:
                    case HiveSqlParser.KW_UNBOUNDED:
                    case HiveSqlParser.Number:
                        {
                            this.state = 3883;
                            this.errorHandler.sync(this);
                            switch (this.tokenStream.LA(1)) {
                                case HiveSqlParser.KW_UNBOUNDED:
                                    {
                                        {
                                            this.state = 3877;
                                            this.match(HiveSqlParser.KW_UNBOUNDED);
                                            this.state = 3878;
                                            this.match(HiveSqlParser.KW_PRECEDING);
                                        }
                                    }
                                    break;
                                case HiveSqlParser.KW_CURRENT:
                                    {
                                        {
                                            this.state = 3879;
                                            this.match(HiveSqlParser.KW_CURRENT);
                                            this.state = 3880;
                                            this.match(HiveSqlParser.KW_ROW);
                                        }
                                    }
                                    break;
                                case HiveSqlParser.Number:
                                    {
                                        {
                                            this.state = 3881;
                                            this.match(HiveSqlParser.Number);
                                            this.state = 3882;
                                            this.match(HiveSqlParser.KW_PRECEDING);
                                        }
                                    }
                                    break;
                                default:
                                    throw new antlr.NoViableAltException(this);
                            }
                        }
                        break;
                    case HiveSqlParser.KW_BETWEEN:
                        {
                            this.state = 3885;
                            this.match(HiveSqlParser.KW_BETWEEN);
                            this.state = 3886;
                            this.window_frame_boundary();
                            this.state = 3887;
                            this.match(HiveSqlParser.KW_AND);
                            this.state = 3888;
                            this.window_frame_boundary();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    window_frame_boundary() {
        let localContext = new Window_frame_boundaryContext(this.context, this.state);
        this.enterRule(localContext, 520, HiveSqlParser.RULE_window_frame_boundary);
        let _la;
        try {
            this.state = 3896;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_UNBOUNDED:
                case HiveSqlParser.Number:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3892;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 354 || _la === 431)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 3893;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 133 || _la === 247)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                    }
                    break;
                case HiveSqlParser.KW_CURRENT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3894;
                        this.match(HiveSqlParser.KW_CURRENT);
                        this.state = 3895;
                        this.match(HiveSqlParser.KW_ROW);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    groupByClause() {
        let localContext = new GroupByClauseContext(this.context, this.state);
        this.enterRule(localContext, 522, HiveSqlParser.RULE_groupByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3898;
                this.match(HiveSqlParser.KW_GROUP);
                this.state = 3899;
                this.match(HiveSqlParser.KW_BY);
                this.state = 3905;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 519, this.context)) {
                    case 1:
                        {
                            this.state = 3900;
                            this.columnName();
                        }
                        break;
                    case 2:
                        {
                            this.state = 3901;
                            this.rollupStandard();
                        }
                        break;
                    case 3:
                        {
                            this.state = 3902;
                            this.rollupOldSyntax();
                        }
                        break;
                    case 4:
                        {
                            {
                                this.state = 3903;
                                this.match(HiveSqlParser.LPAREN);
                                this.state = 3904;
                                this.match(HiveSqlParser.RPAREN);
                            }
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rollupStandard() {
        let localContext = new RollupStandardContext(this.context, this.state);
        this.enterRule(localContext, 524, HiveSqlParser.RULE_rollupStandard);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3909;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_ROLLUP:
                        {
                            this.state = 3907;
                            localContext._rollup = this.match(HiveSqlParser.KW_ROLLUP);
                        }
                        break;
                    case HiveSqlParser.KW_CUBE:
                        {
                            this.state = 3908;
                            localContext._cube = this.match(HiveSqlParser.KW_CUBE);
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 3911;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3912;
                this.expression();
                this.state = 3917;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3913;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3914;
                            this.expression();
                        }
                    }
                    this.state = 3919;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 3920;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rollupOldSyntax() {
        let localContext = new RollupOldSyntaxContext(this.context, this.state);
        this.enterRule(localContext, 526, HiveSqlParser.RULE_rollupOldSyntax);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3922;
                localContext._expr = this.expressionsNotInParenthesis();
                this.state = 3927;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 522, this.context)) {
                    case 1:
                        {
                            this.state = 3923;
                            localContext._rollup = this.match(HiveSqlParser.KW_WITH);
                            this.state = 3924;
                            this.match(HiveSqlParser.KW_ROLLUP);
                        }
                        break;
                    case 2:
                        {
                            this.state = 3925;
                            localContext._cube = this.match(HiveSqlParser.KW_WITH);
                            this.state = 3926;
                            this.match(HiveSqlParser.KW_CUBE);
                        }
                        break;
                }
                this.state = 3942;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 145) {
                    {
                        this.state = 3929;
                        localContext._sets = this.match(HiveSqlParser.KW_GROUPING);
                        this.state = 3930;
                        this.match(HiveSqlParser.KW_SETS);
                        this.state = 3931;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3932;
                        this.groupingSetExpression();
                        this.state = 3937;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                                {
                                    this.state = 3933;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 3934;
                                    this.groupingSetExpression();
                                }
                            }
                            this.state = 3939;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                        this.state = 3940;
                        this.match(HiveSqlParser.RPAREN);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    groupingSetExpression() {
        let localContext = new GroupingSetExpressionContext(this.context, this.state);
        this.enterRule(localContext, 528, HiveSqlParser.RULE_groupingSetExpression);
        let _la;
        try {
            this.state = 3957;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 527, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3944;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 3946;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) {
                            {
                                this.state = 3945;
                                this.expression();
                            }
                        }
                        this.state = 3952;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 397) {
                            {
                                {
                                    this.state = 3948;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 3949;
                                    this.expression();
                                }
                            }
                            this.state = 3954;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                        this.state = 3955;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3956;
                        this.expression();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    havingClause() {
        let localContext = new HavingClauseContext(this.context, this.state);
        this.enterRule(localContext, 530, HiveSqlParser.RULE_havingClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3959;
                this.match(HiveSqlParser.KW_HAVING);
                this.state = 3960;
                this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    qualifyClause() {
        let localContext = new QualifyClauseContext(this.context, this.state);
        this.enterRule(localContext, 532, HiveSqlParser.RULE_qualifyClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3962;
                this.match(HiveSqlParser.KW_QUALIFY);
                this.state = 3963;
                this.expression();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    expressionOrDefault() {
        let localContext = new ExpressionOrDefaultContext(this.context, this.state);
        this.enterRule(localContext, 534, HiveSqlParser.RULE_expressionOrDefault);
        try {
            this.state = 3967;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 528, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3965;
                        this.match(HiveSqlParser.KW_DEFAULT);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3966;
                        this.expression();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    firstExpressionsWithAlias() {
        let localContext = new FirstExpressionsWithAliasContext(this.context, this.state);
        this.enterRule(localContext, 536, HiveSqlParser.RULE_firstExpressionsWithAlias);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3969;
                localContext._first = this.expression();
                this.state = 3971;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 17) {
                    {
                        this.state = 3970;
                        this.match(HiveSqlParser.KW_AS);
                    }
                }
                this.state = 3974;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                    {
                        this.state = 3973;
                        localContext._colAlias = this.id_();
                    }
                }
                this.state = 3986;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 3976;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 3977;
                            this.expression();
                            this.state = 3979;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if (_la === 17) {
                                {
                                    this.state = 3978;
                                    this.match(HiveSqlParser.KW_AS);
                                }
                            }
                            this.state = 3982;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                            if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) {
                                {
                                    this.state = 3981;
                                    localContext._alias = this.id_();
                                }
                            }
                        }
                    }
                    this.state = 3988;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    expressions() {
        let localContext = new ExpressionsContext(this.context, this.state);
        this.enterRule(localContext, 538, HiveSqlParser.RULE_expressions);
        try {
            this.state = 3991;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 3989;
                        this.expressionsInParenthesis();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 3990;
                        this.expressionsNotInParenthesis();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    expressionsInParenthesis() {
        let localContext = new ExpressionsInParenthesisContext(this.context, this.state);
        this.enterRule(localContext, 540, HiveSqlParser.RULE_expressionsInParenthesis);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3993;
                this.match(HiveSqlParser.LPAREN);
                this.state = 3994;
                this.expressionsNotInParenthesis();
                this.state = 3995;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    expressionsNotInParenthesis() {
        let localContext = new ExpressionsNotInParenthesisContext(this.context, this.state);
        this.enterRule(localContext, 542, HiveSqlParser.RULE_expressionsNotInParenthesis);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 3997;
                localContext._first = this.expressionOrDefault();
                this.state = 4004;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 397) {
                    {
                        this.state = 4000;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        do {
                            {
                                {
                                    this.state = 3998;
                                    this.match(HiveSqlParser.COMMA);
                                    this.state = 3999;
                                    this.expressionOrDefault();
                                }
                            }
                            this.state = 4002;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        } while (_la === 397);
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    orderByClause() {
        let localContext = new OrderByClauseContext(this.context, this.state);
        this.enterRule(localContext, 544, HiveSqlParser.RULE_orderByClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4006;
                this.match(HiveSqlParser.KW_ORDER);
                this.state = 4007;
                this.match(HiveSqlParser.KW_BY);
                this.state = 4008;
                this.columnRefOrder();
                this.state = 4013;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 4009;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4010;
                            this.columnRefOrder();
                        }
                    }
                    this.state = 4015;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionByClause() {
        let localContext = new PartitionByClauseContext(this.context, this.state);
        this.enterRule(localContext, 546, HiveSqlParser.RULE_partitionByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4016;
                this.match(HiveSqlParser.KW_PARTITION);
                this.state = 4017;
                this.match(HiveSqlParser.KW_BY);
                this.state = 4018;
                this.expressions();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    clusterByClause() {
        let localContext = new ClusterByClauseContext(this.context, this.state);
        this.enterRule(localContext, 548, HiveSqlParser.RULE_clusterByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4020;
                this.match(HiveSqlParser.KW_CLUSTER);
                this.state = 4021;
                this.match(HiveSqlParser.KW_BY);
                this.state = 4022;
                this.expressions();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    distributeByClause() {
        let localContext = new DistributeByClauseContext(this.context, this.state);
        this.enterRule(localContext, 550, HiveSqlParser.RULE_distributeByClause);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4024;
                this.match(HiveSqlParser.KW_DISTRIBUTE);
                this.state = 4025;
                this.match(HiveSqlParser.KW_BY);
                this.state = 4026;
                this.expressions();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    sortByClause() {
        let localContext = new SortByClauseContext(this.context, this.state);
        this.enterRule(localContext, 552, HiveSqlParser.RULE_sortByClause);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4028;
                this.match(HiveSqlParser.KW_SORT);
                this.state = 4029;
                this.match(HiveSqlParser.KW_BY);
                this.state = 4049;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 540, this.context)) {
                    case 1:
                        {
                            {
                                this.state = 4030;
                                this.match(HiveSqlParser.LPAREN);
                                this.state = 4031;
                                this.columnRefOrder();
                                this.state = 4036;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                                while (_la === 397) {
                                    {
                                        {
                                            this.state = 4032;
                                            this.match(HiveSqlParser.COMMA);
                                            this.state = 4033;
                                            this.columnRefOrder();
                                        }
                                    }
                                    this.state = 4038;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                }
                                this.state = 4039;
                                this.match(HiveSqlParser.RPAREN);
                            }
                        }
                        break;
                    case 2:
                        {
                            {
                                this.state = 4041;
                                this.columnRefOrder();
                                this.state = 4046;
                                this.errorHandler.sync(this);
                                _la = this.tokenStream.LA(1);
                                while (_la === 397) {
                                    {
                                        {
                                            this.state = 4042;
                                            this.match(HiveSqlParser.COMMA);
                                            this.state = 4043;
                                            this.columnRefOrder();
                                        }
                                    }
                                    this.state = 4048;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                }
                            }
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    function_() {
        let localContext = new Function_Context(this.context, this.state);
        this.enterRule(localContext, 554, HiveSqlParser.RULE_function_);
        let _la;
        try {
            this.state = 4104;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4051;
                        this.match(HiveSqlParser.KW_TRIM);
                        this.state = 4052;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 4056;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_LEADING:
                                {
                                    this.state = 4053;
                                    localContext._leading = this.match(HiveSqlParser.KW_LEADING);
                                }
                                break;
                            case HiveSqlParser.KW_TRAILING:
                                {
                                    this.state = 4054;
                                    localContext._trailing = this.match(HiveSqlParser.KW_TRAILING);
                                }
                                break;
                            case HiveSqlParser.KW_BOTH:
                                {
                                    this.state = 4055;
                                    this.match(HiveSqlParser.KW_BOTH);
                                }
                                break;
                            case HiveSqlParser.KW_ABORT:
                            case HiveSqlParser.KW_ACTIVATE:
                            case HiveSqlParser.KW_ACTIVE:
                            case HiveSqlParser.KW_ADD:
                            case HiveSqlParser.KW_ADMIN:
                            case HiveSqlParser.KW_AFTER:
                            case HiveSqlParser.KW_ALLOC_FRACTION:
                            case HiveSqlParser.KW_ANALYZE:
                            case HiveSqlParser.KW_AND:
                            case HiveSqlParser.KW_ARCHIVE:
                            case HiveSqlParser.KW_ARRAY:
                            case HiveSqlParser.KW_ASC:
                            case HiveSqlParser.KW_AST:
                            case HiveSqlParser.KW_AT:
                            case HiveSqlParser.KW_AUTOCOMMIT:
                            case HiveSqlParser.KW_BATCH:
                            case HiveSqlParser.KW_BEFORE:
                            case HiveSqlParser.KW_BETWEEN:
                            case HiveSqlParser.KW_BIGINT:
                            case HiveSqlParser.KW_BINARY:
                            case HiveSqlParser.KW_BOOLEAN:
                            case HiveSqlParser.KW_BUCKET:
                            case HiveSqlParser.KW_BUCKETS:
                            case HiveSqlParser.KW_CACHE:
                            case HiveSqlParser.KW_CASCADE:
                            case HiveSqlParser.KW_CASE:
                            case HiveSqlParser.KW_CAST:
                            case HiveSqlParser.KW_CBO:
                            case HiveSqlParser.KW_CHANGE:
                            case HiveSqlParser.KW_CHECK:
                            case HiveSqlParser.KW_CLUSTER:
                            case HiveSqlParser.KW_CLUSTERED:
                            case HiveSqlParser.KW_CLUSTERSTATUS:
                            case HiveSqlParser.KW_COLLECTION:
                            case HiveSqlParser.KW_COLUMNS:
                            case HiveSqlParser.KW_COMMENT:
                            case HiveSqlParser.KW_COMPACT:
                            case HiveSqlParser.KW_COMPACTIONS:
                            case HiveSqlParser.KW_COMPUTE:
                            case HiveSqlParser.KW_CONCATENATE:
                            case HiveSqlParser.KW_CONTINUE:
                            case HiveSqlParser.KW_COST:
                            case HiveSqlParser.KW_CRON:
                            case HiveSqlParser.KW_CURRENT_DATE:
                            case HiveSqlParser.KW_CURRENT_TIMESTAMP:
                            case HiveSqlParser.KW_DATA:
                            case HiveSqlParser.KW_DATABASES:
                            case HiveSqlParser.KW_DATE:
                            case HiveSqlParser.KW_DATETIME:
                            case HiveSqlParser.KW_DAY:
                            case HiveSqlParser.KW_DAYS:
                            case HiveSqlParser.KW_DAYOFWEEK:
                            case HiveSqlParser.KW_DBPROPERTIES:
                            case HiveSqlParser.KW_DCPROPERTIES:
                            case HiveSqlParser.KW_DEBUG:
                            case HiveSqlParser.KW_DEFAULT:
                            case HiveSqlParser.KW_DEFERRED:
                            case HiveSqlParser.KW_DEFINED:
                            case HiveSqlParser.KW_DELIMITED:
                            case HiveSqlParser.KW_DEPENDENCY:
                            case HiveSqlParser.KW_DESC:
                            case HiveSqlParser.KW_DETAIL:
                            case HiveSqlParser.KW_DIRECTORIES:
                            case HiveSqlParser.KW_DIRECTORY:
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                            case HiveSqlParser.KW_DISTRIBUTE:
                            case HiveSqlParser.KW_DISTRIBUTED:
                            case HiveSqlParser.KW_DO:
                            case HiveSqlParser.KW_DOUBLE:
                            case HiveSqlParser.KW_DUMP:
                            case HiveSqlParser.KW_ELEM_TYPE:
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                            case HiveSqlParser.KW_ENFORCED:
                            case HiveSqlParser.KW_ESCAPED:
                            case HiveSqlParser.KW_EVERY:
                            case HiveSqlParser.KW_EXCLUSIVE:
                            case HiveSqlParser.KW_EXECUTE:
                            case HiveSqlParser.KW_EXECUTED:
                            case HiveSqlParser.KW_EXISTS:
                            case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                            case HiveSqlParser.KW_EXPLAIN:
                            case HiveSqlParser.KW_EXPORT:
                            case HiveSqlParser.KW_EXPRESSION:
                            case HiveSqlParser.KW_EXTRACT:
                            case HiveSqlParser.KW_FALSE:
                            case HiveSqlParser.KW_FIELDS:
                            case HiveSqlParser.KW_FILE:
                            case HiveSqlParser.KW_FILEFORMAT:
                            case HiveSqlParser.KW_FIRST:
                            case HiveSqlParser.KW_FLOAT:
                            case HiveSqlParser.KW_FLOOR:
                            case HiveSqlParser.KW_FORMAT:
                            case HiveSqlParser.KW_FORMATTED:
                            case HiveSqlParser.KW_FROM:
                            case HiveSqlParser.KW_FUNCTIONS:
                            case HiveSqlParser.KW_GROUPING:
                            case HiveSqlParser.KW_HOLD_DDLTIME:
                            case HiveSqlParser.KW_HOUR:
                            case HiveSqlParser.KW_HOURS:
                            case HiveSqlParser.KW_IDXPROPERTIES:
                            case HiveSqlParser.KW_IF:
                            case HiveSqlParser.KW_IGNORE:
                            case HiveSqlParser.KW_IN:
                            case HiveSqlParser.KW_INDEX:
                            case HiveSqlParser.KW_INDEXES:
                            case HiveSqlParser.KW_INPATH:
                            case HiveSqlParser.KW_INPUTDRIVER:
                            case HiveSqlParser.KW_INPUTFORMAT:
                            case HiveSqlParser.KW_INT:
                            case HiveSqlParser.KW_INTEGER:
                            case HiveSqlParser.KW_INTERVAL:
                            case HiveSqlParser.KW_ISOLATION:
                            case HiveSqlParser.KW_ITEMS:
                            case HiveSqlParser.KW_JAR:
                            case HiveSqlParser.KW_JOINCOST:
                            case HiveSqlParser.KW_KEY:
                            case HiveSqlParser.KW_KEYS:
                            case HiveSqlParser.KW_KEY_TYPE:
                            case HiveSqlParser.KW_KILL:
                            case HiveSqlParser.KW_LAST:
                            case HiveSqlParser.KW_LEVEL:
                            case HiveSqlParser.KW_LIFECYCLE:
                            case HiveSqlParser.KW_LIKE:
                            case HiveSqlParser.KW_LIMIT:
                            case HiveSqlParser.KW_LINES:
                            case HiveSqlParser.KW_LOAD:
                            case HiveSqlParser.KW_LOCATION:
                            case HiveSqlParser.KW_LOCK:
                            case HiveSqlParser.KW_LOCKS:
                            case HiveSqlParser.KW_LOGICAL:
                            case HiveSqlParser.KW_LONG:
                            case HiveSqlParser.KW_MANAGED:
                            case HiveSqlParser.KW_MANAGEDLOCATION:
                            case HiveSqlParser.KW_MANAGEMENT:
                            case HiveSqlParser.KW_MAP:
                            case HiveSqlParser.KW_MAPJOIN:
                            case HiveSqlParser.KW_MAPPING:
                            case HiveSqlParser.KW_MATCHED:
                            case HiveSqlParser.KW_MATERIALIZED:
                            case HiveSqlParser.KW_METADATA:
                            case HiveSqlParser.KW_MINUTE:
                            case HiveSqlParser.KW_MINUTES:
                            case HiveSqlParser.KW_MONTH:
                            case HiveSqlParser.KW_MONTHS:
                            case HiveSqlParser.KW_MOVE:
                            case HiveSqlParser.KW_MSCK:
                            case HiveSqlParser.KW_NORELY:
                            case HiveSqlParser.KW_NOSCAN:
                            case HiveSqlParser.KW_NOT:
                            case HiveSqlParser.KW_NOVALIDATE:
                            case HiveSqlParser.KW_NO_DROP:
                            case HiveSqlParser.KW_NULL:
                            case HiveSqlParser.KW_NULLS:
                            case HiveSqlParser.KW_OFFLINE:
                            case HiveSqlParser.KW_OFFSET:
                            case HiveSqlParser.KW_OPERATOR:
                            case HiveSqlParser.KW_OPTION:
                            case HiveSqlParser.KW_OR:
                            case HiveSqlParser.KW_OUTPUTDRIVER:
                            case HiveSqlParser.KW_OUTPUTFORMAT:
                            case HiveSqlParser.KW_OVERWRITE:
                            case HiveSqlParser.KW_OWNER:
                            case HiveSqlParser.KW_PARTITIONED:
                            case HiveSqlParser.KW_PARTITIONS:
                            case HiveSqlParser.KW_PATH:
                            case HiveSqlParser.KW_PLAN:
                            case HiveSqlParser.KW_PLANS:
                            case HiveSqlParser.KW_PLUS:
                            case HiveSqlParser.KW_POOL:
                            case HiveSqlParser.KW_PRINCIPALS:
                            case HiveSqlParser.KW_PROTECTION:
                            case HiveSqlParser.KW_PURGE:
                            case HiveSqlParser.KW_QUARTER:
                            case HiveSqlParser.KW_QUERY:
                            case HiveSqlParser.KW_QUERY_PARALLELISM:
                            case HiveSqlParser.KW_READ:
                            case HiveSqlParser.KW_READONLY:
                            case HiveSqlParser.KW_REAL:
                            case HiveSqlParser.KW_REBUILD:
                            case HiveSqlParser.KW_RECORDREADER:
                            case HiveSqlParser.KW_RECORDWRITER:
                            case HiveSqlParser.KW_REGEXP:
                            case HiveSqlParser.KW_RELOAD:
                            case HiveSqlParser.KW_RELY:
                            case HiveSqlParser.KW_REMOTE:
                            case HiveSqlParser.KW_RENAME:
                            case HiveSqlParser.KW_REOPTIMIZATION:
                            case HiveSqlParser.KW_REPAIR:
                            case HiveSqlParser.KW_REPL:
                            case HiveSqlParser.KW_REPLACE:
                            case HiveSqlParser.KW_REPLICATION:
                            case HiveSqlParser.KW_RESOURCE:
                            case HiveSqlParser.KW_RESPECT:
                            case HiveSqlParser.KW_RESTRICT:
                            case HiveSqlParser.KW_REWRITE:
                            case HiveSqlParser.KW_RLIKE:
                            case HiveSqlParser.KW_ROLE:
                            case HiveSqlParser.KW_ROLES:
                            case HiveSqlParser.KW_SCHEDULED:
                            case HiveSqlParser.KW_SCHEDULING_POLICY:
                            case HiveSqlParser.KW_SCHEMA:
                            case HiveSqlParser.KW_SCHEMAS:
                            case HiveSqlParser.KW_SECOND:
                            case HiveSqlParser.KW_SECONDS:
                            case HiveSqlParser.KW_SEMI:
                            case HiveSqlParser.KW_SERDE:
                            case HiveSqlParser.KW_SERDEPROPERTIES:
                            case HiveSqlParser.KW_SERVER:
                            case HiveSqlParser.KW_SETS:
                            case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                            case HiveSqlParser.KW_SHARED:
                            case HiveSqlParser.KW_SHOW:
                            case HiveSqlParser.KW_SHOW_DATABASE:
                            case HiveSqlParser.KW_SKEWED:
                            case HiveSqlParser.KW_SMALLINT:
                            case HiveSqlParser.KW_SNAPSHOT:
                            case HiveSqlParser.KW_SORT:
                            case HiveSqlParser.KW_SORTED:
                            case HiveSqlParser.KW_SPEC:
                            case HiveSqlParser.KW_SSL:
                            case HiveSqlParser.KW_STATISTICS:
                            case HiveSqlParser.KW_STATUS:
                            case HiveSqlParser.KW_STORED:
                            case HiveSqlParser.KW_STREAMTABLE:
                            case HiveSqlParser.KW_STRING:
                            case HiveSqlParser.KW_STRUCT:
                            case HiveSqlParser.KW_SUMMARY:
                            case HiveSqlParser.KW_SYSTEM_TIME:
                            case HiveSqlParser.KW_SYSTEM_VERSION:
                            case HiveSqlParser.KW_TABLES:
                            case HiveSqlParser.KW_TBLPROPERTIES:
                            case HiveSqlParser.KW_TEMPORARY:
                            case HiveSqlParser.KW_TERMINATED:
                            case HiveSqlParser.KW_TIMESTAMP:
                            case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
                            case HiveSqlParser.KW_TIMESTAMPTZ:
                            case HiveSqlParser.KW_TINYINT:
                            case HiveSqlParser.KW_TOUCH:
                            case HiveSqlParser.KW_TRANSACTION:
                            case HiveSqlParser.KW_TRANSACTIONAL:
                            case HiveSqlParser.KW_TRANSACTIONS:
                            case HiveSqlParser.KW_TRIM:
                            case HiveSqlParser.KW_TRUE:
                            case HiveSqlParser.KW_TYPE:
                            case HiveSqlParser.KW_UNARCHIVE:
                            case HiveSqlParser.KW_UNDO:
                            case HiveSqlParser.KW_UNIONTYPE:
                            case HiveSqlParser.KW_UNKNOWN:
                            case HiveSqlParser.KW_UNLOCK:
                            case HiveSqlParser.KW_UNMANAGED:
                            case HiveSqlParser.KW_UNSET:
                            case HiveSqlParser.KW_UNSIGNED:
                            case HiveSqlParser.KW_URI:
                            case HiveSqlParser.KW_URL:
                            case HiveSqlParser.KW_USE:
                            case HiveSqlParser.KW_UTC:
                            case HiveSqlParser.KW_UTCTIMESTAMP:
                            case HiveSqlParser.KW_VALIDATE:
                            case HiveSqlParser.KW_VALUE_TYPE:
                            case HiveSqlParser.KW_VECTORIZATION:
                            case HiveSqlParser.KW_VIEW:
                            case HiveSqlParser.KW_VIEWS:
                            case HiveSqlParser.KW_WAIT:
                            case HiveSqlParser.KW_WEEK:
                            case HiveSqlParser.KW_WEEKS:
                            case HiveSqlParser.KW_WHEN:
                            case HiveSqlParser.KW_WHILE:
                            case HiveSqlParser.KW_WITHIN:
                            case HiveSqlParser.KW_WORK:
                            case HiveSqlParser.KW_WORKLOAD:
                            case HiveSqlParser.KW_WRITE:
                            case HiveSqlParser.KW_YEAR:
                            case HiveSqlParser.KW_YEARS:
                            case HiveSqlParser.KW_ZONE:
                            case HiveSqlParser.LPAREN:
                            case HiveSqlParser.EQUAL:
                            case HiveSqlParser.EQUAL_NS:
                            case HiveSqlParser.NOTEQUAL:
                            case HiveSqlParser.LESSTHANOREQUALTO:
                            case HiveSqlParser.LESSTHAN:
                            case HiveSqlParser.GREATERTHANOREQUALTO:
                            case HiveSqlParser.GREATERTHAN:
                            case HiveSqlParser.DIVIDE:
                            case HiveSqlParser.PLUS:
                            case HiveSqlParser.MINUS:
                            case HiveSqlParser.STAR:
                            case HiveSqlParser.MOD:
                            case HiveSqlParser.DIV:
                            case HiveSqlParser.BITWISENOT:
                            case HiveSqlParser.AMPERSAND:
                            case HiveSqlParser.TILDE:
                            case HiveSqlParser.BITWISEOR:
                            case HiveSqlParser.BITWISEXOR:
                            case HiveSqlParser.QUESTION:
                            case HiveSqlParser.StringLiteral:
                            case HiveSqlParser.IntegralLiteral:
                            case HiveSqlParser.NumberLiteral:
                            case HiveSqlParser.Number:
                            case HiveSqlParser.Identifier:
                            case HiveSqlParser.CharSetName:
                                break;
                            default:
                                break;
                        }
                        this.state = 4059;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) {
                            {
                                this.state = 4058;
                                localContext._trim_characters = this.selectExpression();
                            }
                        }
                        this.state = 4061;
                        this.match(HiveSqlParser.KW_FROM);
                        this.state = 4062;
                        localContext._str = this.selectExpression();
                        this.state = 4063;
                        this.match(HiveSqlParser.RPAREN);
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4065;
                        this.functionNameForInvoke();
                        this.state = 4066;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 4081;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 546, this.context)) {
                            case 1:
                                {
                                    this.state = 4067;
                                    localContext._star = this.match(HiveSqlParser.STAR);
                                }
                                break;
                            case 2:
                                {
                                    this.state = 4069;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 7 || _la === 96) {
                                        {
                                            this.state = 4068;
                                            localContext._dist = this.tokenStream.LT(1);
                                            _la = this.tokenStream.LA(1);
                                            if (!(_la === 7 || _la === 96)) {
                                                localContext._dist = this.errorHandler.recoverInline(this);
                                            }
                                            else {
                                                this.errorHandler.reportMatch(this);
                                                this.consume();
                                            }
                                        }
                                    }
                                    this.state = 4079;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context)) {
                                        case 1:
                                            {
                                                this.state = 4071;
                                                this.selectExpression();
                                                this.state = 4076;
                                                this.errorHandler.sync(this);
                                                _la = this.tokenStream.LA(1);
                                                while (_la === 397) {
                                                    {
                                                        {
                                                            this.state = 4072;
                                                            this.match(HiveSqlParser.COMMA);
                                                            this.state = 4073;
                                                            this.selectExpression();
                                                        }
                                                    }
                                                    this.state = 4078;
                                                    this.errorHandler.sync(this);
                                                    _la = this.tokenStream.LA(1);
                                                }
                                            }
                                            break;
                                    }
                                }
                                break;
                        }
                        this.state = 4102;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context)) {
                            case 1:
                                {
                                    this.state = 4083;
                                    this.match(HiveSqlParser.RPAREN);
                                    this.state = 4084;
                                    localContext._within = this.match(HiveSqlParser.KW_WITHIN);
                                    this.state = 4085;
                                    this.match(HiveSqlParser.KW_GROUP);
                                    this.state = 4086;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 4087;
                                    localContext._ordBy = this.orderByClause();
                                    this.state = 4088;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                            case 2:
                                {
                                    this.state = 4090;
                                    this.match(HiveSqlParser.RPAREN);
                                    this.state = 4092;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 152 || _la === 281) {
                                        {
                                            this.state = 4091;
                                            localContext._nt = this.null_treatment();
                                        }
                                    }
                                    this.state = 4094;
                                    this.match(HiveSqlParser.KW_OVER);
                                    this.state = 4095;
                                    localContext._ws = this.window_specification();
                                }
                                break;
                            case 3:
                                {
                                    this.state = 4096;
                                    localContext._nt = this.null_treatment();
                                    this.state = 4097;
                                    this.match(HiveSqlParser.RPAREN);
                                    this.state = 4098;
                                    this.match(HiveSqlParser.KW_OVER);
                                    this.state = 4099;
                                    localContext._ws = this.window_specification();
                                }
                                break;
                            case 4:
                                {
                                    this.state = 4101;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                        }
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    null_treatment() {
        let localContext = new Null_treatmentContext(this.context, this.state);
        this.enterRule(localContext, 556, HiveSqlParser.RULE_null_treatment);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4106;
                _la = this.tokenStream.LA(1);
                if (!(_la === 152 || _la === 281)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 4107;
                this.match(HiveSqlParser.KW_NULLS);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    functionNameCreate() {
        let localContext = new FunctionNameCreateContext(this.context, this.state);
        this.enterRule(localContext, 558, HiveSqlParser.RULE_functionNameCreate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4109;
                this.functionIdentifier();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    functionNameForDDL() {
        let localContext = new FunctionNameForDDLContext(this.context, this.state);
        this.enterRule(localContext, 560, HiveSqlParser.RULE_functionNameForDDL);
        try {
            this.state = 4113;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4111;
                        this.functionIdentifier();
                    }
                    break;
                case HiveSqlParser.StringLiteral:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4112;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    functionNameForInvoke() {
        let localContext = new FunctionNameForInvokeContext(this.context, this.state);
        this.enterRule(localContext, 562, HiveSqlParser.RULE_functionNameForInvoke);
        try {
            this.state = 4118;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4115;
                        this.functionIdentifier();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4116;
                        this.sql11ReservedKeywordsUsedAsFunctionName();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4117;
                        this.sysFuncNames();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    castExpression() {
        let localContext = new CastExpressionContext(this.context, this.state);
        this.enterRule(localContext, 564, HiveSqlParser.RULE_castExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4120;
                this.match(HiveSqlParser.KW_CAST);
                this.state = 4121;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4122;
                this.expression();
                this.state = 4123;
                this.match(HiveSqlParser.KW_AS);
                this.state = 4124;
                localContext._toType = this.primitiveType();
                this.state = 4127;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 137) {
                    {
                        this.state = 4125;
                        localContext._fmt = this.match(HiveSqlParser.KW_FORMAT);
                        this.state = 4126;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                }
                this.state = 4129;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    caseExpression() {
        let localContext = new CaseExpressionContext(this.context, this.state);
        this.enterRule(localContext, 566, HiveSqlParser.RULE_caseExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4131;
                this.match(HiveSqlParser.KW_CASE);
                this.state = 4132;
                this.expression();
                this.state = 4138;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                do {
                    {
                        {
                            this.state = 4133;
                            this.match(HiveSqlParser.KW_WHEN);
                            this.state = 4134;
                            this.expression();
                            this.state = 4135;
                            this.match(HiveSqlParser.KW_THEN);
                            this.state = 4136;
                            this.expression();
                        }
                    }
                    this.state = 4140;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                } while (_la === 383);
                this.state = 4144;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 105) {
                    {
                        this.state = 4142;
                        this.match(HiveSqlParser.KW_ELSE);
                        this.state = 4143;
                        this.expression();
                    }
                }
                this.state = 4146;
                this.match(HiveSqlParser.KW_END);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    whenExpression() {
        let localContext = new WhenExpressionContext(this.context, this.state);
        this.enterRule(localContext, 568, HiveSqlParser.RULE_whenExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4148;
                this.match(HiveSqlParser.KW_CASE);
                this.state = 4154;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                do {
                    {
                        {
                            this.state = 4149;
                            this.match(HiveSqlParser.KW_WHEN);
                            this.state = 4150;
                            this.expression();
                            this.state = 4151;
                            this.match(HiveSqlParser.KW_THEN);
                            this.state = 4152;
                            this.expression();
                        }
                    }
                    this.state = 4156;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                } while (_la === 383);
                this.state = 4160;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 105) {
                    {
                        this.state = 4158;
                        this.match(HiveSqlParser.KW_ELSE);
                        this.state = 4159;
                        this.expression();
                    }
                }
                this.state = 4162;
                this.match(HiveSqlParser.KW_END);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    floorExpression() {
        let localContext = new FloorExpressionContext(this.context, this.state);
        this.enterRule(localContext, 570, HiveSqlParser.RULE_floorExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4164;
                this.match(HiveSqlParser.KW_FLOOR);
                this.state = 4165;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4166;
                this.expression();
                this.state = 4169;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 341) {
                    {
                        this.state = 4167;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 4168;
                        localContext._floorUnit = this.timeQualifiers();
                    }
                }
                this.state = 4171;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    extractExpression() {
        let localContext = new ExtractExpressionContext(this.context, this.state);
        this.enterRule(localContext, 572, HiveSqlParser.RULE_extractExpression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4173;
                this.match(HiveSqlParser.KW_EXTRACT);
                this.state = 4174;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4175;
                localContext._timeUnit = this.timeQualifiers();
                this.state = 4176;
                this.match(HiveSqlParser.KW_FROM);
                this.state = 4177;
                this.expression();
                this.state = 4178;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    timeQualifiers() {
        let localContext = new TimeQualifiersContext(this.context, this.state);
        this.enterRule(localContext, 574, HiveSqlParser.RULE_timeQualifiers);
        try {
            this.state = 4188;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4180;
                        this.year();
                    }
                    break;
                case HiveSqlParser.KW_QUARTER:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4181;
                        this.match(HiveSqlParser.KW_QUARTER);
                    }
                    break;
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4182;
                        this.month();
                    }
                    break;
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4183;
                        this.week();
                    }
                    break;
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4184;
                        this.day();
                    }
                    break;
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 4185;
                        this.hour();
                    }
                    break;
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 4186;
                        this.minute();
                    }
                    break;
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 4187;
                        this.second();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    constant() {
        let localContext = new ConstantContext(this.context, this.state);
        this.enterRule(localContext, 576, HiveSqlParser.RULE_constant);
        let _la;
        try {
            this.state = 4218;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 560, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4190;
                        localContext._value = this.intervalValue();
                        this.state = 4191;
                        localContext._qualifiers = this.intervalQualifiers();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4193;
                        this.match(HiveSqlParser.Number);
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4194;
                        this.match(HiveSqlParser.KW_DATE);
                        this.state = 4195;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4196;
                        this.match(HiveSqlParser.KW_CURRENT_DATE);
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4197;
                        this.match(HiveSqlParser.KW_TIMESTAMP);
                        this.state = 4198;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 4199;
                        this.match(HiveSqlParser.KW_CURRENT_TIMESTAMP);
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 4200;
                        this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ);
                        this.state = 4201;
                        this.match(HiveSqlParser.StringLiteral);
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 4202;
                        this.match(HiveSqlParser.StringLiteral);
                        this.state = 4206;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        while (_la === 426) {
                            {
                                {
                                    this.state = 4203;
                                    this.match(HiveSqlParser.StringLiteral);
                                }
                            }
                            this.state = 4208;
                            this.errorHandler.sync(this);
                            _la = this.tokenStream.LA(1);
                        }
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 4209;
                        this.match(HiveSqlParser.IntegralLiteral);
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 4210;
                        this.match(HiveSqlParser.NumberLiteral);
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 4211;
                        localContext._csName = this.match(HiveSqlParser.CharSetName);
                        this.state = 4212;
                        localContext._csLiteral = this.match(HiveSqlParser.CharSetLiteral);
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 4213;
                        this.match(HiveSqlParser.KW_TRUE);
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 4214;
                        this.match(HiveSqlParser.KW_FALSE);
                    }
                    break;
                case 14:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 4215;
                        this.match(HiveSqlParser.KW_NULL);
                    }
                    break;
                case 15:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 4216;
                        localContext._p = this.match(HiveSqlParser.QUESTION);
                    }
                    break;
                case 16:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 4217;
                        this.columnNamePath();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    intervalValue() {
        let localContext = new IntervalValueContext(this.context, this.state);
        this.enterRule(localContext, 578, HiveSqlParser.RULE_intervalValue);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4220;
                _la = this.tokenStream.LA(1);
                if (!(_la === 426 || _la === 431)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    intervalExpression() {
        let localContext = new IntervalExpressionContext(this.context, this.state);
        this.enterRule(localContext, 580, HiveSqlParser.RULE_intervalExpression);
        try {
            this.state = 4237;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.LPAREN:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4222;
                        this.match(HiveSqlParser.LPAREN);
                        this.state = 4223;
                        localContext._value = this.intervalValue();
                        this.state = 4224;
                        this.match(HiveSqlParser.RPAREN);
                        this.state = 4225;
                        localContext._qualifiers = this.intervalQualifiers();
                    }
                    break;
                case HiveSqlParser.KW_INTERVAL:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4227;
                        this.match(HiveSqlParser.KW_INTERVAL);
                        this.state = 4233;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.StringLiteral:
                            case HiveSqlParser.Number:
                                {
                                    this.state = 4228;
                                    localContext._value = this.intervalValue();
                                }
                                break;
                            case HiveSqlParser.LPAREN:
                                {
                                    this.state = 4229;
                                    this.match(HiveSqlParser.LPAREN);
                                    this.state = 4230;
                                    localContext._expr = this.expression();
                                    this.state = 4231;
                                    this.match(HiveSqlParser.RPAREN);
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                        this.state = 4235;
                        localContext._qualifiers = this.intervalQualifiers();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    intervalQualifiers() {
        let localContext = new IntervalQualifiersContext(this.context, this.state);
        this.enterRule(localContext, 582, HiveSqlParser.RULE_intervalQualifiers);
        try {
            this.state = 4253;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 563, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4239;
                        this.year();
                        this.state = 4240;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 4241;
                        this.month();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4243;
                        this.day();
                        this.state = 4244;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 4245;
                        this.second();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4247;
                        this.year();
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4248;
                        this.month();
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4249;
                        this.day();
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 4250;
                        this.hour();
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 4251;
                        this.minute();
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 4252;
                        this.second();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    expression() {
        let localContext = new ExpressionContext(this.context, this.state);
        this.enterRule(localContext, 584, HiveSqlParser.RULE_expression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4255;
                this.precedenceAndExpression();
                this.state = 4260;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 228) {
                    {
                        {
                            this.state = 4256;
                            this.match(HiveSqlParser.KW_OR);
                            this.state = 4257;
                            this.precedenceAndExpression();
                        }
                    }
                    this.state = 4262;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    atomExpression() {
        let localContext = new AtomExpressionContext(this.context, this.state);
        this.enterRule(localContext, 586, HiveSqlParser.RULE_atomExpression);
        try {
            this.state = 4274;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 565, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4263;
                        this.constant();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4264;
                        this.intervalExpression();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4265;
                        this.castExpression();
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4266;
                        this.extractExpression();
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4267;
                        this.floorExpression();
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 4268;
                        this.caseExpression();
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 4269;
                        this.whenExpression();
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 4270;
                        this.subQueryExpression();
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 4271;
                        this.function_();
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 4272;
                        this.expressionsInParenthesis();
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 4273;
                        this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceUnaryPrefixExpression() {
        let localContext = new PrecedenceUnaryPrefixExpressionContext(this.context, this.state);
        this.enterRule(localContext, 588, HiveSqlParser.RULE_precedenceUnaryPrefixExpression);
        let _la;
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4279;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 566, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                            {
                                this.state = 4276;
                                _la = this.tokenStream.LA(1);
                                if (!(((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 163) !== 0))) {
                                    this.errorHandler.recoverInline(this);
                                }
                                else {
                                    this.errorHandler.reportMatch(this);
                                    this.consume();
                                }
                            }
                        }
                    }
                    this.state = 4281;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 566, this.context);
                }
                this.state = 4282;
                this.atomExpression();
                this.state = 4291;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 395 || _la === 401) {
                    {
                        this.state = 4289;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.LSQUARE:
                                {
                                    this.state = 4283;
                                    this.match(HiveSqlParser.LSQUARE);
                                    this.state = 4284;
                                    this.expression();
                                    this.state = 4285;
                                    this.match(HiveSqlParser.RSQUARE);
                                }
                                break;
                            case HiveSqlParser.DOT:
                                {
                                    this.state = 4287;
                                    this.match(HiveSqlParser.DOT);
                                    this.state = 4288;
                                    this.id_();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    this.state = 4293;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceBitwiseXorExpression() {
        let localContext = new PrecedenceBitwiseXorExpressionContext(this.context, this.state);
        this.enterRule(localContext, 590, HiveSqlParser.RULE_precedenceBitwiseXorExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4294;
                this.precedenceUnaryPrefixExpression();
                this.state = 4299;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 423) {
                    {
                        {
                            this.state = 4295;
                            this.match(HiveSqlParser.BITWISEXOR);
                            this.state = 4296;
                            this.precedenceUnaryPrefixExpression();
                        }
                    }
                    this.state = 4301;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceStarExpression() {
        let localContext = new PrecedenceStarExpressionContext(this.context, this.state);
        this.enterRule(localContext, 592, HiveSqlParser.RULE_precedenceStarExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4302;
                this.precedenceBitwiseXorExpression();
                this.state = 4307;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0)) {
                    {
                        {
                            this.state = 4303;
                            _la = this.tokenStream.LA(1);
                            if (!(((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0))) {
                                this.errorHandler.recoverInline(this);
                            }
                            else {
                                this.errorHandler.reportMatch(this);
                                this.consume();
                            }
                            this.state = 4304;
                            this.precedenceBitwiseXorExpression();
                        }
                    }
                    this.state = 4309;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedencePlusExpression() {
        let localContext = new PrecedencePlusExpressionContext(this.context, this.state);
        this.enterRule(localContext, 594, HiveSqlParser.RULE_precedencePlusExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4310;
                this.precedenceStarExpression();
                this.state = 4315;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 413 || _la === 414) {
                    {
                        {
                            this.state = 4311;
                            _la = this.tokenStream.LA(1);
                            if (!(_la === 413 || _la === 414)) {
                                this.errorHandler.recoverInline(this);
                            }
                            else {
                                this.errorHandler.reportMatch(this);
                                this.consume();
                            }
                            this.state = 4312;
                            this.precedenceStarExpression();
                        }
                    }
                    this.state = 4317;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceConcatenateExpression() {
        let localContext = new PrecedenceConcatenateExpressionContext(this.context, this.state);
        this.enterRule(localContext, 596, HiveSqlParser.RULE_precedenceConcatenateExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4318;
                this.precedencePlusExpression();
                this.state = 4323;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 422) {
                    {
                        {
                            this.state = 4319;
                            this.match(HiveSqlParser.CONCATENATE);
                            this.state = 4320;
                            localContext._plus = this.precedencePlusExpression();
                        }
                    }
                    this.state = 4325;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceAmpersandExpression() {
        let localContext = new PrecedenceAmpersandExpressionContext(this.context, this.state);
        this.enterRule(localContext, 598, HiveSqlParser.RULE_precedenceAmpersandExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4326;
                this.precedenceConcatenateExpression();
                this.state = 4331;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 419) {
                    {
                        {
                            this.state = 4327;
                            this.match(HiveSqlParser.AMPERSAND);
                            this.state = 4328;
                            this.precedenceConcatenateExpression();
                        }
                    }
                    this.state = 4333;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceBitwiseOrExpression() {
        let localContext = new PrecedenceBitwiseOrExpressionContext(this.context, this.state);
        this.enterRule(localContext, 600, HiveSqlParser.RULE_precedenceBitwiseOrExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4334;
                this.precedenceAmpersandExpression();
                this.state = 4339;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 421) {
                    {
                        {
                            this.state = 4335;
                            this.match(HiveSqlParser.BITWISEOR);
                            this.state = 4336;
                            this.precedenceAmpersandExpression();
                        }
                    }
                    this.state = 4341;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceSimilarOperator() {
        let localContext = new PrecedenceSimilarOperatorContext(this.context, this.state);
        this.enterRule(localContext, 602, HiveSqlParser.RULE_precedenceSimilarOperator);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4342;
                _la = this.tokenStream.LA(1);
                if (!(_la === 184 || _la === 270 || _la === 286 || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 15) !== 0))) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    subQueryExpression() {
        let localContext = new SubQueryExpressionContext(this.context, this.state);
        this.enterRule(localContext, 604, HiveSqlParser.RULE_subQueryExpression);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4344;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4345;
                this.selectStatement();
                this.state = 4346;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceSimilarExpression() {
        let localContext = new PrecedenceSimilarExpressionContext(this.context, this.state);
        this.enterRule(localContext, 606, HiveSqlParser.RULE_precedenceSimilarExpression);
        try {
            this.state = 4354;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_AND:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ARRAY:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BETWEEN:
                case HiveSqlParser.KW_BIGINT:
                case HiveSqlParser.KW_BINARY:
                case HiveSqlParser.KW_BOOLEAN:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CASE:
                case HiveSqlParser.KW_CAST:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_CURRENT_DATE:
                case HiveSqlParser.KW_CURRENT_TIMESTAMP:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATE:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DOUBLE:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_EXTRACT:
                case HiveSqlParser.KW_FALSE:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FLOAT:
                case HiveSqlParser.KW_FLOOR:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_GROUPING:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IF:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_IN:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_INT:
                case HiveSqlParser.KW_INTEGER:
                case HiveSqlParser.KW_INTERVAL:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIKE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAP:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOT:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULL:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OR:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REAL:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_REGEXP:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_RLIKE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SMALLINT:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMP:
                case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TRUE:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHEN:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.LPAREN:
                case HiveSqlParser.EQUAL:
                case HiveSqlParser.EQUAL_NS:
                case HiveSqlParser.NOTEQUAL:
                case HiveSqlParser.LESSTHANOREQUALTO:
                case HiveSqlParser.LESSTHAN:
                case HiveSqlParser.GREATERTHANOREQUALTO:
                case HiveSqlParser.GREATERTHAN:
                case HiveSqlParser.DIVIDE:
                case HiveSqlParser.PLUS:
                case HiveSqlParser.MINUS:
                case HiveSqlParser.STAR:
                case HiveSqlParser.MOD:
                case HiveSqlParser.DIV:
                case HiveSqlParser.BITWISENOT:
                case HiveSqlParser.AMPERSAND:
                case HiveSqlParser.TILDE:
                case HiveSqlParser.BITWISEOR:
                case HiveSqlParser.BITWISEXOR:
                case HiveSqlParser.QUESTION:
                case HiveSqlParser.StringLiteral:
                case HiveSqlParser.IntegralLiteral:
                case HiveSqlParser.NumberLiteral:
                case HiveSqlParser.Number:
                case HiveSqlParser.Identifier:
                case HiveSqlParser.CharSetName:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4348;
                        localContext._a = this.precedenceBitwiseOrExpression();
                        this.state = 4350;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 575, this.context)) {
                            case 1:
                                {
                                    this.state = 4349;
                                    localContext._part = this.precedenceSimilarExpressionPart();
                                }
                                break;
                        }
                    }
                    break;
                case HiveSqlParser.KW_EXISTS:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4352;
                        this.match(HiveSqlParser.KW_EXISTS);
                        this.state = 4353;
                        this.subQueryExpression();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceSimilarExpressionPart() {
        let localContext = new PrecedenceSimilarExpressionPartContext(this.context, this.state);
        this.enterRule(localContext, 608, HiveSqlParser.RULE_precedenceSimilarExpressionPart);
        try {
            this.state = 4362;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 577, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4356;
                        this.precedenceSimilarOperator();
                        this.state = 4357;
                        localContext._equalExpr = this.precedenceBitwiseOrExpression();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4359;
                        this.precedenceSimilarExpressionAtom();
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4360;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 4361;
                        this.precedenceSimilarExpressionPartNot();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceSimilarExpressionAtom() {
        let localContext = new PrecedenceSimilarExpressionAtomContext(this.context, this.state);
        this.enterRule(localContext, 610, HiveSqlParser.RULE_precedenceSimilarExpressionAtom);
        let _la;
        try {
            this.state = 4378;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_IN:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4364;
                        this.match(HiveSqlParser.KW_IN);
                        this.state = 4365;
                        this.precedenceSimilarExpressionIn();
                    }
                    break;
                case HiveSqlParser.KW_BETWEEN:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4366;
                        this.match(HiveSqlParser.KW_BETWEEN);
                        this.state = 4367;
                        localContext._min = this.precedenceBitwiseOrExpression();
                        this.state = 4368;
                        this.match(HiveSqlParser.KW_AND);
                        this.state = 4369;
                        localContext._max = this.precedenceBitwiseOrExpression();
                    }
                    break;
                case HiveSqlParser.KW_LIKE:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4371;
                        this.match(HiveSqlParser.KW_LIKE);
                        this.state = 4372;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 7 || _la === 13)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 4373;
                        localContext._expr = this.expressionsInParenthesis();
                    }
                    break;
                case HiveSqlParser.EQUAL:
                case HiveSqlParser.NOTEQUAL:
                case HiveSqlParser.LESSTHANOREQUALTO:
                case HiveSqlParser.LESSTHAN:
                case HiveSqlParser.GREATERTHANOREQUALTO:
                case HiveSqlParser.GREATERTHAN:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4374;
                        this.subQuerySelectorOperator();
                        this.state = 4375;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 7 || _la === 13 || _la === 313)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 4376;
                        this.subQueryExpression();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceSimilarExpressionIn() {
        let localContext = new PrecedenceSimilarExpressionInContext(this.context, this.state);
        this.enterRule(localContext, 612, HiveSqlParser.RULE_precedenceSimilarExpressionIn);
        try {
            this.state = 4382;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4380;
                        this.subQueryExpression();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4381;
                        localContext._expr = this.expressionsInParenthesis();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceSimilarExpressionPartNot() {
        let localContext = new PrecedenceSimilarExpressionPartNotContext(this.context, this.state);
        this.enterRule(localContext, 614, HiveSqlParser.RULE_precedenceSimilarExpressionPartNot);
        let _la;
        try {
            this.state = 4387;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 580, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4384;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 184 || _la === 270 || _la === 286)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 4385;
                        localContext._notExpr = this.precedenceBitwiseOrExpression();
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4386;
                        this.precedenceSimilarExpressionAtom();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceDistinctOperator() {
        let localContext = new PrecedenceDistinctOperatorContext(this.context, this.state);
        this.enterRule(localContext, 616, HiveSqlParser.RULE_precedenceDistinctOperator);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4389;
                this.match(HiveSqlParser.KW_IS);
                this.state = 4390;
                this.match(HiveSqlParser.KW_DISTINCT);
                this.state = 4391;
                this.match(HiveSqlParser.KW_FROM);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceEqualOperator() {
        let localContext = new PrecedenceEqualOperatorContext(this.context, this.state);
        this.enterRule(localContext, 618, HiveSqlParser.RULE_precedenceEqualOperator);
        try {
            this.state = 4400;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.EQUAL:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4393;
                        this.match(HiveSqlParser.EQUAL);
                    }
                    break;
                case HiveSqlParser.EQUAL_NS:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4394;
                        this.match(HiveSqlParser.EQUAL_NS);
                    }
                    break;
                case HiveSqlParser.NOTEQUAL:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4395;
                        this.match(HiveSqlParser.NOTEQUAL);
                    }
                    break;
                case HiveSqlParser.KW_IS:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4396;
                        this.match(HiveSqlParser.KW_IS);
                        this.state = 4397;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 4398;
                        this.match(HiveSqlParser.KW_DISTINCT);
                        this.state = 4399;
                        this.match(HiveSqlParser.KW_FROM);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceEqualExpression() {
        let localContext = new PrecedenceEqualExpressionContext(this.context, this.state);
        this.enterRule(localContext, 620, HiveSqlParser.RULE_precedenceEqualExpression);
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4402;
                this.precedenceSimilarExpression();
                this.state = 4411;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 583, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                            this.state = 4409;
                            this.errorHandler.sync(this);
                            switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context)) {
                                case 1:
                                    {
                                        this.state = 4403;
                                        localContext._precedenceEqualOperator = this.precedenceEqualOperator();
                                        localContext._equal.push(localContext._precedenceEqualOperator);
                                        this.state = 4404;
                                        localContext._precedenceSimilarExpression = this.precedenceSimilarExpression();
                                        localContext._p.push(localContext._precedenceSimilarExpression);
                                    }
                                    break;
                                case 2:
                                    {
                                        this.state = 4406;
                                        localContext._precedenceDistinctOperator = this.precedenceDistinctOperator();
                                        localContext._dist.push(localContext._precedenceDistinctOperator);
                                        this.state = 4407;
                                        localContext._precedenceSimilarExpression = this.precedenceSimilarExpression();
                                        localContext._p.push(localContext._precedenceSimilarExpression);
                                    }
                                    break;
                            }
                        }
                    }
                    this.state = 4413;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 583, this.context);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    isCondition() {
        let localContext = new IsConditionContext(this.context, this.state);
        this.enterRule(localContext, 622, HiveSqlParser.RULE_isCondition);
        let _la;
        try {
            this.state = 4420;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_NULL:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4414;
                        this.match(HiveSqlParser.KW_NULL);
                    }
                    break;
                case HiveSqlParser.KW_TRUE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4415;
                        this.match(HiveSqlParser.KW_TRUE);
                    }
                    break;
                case HiveSqlParser.KW_FALSE:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4416;
                        this.match(HiveSqlParser.KW_FALSE);
                    }
                    break;
                case HiveSqlParser.KW_UNKNOWN:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4417;
                        this.match(HiveSqlParser.KW_UNKNOWN);
                    }
                    break;
                case HiveSqlParser.KW_NOT:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4418;
                        this.match(HiveSqlParser.KW_NOT);
                        this.state = 4419;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 125 || _la === 219 || _la === 350 || _la === 360)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceNotExpression() {
        let localContext = new PrecedenceNotExpressionContext(this.context, this.state);
        this.enterRule(localContext, 624, HiveSqlParser.RULE_precedenceNotExpression);
        let _la;
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4425;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 585, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                            {
                                this.state = 4422;
                                this.match(HiveSqlParser.KW_NOT);
                            }
                        }
                    }
                    this.state = 4427;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 585, this.context);
                }
                this.state = 4428;
                this.precedenceEqualExpression();
                this.state = 4431;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 167) {
                    {
                        this.state = 4429;
                        localContext._a = this.match(HiveSqlParser.KW_IS);
                        this.state = 4430;
                        this.isCondition();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    precedenceAndExpression() {
        let localContext = new PrecedenceAndExpressionContext(this.context, this.state);
        this.enterRule(localContext, 626, HiveSqlParser.RULE_precedenceAndExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4433;
                this.precedenceNotExpression();
                this.state = 4438;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 11) {
                    {
                        {
                            this.state = 4434;
                            this.match(HiveSqlParser.KW_AND);
                            this.state = 4435;
                            this.precedenceNotExpression();
                        }
                    }
                    this.state = 4440;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    tableOrPartition() {
        let localContext = new TableOrPartitionContext(this.context, this.state);
        this.enterRule(localContext, 628, HiveSqlParser.RULE_tableOrPartition);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4441;
                this.tableName();
                this.state = 4443;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 237) {
                    {
                        this.state = 4442;
                        this.partitionSpec();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionSpec() {
        let localContext = new PartitionSpecContext(this.context, this.state);
        this.enterRule(localContext, 630, HiveSqlParser.RULE_partitionSpec);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4445;
                this.match(HiveSqlParser.KW_PARTITION);
                this.state = 4446;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4447;
                this.partitionVal();
                this.state = 4452;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 4448;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4449;
                            this.partitionVal();
                        }
                    }
                    this.state = 4454;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 4455;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionVal() {
        let localContext = new PartitionValContext(this.context, this.state);
        this.enterRule(localContext, 632, HiveSqlParser.RULE_partitionVal);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4457;
                this.id_();
                this.state = 4460;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 405) {
                    {
                        this.state = 4458;
                        this.match(HiveSqlParser.EQUAL);
                        this.state = 4459;
                        this.constant();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionSelectorSpec() {
        let localContext = new PartitionSelectorSpecContext(this.context, this.state);
        this.enterRule(localContext, 634, HiveSqlParser.RULE_partitionSelectorSpec);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4462;
                this.match(HiveSqlParser.LPAREN);
                this.state = 4463;
                this.partitionSelectorVal();
                this.state = 4468;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 4464;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4465;
                            this.partitionSelectorVal();
                        }
                    }
                    this.state = 4470;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
                this.state = 4471;
                this.match(HiveSqlParser.RPAREN);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    partitionSelectorVal() {
        let localContext = new PartitionSelectorValContext(this.context, this.state);
        this.enterRule(localContext, 636, HiveSqlParser.RULE_partitionSelectorVal);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4473;
                this.id_();
                this.state = 4476;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_LIKE:
                        {
                            this.state = 4474;
                            this.match(HiveSqlParser.KW_LIKE);
                        }
                        break;
                    case HiveSqlParser.EQUAL:
                    case HiveSqlParser.NOTEQUAL:
                    case HiveSqlParser.LESSTHANOREQUALTO:
                    case HiveSqlParser.LESSTHAN:
                    case HiveSqlParser.GREATERTHANOREQUALTO:
                    case HiveSqlParser.GREATERTHAN:
                        {
                            this.state = 4475;
                            this.subQuerySelectorOperator();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
                this.state = 4478;
                this.constant();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    subQuerySelectorOperator() {
        let localContext = new SubQuerySelectorOperatorContext(this.context, this.state);
        this.enterRule(localContext, 638, HiveSqlParser.RULE_subQuerySelectorOperator);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4480;
                _la = this.tokenStream.LA(1);
                if (!(((((_la - 405)) & ~0x1F) === 0 && ((1 << (_la - 405)) & 125) !== 0))) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    sysFuncNames() {
        let localContext = new SysFuncNamesContext(this.context, this.state);
        this.enterRule(localContext, 640, HiveSqlParser.RULE_sysFuncNames);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4482;
                _la = this.tokenStream.LA(1);
                if (!(((((_la - 11)) & ~0x1F) === 0 && ((1 << (_la - 11)) & 17023009) !== 0) || _la === 100 || _la === 131 || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & 3225944065) !== 0) || _la === 184 || _la === 198 || _la === 216 || _la === 228 || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & 4194369) !== 0) || ((((_la - 311)) & ~0x1F) === 0 && ((1 << (_la - 311)) & 536883201) !== 0) || _la === 357 || _la === 383 || ((((_la - 405)) & ~0x1F) === 0 && ((1 << (_la - 405)) & 385023) !== 0))) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    id_() {
        let localContext = new Id_Context(this.context, this.state);
        this.enterRule(localContext, 642, HiveSqlParser.RULE_id_);
        try {
            this.state = 4486;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4484;
                        this.match(HiveSqlParser.Identifier);
                    }
                    break;
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4485;
                        this.nonReserved();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    functionIdentifier() {
        let localContext = new FunctionIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 644, HiveSqlParser.RULE_functionIdentifier);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4488;
                this.id_();
                this.state = 4491;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                if (_la === 395) {
                    {
                        this.state = 4489;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4490;
                        localContext._fn = this.id_();
                    }
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    principalIdentifier() {
        let localContext = new PrincipalIdentifierContext(this.context, this.state);
        this.enterRule(localContext, 646, HiveSqlParser.RULE_principalIdentifier);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4493;
                this.id_();
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    nonReserved() {
        let localContext = new NonReservedContext(this.context, this.state);
        this.enterRule(localContext, 648, HiveSqlParser.RULE_nonReserved);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4495;
                _la = this.tokenStream.LA(1);
                if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    sql11ReservedKeywordsUsedAsFunctionName() {
        let localContext = new Sql11ReservedKeywordsUsedAsFunctionNameContext(this.context, this.state);
        this.enterRule(localContext, 650, HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4497;
                _la = this.tokenStream.LA(1);
                if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 469827584) !== 0) || ((((_la - 63)) & ~0x1F) === 0 && ((1 << (_la - 63)) & 259) !== 0) || _la === 100 || _la === 131 || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 393281) !== 0) || _la === 198 || _la === 264 || _la === 311 || _la === 337)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    configPropertiesItem() {
        let localContext = new ConfigPropertiesItemContext(this.context, this.state);
        this.enterRule(localContext, 652, HiveSqlParser.RULE_configPropertiesItem);
        try {
            this.state = 4550;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_ABORT:
                case HiveSqlParser.KW_ACTIVATE:
                case HiveSqlParser.KW_ACTIVE:
                case HiveSqlParser.KW_ADD:
                case HiveSqlParser.KW_ADMIN:
                case HiveSqlParser.KW_AFTER:
                case HiveSqlParser.KW_ALLOC_FRACTION:
                case HiveSqlParser.KW_ANALYZE:
                case HiveSqlParser.KW_ARCHIVE:
                case HiveSqlParser.KW_ASC:
                case HiveSqlParser.KW_AST:
                case HiveSqlParser.KW_AT:
                case HiveSqlParser.KW_AUTOCOMMIT:
                case HiveSqlParser.KW_BATCH:
                case HiveSqlParser.KW_BEFORE:
                case HiveSqlParser.KW_BUCKET:
                case HiveSqlParser.KW_BUCKETS:
                case HiveSqlParser.KW_CACHE:
                case HiveSqlParser.KW_CASCADE:
                case HiveSqlParser.KW_CBO:
                case HiveSqlParser.KW_CHANGE:
                case HiveSqlParser.KW_CHECK:
                case HiveSqlParser.KW_CLUSTER:
                case HiveSqlParser.KW_CLUSTERED:
                case HiveSqlParser.KW_CLUSTERSTATUS:
                case HiveSqlParser.KW_COLLECTION:
                case HiveSqlParser.KW_COLUMNS:
                case HiveSqlParser.KW_COMMENT:
                case HiveSqlParser.KW_COMPACT:
                case HiveSqlParser.KW_COMPACTIONS:
                case HiveSqlParser.KW_COMPUTE:
                case HiveSqlParser.KW_CONCATENATE:
                case HiveSqlParser.KW_CONTINUE:
                case HiveSqlParser.KW_COST:
                case HiveSqlParser.KW_CRON:
                case HiveSqlParser.KW_DATA:
                case HiveSqlParser.KW_DATABASES:
                case HiveSqlParser.KW_DATETIME:
                case HiveSqlParser.KW_DAY:
                case HiveSqlParser.KW_DAYS:
                case HiveSqlParser.KW_DAYOFWEEK:
                case HiveSqlParser.KW_DBPROPERTIES:
                case HiveSqlParser.KW_DCPROPERTIES:
                case HiveSqlParser.KW_DEBUG:
                case HiveSqlParser.KW_DEFAULT:
                case HiveSqlParser.KW_DEFERRED:
                case HiveSqlParser.KW_DEFINED:
                case HiveSqlParser.KW_DELIMITED:
                case HiveSqlParser.KW_DEPENDENCY:
                case HiveSqlParser.KW_DESC:
                case HiveSqlParser.KW_DETAIL:
                case HiveSqlParser.KW_DIRECTORIES:
                case HiveSqlParser.KW_DIRECTORY:
                case HiveSqlParser.KW_DISABLE:
                case HiveSqlParser.KW_DISABLED:
                case HiveSqlParser.KW_DISTRIBUTE:
                case HiveSqlParser.KW_DISTRIBUTED:
                case HiveSqlParser.KW_DO:
                case HiveSqlParser.KW_DUMP:
                case HiveSqlParser.KW_ELEM_TYPE:
                case HiveSqlParser.KW_ENABLE:
                case HiveSqlParser.KW_ENABLED:
                case HiveSqlParser.KW_ENFORCED:
                case HiveSqlParser.KW_ESCAPED:
                case HiveSqlParser.KW_EVERY:
                case HiveSqlParser.KW_EXCLUSIVE:
                case HiveSqlParser.KW_EXECUTE:
                case HiveSqlParser.KW_EXECUTED:
                case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
                case HiveSqlParser.KW_EXPLAIN:
                case HiveSqlParser.KW_EXPORT:
                case HiveSqlParser.KW_EXPRESSION:
                case HiveSqlParser.KW_FIELDS:
                case HiveSqlParser.KW_FILE:
                case HiveSqlParser.KW_FILEFORMAT:
                case HiveSqlParser.KW_FIRST:
                case HiveSqlParser.KW_FORMAT:
                case HiveSqlParser.KW_FORMATTED:
                case HiveSqlParser.KW_FUNCTIONS:
                case HiveSqlParser.KW_HOLD_DDLTIME:
                case HiveSqlParser.KW_HOUR:
                case HiveSqlParser.KW_HOURS:
                case HiveSqlParser.KW_IDXPROPERTIES:
                case HiveSqlParser.KW_IGNORE:
                case HiveSqlParser.KW_INDEX:
                case HiveSqlParser.KW_INDEXES:
                case HiveSqlParser.KW_INPATH:
                case HiveSqlParser.KW_INPUTDRIVER:
                case HiveSqlParser.KW_INPUTFORMAT:
                case HiveSqlParser.KW_ISOLATION:
                case HiveSqlParser.KW_ITEMS:
                case HiveSqlParser.KW_JAR:
                case HiveSqlParser.KW_JOINCOST:
                case HiveSqlParser.KW_KEY:
                case HiveSqlParser.KW_KEYS:
                case HiveSqlParser.KW_KEY_TYPE:
                case HiveSqlParser.KW_KILL:
                case HiveSqlParser.KW_LAST:
                case HiveSqlParser.KW_LEVEL:
                case HiveSqlParser.KW_LIFECYCLE:
                case HiveSqlParser.KW_LIMIT:
                case HiveSqlParser.KW_LINES:
                case HiveSqlParser.KW_LOAD:
                case HiveSqlParser.KW_LOCATION:
                case HiveSqlParser.KW_LOCK:
                case HiveSqlParser.KW_LOCKS:
                case HiveSqlParser.KW_LOGICAL:
                case HiveSqlParser.KW_LONG:
                case HiveSqlParser.KW_MANAGED:
                case HiveSqlParser.KW_MANAGEDLOCATION:
                case HiveSqlParser.KW_MANAGEMENT:
                case HiveSqlParser.KW_MAPJOIN:
                case HiveSqlParser.KW_MAPPING:
                case HiveSqlParser.KW_MATCHED:
                case HiveSqlParser.KW_MATERIALIZED:
                case HiveSqlParser.KW_METADATA:
                case HiveSqlParser.KW_MINUTE:
                case HiveSqlParser.KW_MINUTES:
                case HiveSqlParser.KW_MONTH:
                case HiveSqlParser.KW_MONTHS:
                case HiveSqlParser.KW_MOVE:
                case HiveSqlParser.KW_MSCK:
                case HiveSqlParser.KW_NORELY:
                case HiveSqlParser.KW_NOSCAN:
                case HiveSqlParser.KW_NOVALIDATE:
                case HiveSqlParser.KW_NO_DROP:
                case HiveSqlParser.KW_NULLS:
                case HiveSqlParser.KW_OFFLINE:
                case HiveSqlParser.KW_OFFSET:
                case HiveSqlParser.KW_OPERATOR:
                case HiveSqlParser.KW_OPTION:
                case HiveSqlParser.KW_OUTPUTDRIVER:
                case HiveSqlParser.KW_OUTPUTFORMAT:
                case HiveSqlParser.KW_OVERWRITE:
                case HiveSqlParser.KW_OWNER:
                case HiveSqlParser.KW_PARTITIONED:
                case HiveSqlParser.KW_PARTITIONS:
                case HiveSqlParser.KW_PATH:
                case HiveSqlParser.KW_PLAN:
                case HiveSqlParser.KW_PLANS:
                case HiveSqlParser.KW_PLUS:
                case HiveSqlParser.KW_POOL:
                case HiveSqlParser.KW_PRINCIPALS:
                case HiveSqlParser.KW_PROTECTION:
                case HiveSqlParser.KW_PURGE:
                case HiveSqlParser.KW_QUARTER:
                case HiveSqlParser.KW_QUERY:
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                case HiveSqlParser.KW_READ:
                case HiveSqlParser.KW_READONLY:
                case HiveSqlParser.KW_REBUILD:
                case HiveSqlParser.KW_RECORDREADER:
                case HiveSqlParser.KW_RECORDWRITER:
                case HiveSqlParser.KW_RELOAD:
                case HiveSqlParser.KW_RELY:
                case HiveSqlParser.KW_REMOTE:
                case HiveSqlParser.KW_RENAME:
                case HiveSqlParser.KW_REOPTIMIZATION:
                case HiveSqlParser.KW_REPAIR:
                case HiveSqlParser.KW_REPL:
                case HiveSqlParser.KW_REPLACE:
                case HiveSqlParser.KW_REPLICATION:
                case HiveSqlParser.KW_RESOURCE:
                case HiveSqlParser.KW_RESPECT:
                case HiveSqlParser.KW_RESTRICT:
                case HiveSqlParser.KW_REWRITE:
                case HiveSqlParser.KW_ROLE:
                case HiveSqlParser.KW_ROLES:
                case HiveSqlParser.KW_SCHEDULED:
                case HiveSqlParser.KW_SCHEDULING_POLICY:
                case HiveSqlParser.KW_SCHEMA:
                case HiveSqlParser.KW_SCHEMAS:
                case HiveSqlParser.KW_SECOND:
                case HiveSqlParser.KW_SECONDS:
                case HiveSqlParser.KW_SEMI:
                case HiveSqlParser.KW_SERDE:
                case HiveSqlParser.KW_SERDEPROPERTIES:
                case HiveSqlParser.KW_SERVER:
                case HiveSqlParser.KW_SETS:
                case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
                case HiveSqlParser.KW_SHARED:
                case HiveSqlParser.KW_SHOW:
                case HiveSqlParser.KW_SHOW_DATABASE:
                case HiveSqlParser.KW_SKEWED:
                case HiveSqlParser.KW_SNAPSHOT:
                case HiveSqlParser.KW_SORT:
                case HiveSqlParser.KW_SORTED:
                case HiveSqlParser.KW_SPEC:
                case HiveSqlParser.KW_SSL:
                case HiveSqlParser.KW_STATISTICS:
                case HiveSqlParser.KW_STATUS:
                case HiveSqlParser.KW_STORED:
                case HiveSqlParser.KW_STREAMTABLE:
                case HiveSqlParser.KW_STRING:
                case HiveSqlParser.KW_STRUCT:
                case HiveSqlParser.KW_SUMMARY:
                case HiveSqlParser.KW_SYSTEM_TIME:
                case HiveSqlParser.KW_SYSTEM_VERSION:
                case HiveSqlParser.KW_TABLES:
                case HiveSqlParser.KW_TBLPROPERTIES:
                case HiveSqlParser.KW_TEMPORARY:
                case HiveSqlParser.KW_TERMINATED:
                case HiveSqlParser.KW_TIMESTAMPTZ:
                case HiveSqlParser.KW_TINYINT:
                case HiveSqlParser.KW_TOUCH:
                case HiveSqlParser.KW_TRANSACTION:
                case HiveSqlParser.KW_TRANSACTIONAL:
                case HiveSqlParser.KW_TRANSACTIONS:
                case HiveSqlParser.KW_TRIM:
                case HiveSqlParser.KW_TYPE:
                case HiveSqlParser.KW_UNARCHIVE:
                case HiveSqlParser.KW_UNDO:
                case HiveSqlParser.KW_UNIONTYPE:
                case HiveSqlParser.KW_UNKNOWN:
                case HiveSqlParser.KW_UNLOCK:
                case HiveSqlParser.KW_UNMANAGED:
                case HiveSqlParser.KW_UNSET:
                case HiveSqlParser.KW_UNSIGNED:
                case HiveSqlParser.KW_URI:
                case HiveSqlParser.KW_URL:
                case HiveSqlParser.KW_USE:
                case HiveSqlParser.KW_UTC:
                case HiveSqlParser.KW_UTCTIMESTAMP:
                case HiveSqlParser.KW_VALIDATE:
                case HiveSqlParser.KW_VALUE_TYPE:
                case HiveSqlParser.KW_VECTORIZATION:
                case HiveSqlParser.KW_VIEW:
                case HiveSqlParser.KW_VIEWS:
                case HiveSqlParser.KW_WAIT:
                case HiveSqlParser.KW_WEEK:
                case HiveSqlParser.KW_WEEKS:
                case HiveSqlParser.KW_WHILE:
                case HiveSqlParser.KW_WITHIN:
                case HiveSqlParser.KW_WORK:
                case HiveSqlParser.KW_WORKLOAD:
                case HiveSqlParser.KW_WRITE:
                case HiveSqlParser.KW_YEAR:
                case HiveSqlParser.KW_YEARS:
                case HiveSqlParser.KW_ZONE:
                case HiveSqlParser.Identifier:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4499;
                        this.id_();
                    }
                    break;
                case HiveSqlParser.KW_SELECT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4500;
                        this.match(HiveSqlParser.KW_SELECT);
                    }
                    break;
                case HiveSqlParser.KW_JOIN:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4501;
                        this.match(HiveSqlParser.KW_JOIN);
                    }
                    break;
                case HiveSqlParser.KW_PARTITION:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4502;
                        this.match(HiveSqlParser.KW_PARTITION);
                    }
                    break;
                case HiveSqlParser.KW_MAP:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4503;
                        this.match(HiveSqlParser.KW_MAP);
                    }
                    break;
                case HiveSqlParser.KW_REDUCE:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 4504;
                        this.match(HiveSqlParser.KW_REDUCE);
                    }
                    break;
                case HiveSqlParser.KW_USER:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 4505;
                        this.match(HiveSqlParser.KW_USER);
                    }
                    break;
                case HiveSqlParser.KW_PERCENT:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 4506;
                        this.match(HiveSqlParser.KW_PERCENT);
                    }
                    break;
                case HiveSqlParser.KW_INTERVAL:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 4507;
                        this.match(HiveSqlParser.KW_INTERVAL);
                    }
                    break;
                case HiveSqlParser.KW_ROWS:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 4508;
                        this.match(HiveSqlParser.KW_ROWS);
                    }
                    break;
                case HiveSqlParser.KW_UNION:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 4509;
                        this.match(HiveSqlParser.KW_UNION);
                    }
                    break;
                case HiveSqlParser.KW_GROUP:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 4510;
                        this.match(HiveSqlParser.KW_GROUP);
                    }
                    break;
                case HiveSqlParser.KW_MERGE:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 4511;
                        this.match(HiveSqlParser.KW_MERGE);
                    }
                    break;
                case HiveSqlParser.KW_NULL:
                    this.enterOuterAlt(localContext, 14);
                    {
                        this.state = 4512;
                        this.match(HiveSqlParser.KW_NULL);
                    }
                    break;
                case HiveSqlParser.KW_FETCH:
                    this.enterOuterAlt(localContext, 15);
                    {
                        this.state = 4513;
                        this.match(HiveSqlParser.KW_FETCH);
                    }
                    break;
                case HiveSqlParser.KW_LOCAL:
                    this.enterOuterAlt(localContext, 16);
                    {
                        this.state = 4514;
                        this.match(HiveSqlParser.KW_LOCAL);
                    }
                    break;
                case HiveSqlParser.KW_DROP:
                    this.enterOuterAlt(localContext, 17);
                    {
                        this.state = 4515;
                        this.match(HiveSqlParser.KW_DROP);
                    }
                    break;
                case HiveSqlParser.KW_TABLE:
                    this.enterOuterAlt(localContext, 18);
                    {
                        this.state = 4516;
                        this.match(HiveSqlParser.KW_TABLE);
                    }
                    break;
                case HiveSqlParser.KW_ON:
                    this.enterOuterAlt(localContext, 19);
                    {
                        this.state = 4517;
                        this.match(HiveSqlParser.KW_ON);
                    }
                    break;
                case HiveSqlParser.KW_ROW:
                    this.enterOuterAlt(localContext, 20);
                    {
                        this.state = 4518;
                        this.match(HiveSqlParser.KW_ROW);
                    }
                    break;
                case HiveSqlParser.KW_GROUPING:
                    this.enterOuterAlt(localContext, 21);
                    {
                        this.state = 4519;
                        this.match(HiveSqlParser.KW_GROUPING);
                    }
                    break;
                case HiveSqlParser.KW_SET:
                    this.enterOuterAlt(localContext, 22);
                    {
                        this.state = 4520;
                        this.match(HiveSqlParser.KW_SET);
                    }
                    break;
                case HiveSqlParser.KW_FORCE:
                    this.enterOuterAlt(localContext, 23);
                    {
                        this.state = 4521;
                        this.match(HiveSqlParser.KW_FORCE);
                    }
                    break;
                case HiveSqlParser.KW_START:
                    this.enterOuterAlt(localContext, 24);
                    {
                        this.state = 4522;
                        this.match(HiveSqlParser.KW_START);
                    }
                    break;
                case HiveSqlParser.KW_INSERT:
                    this.enterOuterAlt(localContext, 25);
                    {
                        this.state = 4523;
                        this.match(HiveSqlParser.KW_INSERT);
                    }
                    break;
                case HiveSqlParser.KW_CONF:
                    this.enterOuterAlt(localContext, 26);
                    {
                        this.state = 4524;
                        this.match(HiveSqlParser.KW_CONF);
                    }
                    break;
                case HiveSqlParser.KW_INTO:
                    this.enterOuterAlt(localContext, 27);
                    {
                        this.state = 4525;
                        this.match(HiveSqlParser.KW_INTO);
                    }
                    break;
                case HiveSqlParser.KW_UNIQUE:
                    this.enterOuterAlt(localContext, 28);
                    {
                        this.state = 4526;
                        this.match(HiveSqlParser.KW_UNIQUE);
                    }
                    break;
                case HiveSqlParser.KW_COLUMN:
                    this.enterOuterAlt(localContext, 29);
                    {
                        this.state = 4527;
                        this.match(HiveSqlParser.KW_COLUMN);
                    }
                    break;
                case HiveSqlParser.KW_TRANSFORM:
                    this.enterOuterAlt(localContext, 30);
                    {
                        this.state = 4528;
                        this.match(HiveSqlParser.KW_TRANSFORM);
                    }
                    break;
                case HiveSqlParser.KW_DISTINCT:
                    this.enterOuterAlt(localContext, 31);
                    {
                        this.state = 4529;
                        this.match(HiveSqlParser.KW_DISTINCT);
                    }
                    break;
                case HiveSqlParser.KW_IN:
                    this.enterOuterAlt(localContext, 32);
                    {
                        this.state = 4530;
                        this.match(HiveSqlParser.KW_IN);
                    }
                    break;
                case HiveSqlParser.KW_REFERENCES:
                    this.enterOuterAlt(localContext, 33);
                    {
                        this.state = 4531;
                        this.match(HiveSqlParser.KW_REFERENCES);
                    }
                    break;
                case HiveSqlParser.KW_TIMESTAMP:
                    this.enterOuterAlt(localContext, 34);
                    {
                        this.state = 4532;
                        this.match(HiveSqlParser.KW_TIMESTAMP);
                    }
                    break;
                case HiveSqlParser.KW_ONLY:
                    this.enterOuterAlt(localContext, 35);
                    {
                        this.state = 4533;
                        this.match(HiveSqlParser.KW_ONLY);
                    }
                    break;
                case HiveSqlParser.KW_END:
                    this.enterOuterAlt(localContext, 36);
                    {
                        this.state = 4534;
                        this.match(HiveSqlParser.KW_END);
                    }
                    break;
                case HiveSqlParser.KW_FUNCTION:
                    this.enterOuterAlt(localContext, 37);
                    {
                        this.state = 4535;
                        this.match(HiveSqlParser.KW_FUNCTION);
                    }
                    break;
                case HiveSqlParser.KW_UPDATE:
                    this.enterOuterAlt(localContext, 38);
                    {
                        this.state = 4536;
                        this.match(HiveSqlParser.KW_UPDATE);
                    }
                    break;
                case HiveSqlParser.KW_AUTHORIZATION:
                    this.enterOuterAlt(localContext, 39);
                    {
                        this.state = 4537;
                        this.match(HiveSqlParser.KW_AUTHORIZATION);
                    }
                    break;
                case HiveSqlParser.KW_DDL:
                    this.enterOuterAlt(localContext, 40);
                    {
                        this.state = 4538;
                        this.match(HiveSqlParser.KW_DDL);
                    }
                    break;
                case HiveSqlParser.KW_VALUES:
                    this.enterOuterAlt(localContext, 41);
                    {
                        this.state = 4539;
                        this.match(HiveSqlParser.KW_VALUES);
                    }
                    break;
                case HiveSqlParser.KW_TIME:
                    this.enterOuterAlt(localContext, 42);
                    {
                        this.state = 4540;
                        this.match(HiveSqlParser.KW_TIME);
                    }
                    break;
                case HiveSqlParser.KW_IS:
                    this.enterOuterAlt(localContext, 43);
                    {
                        this.state = 4541;
                        this.match(HiveSqlParser.KW_IS);
                    }
                    break;
                case HiveSqlParser.KW_FOR:
                    this.enterOuterAlt(localContext, 44);
                    {
                        this.state = 4542;
                        this.match(HiveSqlParser.KW_FOR);
                    }
                    break;
                case HiveSqlParser.KW_NOT:
                    this.enterOuterAlt(localContext, 45);
                    {
                        this.state = 4543;
                        this.match(HiveSqlParser.KW_NOT);
                    }
                    break;
                case HiveSqlParser.KW_BINARY:
                    this.enterOuterAlt(localContext, 46);
                    {
                        this.state = 4544;
                        this.match(HiveSqlParser.KW_BINARY);
                    }
                    break;
                case HiveSqlParser.KW_USING:
                    this.enterOuterAlt(localContext, 47);
                    {
                        this.state = 4545;
                        this.match(HiveSqlParser.KW_USING);
                    }
                    break;
                case HiveSqlParser.KW_READS:
                    this.enterOuterAlt(localContext, 48);
                    {
                        this.state = 4546;
                        this.match(HiveSqlParser.KW_READS);
                    }
                    break;
                case HiveSqlParser.KW_BETWEEN:
                    this.enterOuterAlt(localContext, 49);
                    {
                        this.state = 4547;
                        this.match(HiveSqlParser.KW_BETWEEN);
                    }
                    break;
                case HiveSqlParser.KW_CURRENT:
                    this.enterOuterAlt(localContext, 50);
                    {
                        this.state = 4548;
                        this.match(HiveSqlParser.KW_CURRENT);
                    }
                    break;
                case HiveSqlParser.KW_AS:
                    this.enterOuterAlt(localContext, 51);
                    {
                        this.state = 4549;
                        this.match(HiveSqlParser.KW_AS);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    resourcePlanDdlStatements() {
        let localContext = new ResourcePlanDdlStatementsContext(this.context, this.state);
        this.enterRule(localContext, 654, HiveSqlParser.RULE_resourcePlanDdlStatements);
        let _la;
        try {
            this.state = 4717;
            this.errorHandler.sync(this);
            switch (this.interpreter.adaptivePredict(this.tokenStream, 612, this.context)) {
                case 1:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4552;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 4553;
                        this.match(HiveSqlParser.KW_RESOURCE);
                        this.state = 4554;
                        this.match(HiveSqlParser.KW_PLAN);
                        this.state = 4556;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 4555;
                                this.ifNotExists();
                            }
                        }
                        this.state = 4567;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 598, this.context)) {
                            case 1:
                                {
                                    this.state = 4558;
                                    localContext._name = this.id_();
                                    this.state = 4559;
                                    this.match(HiveSqlParser.KW_LIKE);
                                    this.state = 4560;
                                    localContext._likeName = this.id_();
                                }
                                break;
                            case 2:
                                {
                                    this.state = 4562;
                                    localContext._name = this.id_();
                                    this.state = 4565;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 597, this.context)) {
                                        case 1:
                                            {
                                                this.state = 4563;
                                                this.match(HiveSqlParser.KW_WITH);
                                                this.state = 4564;
                                                this.rpAssignList();
                                            }
                                            break;
                                    }
                                }
                                break;
                        }
                    }
                    break;
                case 2:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4569;
                        this.match(HiveSqlParser.KW_ALTER);
                        this.state = 4570;
                        this.match(HiveSqlParser.KW_RESOURCE);
                        this.state = 4571;
                        this.match(HiveSqlParser.KW_PLAN);
                        this.state = 4572;
                        localContext._name = this.id_();
                        this.state = 4597;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_VALIDATE:
                                {
                                    this.state = 4573;
                                    this.match(HiveSqlParser.KW_VALIDATE);
                                }
                                break;
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                                {
                                    this.state = 4574;
                                    this.disable();
                                }
                                break;
                            case HiveSqlParser.KW_SET:
                                {
                                    this.state = 4575;
                                    this.match(HiveSqlParser.KW_SET);
                                    this.state = 4576;
                                    this.rpAssignList();
                                }
                                break;
                            case HiveSqlParser.KW_UNSET:
                                {
                                    this.state = 4577;
                                    this.match(HiveSqlParser.KW_UNSET);
                                    this.state = 4578;
                                    this.rpUnassign();
                                    this.state = 4583;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    while (_la === 397) {
                                        {
                                            {
                                                this.state = 4579;
                                                this.match(HiveSqlParser.COMMA);
                                                this.state = 4580;
                                                this.rpUnassign();
                                            }
                                        }
                                        this.state = 4585;
                                        this.errorHandler.sync(this);
                                        _la = this.tokenStream.LA(1);
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_RENAME:
                                {
                                    this.state = 4586;
                                    this.match(HiveSqlParser.KW_RENAME);
                                    this.state = 4587;
                                    this.match(HiveSqlParser.KW_TO);
                                    this.state = 4588;
                                    localContext._newName = this.id_();
                                }
                                break;
                            case HiveSqlParser.KW_ACTIVATE:
                                {
                                    this.state = 4589;
                                    this.activate();
                                    this.state = 4591;
                                    this.errorHandler.sync(this);
                                    switch (this.interpreter.adaptivePredict(this.tokenStream, 600, this.context)) {
                                        case 1:
                                            {
                                                this.state = 4590;
                                                this.enable();
                                            }
                                            break;
                                    }
                                }
                                break;
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                                {
                                    this.state = 4593;
                                    this.enable();
                                    this.state = 4595;
                                    this.errorHandler.sync(this);
                                    _la = this.tokenStream.LA(1);
                                    if (_la === 2) {
                                        {
                                            this.state = 4594;
                                            this.activate();
                                        }
                                    }
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 3:
                    this.enterOuterAlt(localContext, 3);
                    {
                        this.state = 4599;
                        this.match(HiveSqlParser.KW_DROP);
                        this.state = 4600;
                        this.match(HiveSqlParser.KW_RESOURCE);
                        this.state = 4601;
                        this.match(HiveSqlParser.KW_PLAN);
                        this.state = 4603;
                        this.errorHandler.sync(this);
                        _la = this.tokenStream.LA(1);
                        if (_la === 151) {
                            {
                                this.state = 4602;
                                this.ifExists();
                            }
                        }
                        this.state = 4605;
                        localContext._name = this.id_();
                    }
                    break;
                case 4:
                    this.enterOuterAlt(localContext, 4);
                    {
                        this.state = 4608;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_ENABLE:
                            case HiveSqlParser.KW_ENABLED:
                                {
                                    this.state = 4606;
                                    this.enable();
                                }
                                break;
                            case HiveSqlParser.KW_DISABLE:
                            case HiveSqlParser.KW_DISABLED:
                                {
                                    this.state = 4607;
                                    this.disable();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                        this.state = 4610;
                        this.match(HiveSqlParser.KW_WORKLOAD);
                        this.state = 4611;
                        this.match(HiveSqlParser.KW_MANAGEMENT);
                    }
                    break;
                case 5:
                    this.enterOuterAlt(localContext, 5);
                    {
                        this.state = 4613;
                        this.match(HiveSqlParser.KW_REPLACE);
                        this.state = 4625;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_ACTIVE:
                                {
                                    this.state = 4614;
                                    this.match(HiveSqlParser.KW_ACTIVE);
                                    this.state = 4615;
                                    this.match(HiveSqlParser.KW_RESOURCE);
                                    this.state = 4616;
                                    this.match(HiveSqlParser.KW_PLAN);
                                    this.state = 4617;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 4618;
                                    localContext._src = this.id_();
                                }
                                break;
                            case HiveSqlParser.KW_RESOURCE:
                                {
                                    this.state = 4619;
                                    this.match(HiveSqlParser.KW_RESOURCE);
                                    this.state = 4620;
                                    this.match(HiveSqlParser.KW_PLAN);
                                    this.state = 4621;
                                    localContext._dest = this.id_();
                                    this.state = 4622;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 4623;
                                    localContext._src = this.id_();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 6:
                    this.enterOuterAlt(localContext, 6);
                    {
                        this.state = 4627;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 4628;
                        this.match(HiveSqlParser.KW_TRIGGER);
                        this.state = 4629;
                        localContext._rpName = this.id_();
                        this.state = 4630;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4631;
                        localContext._triggerName = this.id_();
                        this.state = 4632;
                        this.match(HiveSqlParser.KW_WHEN);
                        this.state = 4633;
                        this.triggerAtomExpression();
                        this.state = 4634;
                        this.match(HiveSqlParser.KW_DO);
                        this.state = 4635;
                        this.triggerActionExpression();
                    }
                    break;
                case 7:
                    this.enterOuterAlt(localContext, 7);
                    {
                        this.state = 4637;
                        this.match(HiveSqlParser.KW_ALTER);
                        this.state = 4638;
                        this.match(HiveSqlParser.KW_TRIGGER);
                        this.state = 4639;
                        localContext._rpName = this.id_();
                        this.state = 4640;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4641;
                        localContext._triggerName = this.id_();
                        this.state = 4658;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_WHEN:
                                {
                                    this.state = 4642;
                                    this.match(HiveSqlParser.KW_WHEN);
                                    this.state = 4643;
                                    this.triggerAtomExpression();
                                    this.state = 4644;
                                    this.match(HiveSqlParser.KW_DO);
                                    this.state = 4645;
                                    this.triggerActionExpression();
                                }
                                break;
                            case HiveSqlParser.KW_ADD:
                            case HiveSqlParser.KW_DROP:
                                {
                                    this.state = 4651;
                                    this.errorHandler.sync(this);
                                    switch (this.tokenStream.LA(1)) {
                                        case HiveSqlParser.KW_ADD:
                                            {
                                                this.state = 4647;
                                                this.match(HiveSqlParser.KW_ADD);
                                                this.state = 4648;
                                                this.match(HiveSqlParser.KW_TO);
                                            }
                                            break;
                                        case HiveSqlParser.KW_DROP:
                                            {
                                                this.state = 4649;
                                                this.match(HiveSqlParser.KW_DROP);
                                                this.state = 4650;
                                                this.match(HiveSqlParser.KW_FROM);
                                            }
                                            break;
                                        default:
                                            throw new antlr.NoViableAltException(this);
                                    }
                                    this.state = 4656;
                                    this.errorHandler.sync(this);
                                    switch (this.tokenStream.LA(1)) {
                                        case HiveSqlParser.KW_POOL:
                                            {
                                                this.state = 4653;
                                                this.match(HiveSqlParser.KW_POOL);
                                                this.state = 4654;
                                                localContext._poolName = this.poolPath();
                                            }
                                            break;
                                        case HiveSqlParser.KW_UNMANAGED:
                                            {
                                                this.state = 4655;
                                                this.match(HiveSqlParser.KW_UNMANAGED);
                                            }
                                            break;
                                        default:
                                            throw new antlr.NoViableAltException(this);
                                    }
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 8:
                    this.enterOuterAlt(localContext, 8);
                    {
                        this.state = 4660;
                        this.match(HiveSqlParser.KW_DROP);
                        this.state = 4661;
                        this.match(HiveSqlParser.KW_TRIGGER);
                        this.state = 4662;
                        localContext._rpName = this.id_();
                        this.state = 4663;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4664;
                        localContext._triggerName = this.id_();
                    }
                    break;
                case 9:
                    this.enterOuterAlt(localContext, 9);
                    {
                        this.state = 4666;
                        this.match(HiveSqlParser.KW_CREATE);
                        this.state = 4667;
                        this.match(HiveSqlParser.KW_POOL);
                        this.state = 4668;
                        localContext._rpName = this.id_();
                        this.state = 4669;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4670;
                        this.poolPath();
                        this.state = 4671;
                        this.match(HiveSqlParser.KW_WITH);
                        this.state = 4672;
                        this.poolAssignList();
                    }
                    break;
                case 10:
                    this.enterOuterAlt(localContext, 10);
                    {
                        this.state = 4674;
                        this.match(HiveSqlParser.KW_ALTER);
                        this.state = 4675;
                        this.match(HiveSqlParser.KW_POOL);
                        this.state = 4676;
                        localContext._rpName = this.id_();
                        this.state = 4677;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4678;
                        this.poolPath();
                        this.state = 4686;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_SET:
                                {
                                    this.state = 4679;
                                    this.match(HiveSqlParser.KW_SET);
                                    this.state = 4680;
                                    this.poolAssignList();
                                }
                                break;
                            case HiveSqlParser.KW_UNSET:
                                {
                                    this.state = 4681;
                                    this.match(HiveSqlParser.KW_UNSET);
                                    this.state = 4682;
                                    this.match(HiveSqlParser.KW_SCHEDULING_POLICY);
                                }
                                break;
                            case HiveSqlParser.KW_ADD:
                            case HiveSqlParser.KW_DROP:
                                {
                                    this.state = 4683;
                                    _la = this.tokenStream.LA(1);
                                    if (!(_la === 4 || _la === 101)) {
                                        this.errorHandler.recoverInline(this);
                                    }
                                    else {
                                        this.errorHandler.reportMatch(this);
                                        this.consume();
                                    }
                                    this.state = 4684;
                                    this.match(HiveSqlParser.KW_TRIGGER);
                                    this.state = 4685;
                                    localContext._triggerName = this.id_();
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                    }
                    break;
                case 11:
                    this.enterOuterAlt(localContext, 11);
                    {
                        this.state = 4688;
                        this.match(HiveSqlParser.KW_DROP);
                        this.state = 4689;
                        this.match(HiveSqlParser.KW_POOL);
                        this.state = 4690;
                        localContext._rpName = this.id_();
                        this.state = 4691;
                        this.match(HiveSqlParser.DOT);
                        this.state = 4692;
                        this.poolPath();
                    }
                    break;
                case 12:
                    this.enterOuterAlt(localContext, 12);
                    {
                        this.state = 4694;
                        _la = this.tokenStream.LA(1);
                        if (!(_la === 9 || _la === 58)) {
                            this.errorHandler.recoverInline(this);
                        }
                        else {
                            this.errorHandler.reportMatch(this);
                            this.consume();
                        }
                        this.state = 4695;
                        localContext._mappingType = this.mappingTypes();
                        this.state = 4696;
                        this.match(HiveSqlParser.KW_MAPPING);
                        this.state = 4697;
                        this.match(HiveSqlParser.StringLiteral);
                        this.state = 4698;
                        this.match(HiveSqlParser.KW_IN);
                        this.state = 4699;
                        localContext._rpName = this.id_();
                        this.state = 4703;
                        this.errorHandler.sync(this);
                        switch (this.tokenStream.LA(1)) {
                            case HiveSqlParser.KW_TO:
                                {
                                    this.state = 4700;
                                    this.match(HiveSqlParser.KW_TO);
                                    this.state = 4701;
                                    localContext._path = this.poolPath();
                                }
                                break;
                            case HiveSqlParser.KW_UNMANAGED:
                                {
                                    this.state = 4702;
                                    this.match(HiveSqlParser.KW_UNMANAGED);
                                }
                                break;
                            default:
                                throw new antlr.NoViableAltException(this);
                        }
                        this.state = 4708;
                        this.errorHandler.sync(this);
                        switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context)) {
                            case 1:
                                {
                                    this.state = 4705;
                                    this.match(HiveSqlParser.KW_WITH);
                                    this.state = 4706;
                                    this.match(HiveSqlParser.KW_ORDER);
                                    this.state = 4707;
                                    localContext._order = this.match(HiveSqlParser.Number);
                                }
                                break;
                        }
                    }
                    break;
                case 13:
                    this.enterOuterAlt(localContext, 13);
                    {
                        this.state = 4710;
                        this.match(HiveSqlParser.KW_DROP);
                        this.state = 4711;
                        localContext._mappingType = this.mappingTypes();
                        this.state = 4712;
                        this.match(HiveSqlParser.KW_MAPPING);
                        this.state = 4713;
                        this.match(HiveSqlParser.StringLiteral);
                        this.state = 4714;
                        this.match(HiveSqlParser.KW_IN);
                        this.state = 4715;
                        localContext._rpName = this.id_();
                    }
                    break;
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    mappingTypes() {
        let localContext = new MappingTypesContext(this.context, this.state);
        this.enterRule(localContext, 656, HiveSqlParser.RULE_mappingTypes);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4719;
                _la = this.tokenStream.LA(1);
                if (!(_la === 14 || _la === 144 || _la === 369)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rpAssign() {
        let localContext = new RpAssignContext(this.context, this.state);
        this.enterRule(localContext, 658, HiveSqlParser.RULE_rpAssign);
        try {
            this.state = 4728;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4721;
                        this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
                        this.state = 4722;
                        this.match(HiveSqlParser.EQUAL);
                        this.state = 4723;
                        localContext._parallelism = this.match(HiveSqlParser.Number);
                    }
                    break;
                case HiveSqlParser.KW_DEFAULT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4724;
                        this.match(HiveSqlParser.KW_DEFAULT);
                        this.state = 4725;
                        this.match(HiveSqlParser.KW_POOL);
                        this.state = 4726;
                        this.match(HiveSqlParser.EQUAL);
                        this.state = 4727;
                        this.poolPath();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rpAssignList() {
        let localContext = new RpAssignListContext(this.context, this.state);
        this.enterRule(localContext, 660, HiveSqlParser.RULE_rpAssignList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4730;
                this.rpAssign();
                this.state = 4735;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 4731;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4732;
                            this.rpAssign();
                        }
                    }
                    this.state = 4737;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    rpUnassign() {
        let localContext = new RpUnassignContext(this.context, this.state);
        this.enterRule(localContext, 662, HiveSqlParser.RULE_rpUnassign);
        try {
            this.state = 4741;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_QUERY_PARALLELISM:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4738;
                        this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
                    }
                    break;
                case HiveSqlParser.KW_DEFAULT:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4739;
                        this.match(HiveSqlParser.KW_DEFAULT);
                        this.state = 4740;
                        this.match(HiveSqlParser.KW_POOL);
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    activate() {
        let localContext = new ActivateContext(this.context, this.state);
        this.enterRule(localContext, 664, HiveSqlParser.RULE_activate);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4743;
                this.match(HiveSqlParser.KW_ACTIVATE);
                this.state = 4746;
                this.errorHandler.sync(this);
                switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context)) {
                    case 1:
                        {
                            this.state = 4744;
                            this.match(HiveSqlParser.KW_WITH);
                            this.state = 4745;
                            this.match(HiveSqlParser.KW_REPLACE);
                        }
                        break;
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    enable() {
        let localContext = new EnableContext(this.context, this.state);
        this.enterRule(localContext, 666, HiveSqlParser.RULE_enable);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4748;
                _la = this.tokenStream.LA(1);
                if (!(_la === 106 || _la === 107)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    disable() {
        let localContext = new DisableContext(this.context, this.state);
        this.enterRule(localContext, 668, HiveSqlParser.RULE_disable);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4750;
                _la = this.tokenStream.LA(1);
                if (!(_la === 94 || _la === 95)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    year() {
        let localContext = new YearContext(this.context, this.state);
        this.enterRule(localContext, 670, HiveSqlParser.RULE_year);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4752;
                _la = this.tokenStream.LA(1);
                if (!(_la === 392 || _la === 393)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    month() {
        let localContext = new MonthContext(this.context, this.state);
        this.enterRule(localContext, 672, HiveSqlParser.RULE_month);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4754;
                _la = this.tokenStream.LA(1);
                if (!(_la === 208 || _la === 209)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    week() {
        let localContext = new WeekContext(this.context, this.state);
        this.enterRule(localContext, 674, HiveSqlParser.RULE_week);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4756;
                _la = this.tokenStream.LA(1);
                if (!(_la === 381 || _la === 382)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    day() {
        let localContext = new DayContext(this.context, this.state);
        this.enterRule(localContext, 676, HiveSqlParser.RULE_day);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4758;
                _la = this.tokenStream.LA(1);
                if (!(_la === 73 || _la === 74)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    hour() {
        let localContext = new HourContext(this.context, this.state);
        this.enterRule(localContext, 678, HiveSqlParser.RULE_hour);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4760;
                _la = this.tokenStream.LA(1);
                if (!(_la === 148 || _la === 149)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    minute() {
        let localContext = new MinuteContext(this.context, this.state);
        this.enterRule(localContext, 680, HiveSqlParser.RULE_minute);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4762;
                _la = this.tokenStream.LA(1);
                if (!(_la === 206 || _la === 207)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    second() {
        let localContext = new SecondContext(this.context, this.state);
        this.enterRule(localContext, 682, HiveSqlParser.RULE_second);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4764;
                _la = this.tokenStream.LA(1);
                if (!(_la === 297 || _la === 298)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    decimal() {
        let localContext = new DecimalContext(this.context, this.state);
        this.enterRule(localContext, 684, HiveSqlParser.RULE_decimal);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4766;
                _la = this.tokenStream.LA(1);
                if (!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & 7) !== 0))) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    poolPath() {
        let localContext = new PoolPathContext(this.context, this.state);
        this.enterRule(localContext, 686, HiveSqlParser.RULE_poolPath);
        try {
            let alternative;
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4768;
                this.id_();
                this.state = 4773;
                this.errorHandler.sync(this);
                alternative = this.interpreter.adaptivePredict(this.tokenStream, 617, this.context);
                while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
                    if (alternative === 1) {
                        {
                            {
                                this.state = 4769;
                                this.match(HiveSqlParser.DOT);
                                this.state = 4770;
                                this.id_();
                            }
                        }
                    }
                    this.state = 4775;
                    this.errorHandler.sync(this);
                    alternative = this.interpreter.adaptivePredict(this.tokenStream, 617, this.context);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    triggerAtomExpression() {
        let localContext = new TriggerAtomExpressionContext(this.context, this.state);
        this.enterRule(localContext, 688, HiveSqlParser.RULE_triggerAtomExpression);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4776;
                this.id_();
                this.state = 4777;
                this.match(HiveSqlParser.GREATERTHAN);
                this.state = 4778;
                _la = this.tokenStream.LA(1);
                if (!(_la === 426 || _la === 431)) {
                    this.errorHandler.recoverInline(this);
                }
                else {
                    this.errorHandler.reportMatch(this);
                    this.consume();
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    triggerActionExpression() {
        let localContext = new TriggerActionExpressionContext(this.context, this.state);
        this.enterRule(localContext, 690, HiveSqlParser.RULE_triggerActionExpression);
        try {
            this.state = 4784;
            this.errorHandler.sync(this);
            switch (this.tokenStream.LA(1)) {
                case HiveSqlParser.KW_KILL:
                    this.enterOuterAlt(localContext, 1);
                    {
                        this.state = 4780;
                        this.match(HiveSqlParser.KW_KILL);
                    }
                    break;
                case HiveSqlParser.KW_MOVE:
                    this.enterOuterAlt(localContext, 2);
                    {
                        this.state = 4781;
                        this.match(HiveSqlParser.KW_MOVE);
                        this.state = 4782;
                        this.match(HiveSqlParser.KW_TO);
                        this.state = 4783;
                        this.poolPath();
                    }
                    break;
                default:
                    throw new antlr.NoViableAltException(this);
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    poolAssign() {
        let localContext = new PoolAssignContext(this.context, this.state);
        this.enterRule(localContext, 692, HiveSqlParser.RULE_poolAssign);
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4798;
                this.errorHandler.sync(this);
                switch (this.tokenStream.LA(1)) {
                    case HiveSqlParser.KW_ALLOC_FRACTION:
                        {
                            this.state = 4786;
                            this.match(HiveSqlParser.KW_ALLOC_FRACTION);
                            this.state = 4787;
                            this.match(HiveSqlParser.EQUAL);
                            this.state = 4788;
                            localContext._allocFraction = this.match(HiveSqlParser.Number);
                        }
                        break;
                    case HiveSqlParser.KW_QUERY_PARALLELISM:
                        {
                            this.state = 4789;
                            this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
                            this.state = 4790;
                            this.match(HiveSqlParser.EQUAL);
                            this.state = 4791;
                            localContext._parallelism = this.match(HiveSqlParser.Number);
                        }
                        break;
                    case HiveSqlParser.KW_SCHEDULING_POLICY:
                        {
                            this.state = 4792;
                            this.match(HiveSqlParser.KW_SCHEDULING_POLICY);
                            this.state = 4793;
                            this.match(HiveSqlParser.EQUAL);
                            this.state = 4794;
                            localContext._policy = this.match(HiveSqlParser.StringLiteral);
                        }
                        break;
                    case HiveSqlParser.KW_PATH:
                        {
                            this.state = 4795;
                            this.match(HiveSqlParser.KW_PATH);
                            this.state = 4796;
                            this.match(HiveSqlParser.EQUAL);
                            this.state = 4797;
                            localContext._path = this.poolPath();
                        }
                        break;
                    default:
                        throw new antlr.NoViableAltException(this);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    poolAssignList() {
        let localContext = new PoolAssignListContext(this.context, this.state);
        this.enterRule(localContext, 694, HiveSqlParser.RULE_poolAssignList);
        let _la;
        try {
            this.enterOuterAlt(localContext, 1);
            {
                this.state = 4800;
                this.poolAssign();
                this.state = 4805;
                this.errorHandler.sync(this);
                _la = this.tokenStream.LA(1);
                while (_la === 397) {
                    {
                        {
                            this.state = 4801;
                            this.match(HiveSqlParser.COMMA);
                            this.state = 4802;
                            this.poolAssign();
                        }
                    }
                    this.state = 4807;
                    this.errorHandler.sync(this);
                    _la = this.tokenStream.LA(1);
                }
            }
        }
        catch (re) {
            if (re instanceof antlr.RecognitionException) {
                localContext.exception = re;
                this.errorHandler.reportError(this, re);
                this.errorHandler.recover(this, re);
            }
            else {
                throw re;
            }
        }
        finally {
            this.exitRule();
        }
        return localContext;
    }
    sempred(localContext, ruleIndex, predIndex) {
        switch (ruleIndex) {
            case 128:
                return this.columnName_sempred(localContext, predIndex);
        }
        return true;
    }
    columnName_sempred(localContext, predIndex) {
        switch (predIndex) {
            case 0:
                return this.shouldMatchEmpty();
        }
        return true;
    }
    static get _ATN() {
        if (!HiveSqlParser.__ATN) {
            HiveSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(HiveSqlParser._serializedATN);
        }
        return HiveSqlParser.__ATN;
    }
    get vocabulary() {
        return HiveSqlParser.vocabulary;
    }
}
HiveSqlParser.KW_ABORT = 1;
HiveSqlParser.KW_ACTIVATE = 2;
HiveSqlParser.KW_ACTIVE = 3;
HiveSqlParser.KW_ADD = 4;
HiveSqlParser.KW_ADMIN = 5;
HiveSqlParser.KW_AFTER = 6;
HiveSqlParser.KW_ALL = 7;
HiveSqlParser.KW_ALLOC_FRACTION = 8;
HiveSqlParser.KW_ALTER = 9;
HiveSqlParser.KW_ANALYZE = 10;
HiveSqlParser.KW_AND = 11;
HiveSqlParser.KW_ANTI = 12;
HiveSqlParser.KW_ANY = 13;
HiveSqlParser.KW_APPLICATION = 14;
HiveSqlParser.KW_ARCHIVE = 15;
HiveSqlParser.KW_ARRAY = 16;
HiveSqlParser.KW_AS = 17;
HiveSqlParser.KW_ASC = 18;
HiveSqlParser.KW_AST = 19;
HiveSqlParser.KW_AT = 20;
HiveSqlParser.KW_AUTHORIZATION = 21;
HiveSqlParser.KW_AUTOCOMMIT = 22;
HiveSqlParser.KW_BATCH = 23;
HiveSqlParser.KW_BEFORE = 24;
HiveSqlParser.KW_BETWEEN = 25;
HiveSqlParser.KW_BIGINT = 26;
HiveSqlParser.KW_BINARY = 27;
HiveSqlParser.KW_BOOLEAN = 28;
HiveSqlParser.KW_BOTH = 29;
HiveSqlParser.KW_BUCKET = 30;
HiveSqlParser.KW_BUCKETS = 31;
HiveSqlParser.KW_BY = 32;
HiveSqlParser.KW_CACHE = 33;
HiveSqlParser.KW_CASCADE = 34;
HiveSqlParser.KW_CASE = 35;
HiveSqlParser.KW_CAST = 36;
HiveSqlParser.KW_CBO = 37;
HiveSqlParser.KW_CHANGE = 38;
HiveSqlParser.KW_CHAR = 39;
HiveSqlParser.KW_CHECK = 40;
HiveSqlParser.KW_CLUSTER = 41;
HiveSqlParser.KW_CLUSTERED = 42;
HiveSqlParser.KW_CLUSTERSTATUS = 43;
HiveSqlParser.KW_COLLECTION = 44;
HiveSqlParser.KW_COLUMN = 45;
HiveSqlParser.KW_COLUMNS = 46;
HiveSqlParser.KW_COMMENT = 47;
HiveSqlParser.KW_COMMIT = 48;
HiveSqlParser.KW_COMPACT = 49;
HiveSqlParser.KW_COMPACTIONS = 50;
HiveSqlParser.KW_COMPACT_ID = 51;
HiveSqlParser.KW_COMPUTE = 52;
HiveSqlParser.KW_CONCATENATE = 53;
HiveSqlParser.KW_CONF = 54;
HiveSqlParser.KW_CONSTRAINT = 55;
HiveSqlParser.KW_CONTINUE = 56;
HiveSqlParser.KW_COST = 57;
HiveSqlParser.KW_CREATE = 58;
HiveSqlParser.KW_CRON = 59;
HiveSqlParser.KW_CROSS = 60;
HiveSqlParser.KW_CUBE = 61;
HiveSqlParser.KW_CURRENT = 62;
HiveSqlParser.KW_CURRENT_DATE = 63;
HiveSqlParser.KW_CURRENT_TIMESTAMP = 64;
HiveSqlParser.KW_CURSOR = 65;
HiveSqlParser.KW_DATA = 66;
HiveSqlParser.KW_DATABASE = 67;
HiveSqlParser.KW_DATABASES = 68;
HiveSqlParser.KW_DATACONNECTOR = 69;
HiveSqlParser.KW_DATACONNECTORS = 70;
HiveSqlParser.KW_DATE = 71;
HiveSqlParser.KW_DATETIME = 72;
HiveSqlParser.KW_DAY = 73;
HiveSqlParser.KW_DAYS = 74;
HiveSqlParser.KW_DAYOFWEEK = 75;
HiveSqlParser.KW_DBPROPERTIES = 76;
HiveSqlParser.KW_DCPROPERTIES = 77;
HiveSqlParser.KW_DDL = 78;
HiveSqlParser.KW_DEBUG = 79;
HiveSqlParser.KW_DEC = 80;
HiveSqlParser.KW_DECIMAL = 81;
HiveSqlParser.KW_NUMERIC = 82;
HiveSqlParser.KW_DEFAULT = 83;
HiveSqlParser.KW_DEFERRED = 84;
HiveSqlParser.KW_DEFINED = 85;
HiveSqlParser.KW_DELETE = 86;
HiveSqlParser.KW_DELIMITED = 87;
HiveSqlParser.KW_DEPENDENCY = 88;
HiveSqlParser.KW_DESC = 89;
HiveSqlParser.KW_DESCRIBE = 90;
HiveSqlParser.KW_DETAIL = 91;
HiveSqlParser.KW_DIRECTORIES = 92;
HiveSqlParser.KW_DIRECTORY = 93;
HiveSqlParser.KW_DISABLE = 94;
HiveSqlParser.KW_DISABLED = 95;
HiveSqlParser.KW_DISTINCT = 96;
HiveSqlParser.KW_DISTRIBUTE = 97;
HiveSqlParser.KW_DISTRIBUTED = 98;
HiveSqlParser.KW_DO = 99;
HiveSqlParser.KW_DOUBLE = 100;
HiveSqlParser.KW_DROP = 101;
HiveSqlParser.KW_RECOVER = 102;
HiveSqlParser.KW_DUMP = 103;
HiveSqlParser.KW_ELEM_TYPE = 104;
HiveSqlParser.KW_ELSE = 105;
HiveSqlParser.KW_ENABLE = 106;
HiveSqlParser.KW_ENABLED = 107;
HiveSqlParser.KW_END = 108;
HiveSqlParser.KW_ENFORCED = 109;
HiveSqlParser.KW_ESCAPED = 110;
HiveSqlParser.KW_EVERY = 111;
HiveSqlParser.KW_EXCEPT = 112;
HiveSqlParser.KW_EXCHANGE = 113;
HiveSqlParser.KW_EXCLUSIVE = 114;
HiveSqlParser.KW_EXECUTE = 115;
HiveSqlParser.KW_EXECUTED = 116;
HiveSqlParser.KW_EXISTS = 117;
HiveSqlParser.KW_EXPIRE_SNAPSHOTS = 118;
HiveSqlParser.KW_EXPLAIN = 119;
HiveSqlParser.KW_EXPORT = 120;
HiveSqlParser.KW_EXPRESSION = 121;
HiveSqlParser.KW_EXTENDED = 122;
HiveSqlParser.KW_EXTERNAL = 123;
HiveSqlParser.KW_EXTRACT = 124;
HiveSqlParser.KW_FALSE = 125;
HiveSqlParser.KW_FETCH = 126;
HiveSqlParser.KW_FIELDS = 127;
HiveSqlParser.KW_FILE = 128;
HiveSqlParser.KW_FILEFORMAT = 129;
HiveSqlParser.KW_FIRST = 130;
HiveSqlParser.KW_FLOAT = 131;
HiveSqlParser.KW_FLOOR = 132;
HiveSqlParser.KW_FOLLOWING = 133;
HiveSqlParser.KW_FOR = 134;
HiveSqlParser.KW_FORCE = 135;
HiveSqlParser.KW_FOREIGN = 136;
HiveSqlParser.KW_FORMAT = 137;
HiveSqlParser.KW_FORMATTED = 138;
HiveSqlParser.KW_FROM = 139;
HiveSqlParser.KW_FULL = 140;
HiveSqlParser.KW_FUNCTION = 141;
HiveSqlParser.KW_FUNCTIONS = 142;
HiveSqlParser.KW_GRANT = 143;
HiveSqlParser.KW_GROUP = 144;
HiveSqlParser.KW_GROUPING = 145;
HiveSqlParser.KW_HAVING = 146;
HiveSqlParser.KW_HOLD_DDLTIME = 147;
HiveSqlParser.KW_HOUR = 148;
HiveSqlParser.KW_HOURS = 149;
HiveSqlParser.KW_IDXPROPERTIES = 150;
HiveSqlParser.KW_IF = 151;
HiveSqlParser.KW_IGNORE = 152;
HiveSqlParser.KW_IMPORT = 153;
HiveSqlParser.KW_IN = 154;
HiveSqlParser.KW_INDEX = 155;
HiveSqlParser.KW_INDEXES = 156;
HiveSqlParser.KW_INNER = 157;
HiveSqlParser.KW_INPATH = 158;
HiveSqlParser.KW_INPUTDRIVER = 159;
HiveSqlParser.KW_INPUTFORMAT = 160;
HiveSqlParser.KW_INSERT = 161;
HiveSqlParser.KW_INT = 162;
HiveSqlParser.KW_INTEGER = 163;
HiveSqlParser.KW_INTERSECT = 164;
HiveSqlParser.KW_INTERVAL = 165;
HiveSqlParser.KW_INTO = 166;
HiveSqlParser.KW_IS = 167;
HiveSqlParser.KW_ISOLATION = 168;
HiveSqlParser.KW_ITEMS = 169;
HiveSqlParser.KW_JAR = 170;
HiveSqlParser.KW_JOIN = 171;
HiveSqlParser.KW_JOINCOST = 172;
HiveSqlParser.KW_KEY = 173;
HiveSqlParser.KW_KEYS = 174;
HiveSqlParser.KW_KEY_TYPE = 175;
HiveSqlParser.KW_KILL = 176;
HiveSqlParser.KW_LAST = 177;
HiveSqlParser.KW_LATERAL = 178;
HiveSqlParser.KW_LEADING = 179;
HiveSqlParser.KW_LEFT = 180;
HiveSqlParser.KW_LESS = 181;
HiveSqlParser.KW_LEVEL = 182;
HiveSqlParser.KW_LIFECYCLE = 183;
HiveSqlParser.KW_LIKE = 184;
HiveSqlParser.KW_LIMIT = 185;
HiveSqlParser.KW_LINES = 186;
HiveSqlParser.KW_LOAD = 187;
HiveSqlParser.KW_LOCAL = 188;
HiveSqlParser.KW_LOCATION = 189;
HiveSqlParser.KW_LOCK = 190;
HiveSqlParser.KW_LOCKS = 191;
HiveSqlParser.KW_LOGICAL = 192;
HiveSqlParser.KW_LONG = 193;
HiveSqlParser.KW_MACRO = 194;
HiveSqlParser.KW_MANAGED = 195;
HiveSqlParser.KW_MANAGEDLOCATION = 196;
HiveSqlParser.KW_MANAGEMENT = 197;
HiveSqlParser.KW_MAP = 198;
HiveSqlParser.KW_MAPJOIN = 199;
HiveSqlParser.KW_MAPPING = 200;
HiveSqlParser.KW_MATCHED = 201;
HiveSqlParser.KW_MATERIALIZED = 202;
HiveSqlParser.KW_MERGE = 203;
HiveSqlParser.KW_METADATA = 204;
HiveSqlParser.KW_MINUS = 205;
HiveSqlParser.KW_MINUTE = 206;
HiveSqlParser.KW_MINUTES = 207;
HiveSqlParser.KW_MONTH = 208;
HiveSqlParser.KW_MONTHS = 209;
HiveSqlParser.KW_MORE = 210;
HiveSqlParser.KW_MOVE = 211;
HiveSqlParser.KW_MSCK = 212;
HiveSqlParser.KW_NONE = 213;
HiveSqlParser.KW_NORELY = 214;
HiveSqlParser.KW_NOSCAN = 215;
HiveSqlParser.KW_NOT = 216;
HiveSqlParser.KW_NOVALIDATE = 217;
HiveSqlParser.KW_NO_DROP = 218;
HiveSqlParser.KW_NULL = 219;
HiveSqlParser.KW_NULLS = 220;
HiveSqlParser.KW_OF = 221;
HiveSqlParser.KW_OFFLINE = 222;
HiveSqlParser.KW_OFFSET = 223;
HiveSqlParser.KW_ON = 224;
HiveSqlParser.KW_ONLY = 225;
HiveSqlParser.KW_OPERATOR = 226;
HiveSqlParser.KW_OPTION = 227;
HiveSqlParser.KW_OR = 228;
HiveSqlParser.KW_ORDER = 229;
HiveSqlParser.KW_OUT = 230;
HiveSqlParser.KW_OUTER = 231;
HiveSqlParser.KW_OUTPUTDRIVER = 232;
HiveSqlParser.KW_OUTPUTFORMAT = 233;
HiveSqlParser.KW_OVER = 234;
HiveSqlParser.KW_OVERWRITE = 235;
HiveSqlParser.KW_OWNER = 236;
HiveSqlParser.KW_PARTITION = 237;
HiveSqlParser.KW_PARTITIONED = 238;
HiveSqlParser.KW_PARTITIONS = 239;
HiveSqlParser.KW_PATH = 240;
HiveSqlParser.KW_PERCENT = 241;
HiveSqlParser.KW_PKFK_JOIN = 242;
HiveSqlParser.KW_PLAN = 243;
HiveSqlParser.KW_PLANS = 244;
HiveSqlParser.KW_PLUS = 245;
HiveSqlParser.KW_POOL = 246;
HiveSqlParser.KW_PRECEDING = 247;
HiveSqlParser.KW_PRECISION = 248;
HiveSqlParser.KW_PREPARE = 249;
HiveSqlParser.KW_PRESERVE = 250;
HiveSqlParser.KW_PRIMARY = 251;
HiveSqlParser.KW_PRINCIPALS = 252;
HiveSqlParser.KW_PROCEDURE = 253;
HiveSqlParser.KW_PROTECTION = 254;
HiveSqlParser.KW_PURGE = 255;
HiveSqlParser.KW_QUALIFY = 256;
HiveSqlParser.KW_QUARTER = 257;
HiveSqlParser.KW_QUERY = 258;
HiveSqlParser.KW_QUERY_PARALLELISM = 259;
HiveSqlParser.KW_RANGE = 260;
HiveSqlParser.KW_READ = 261;
HiveSqlParser.KW_READONLY = 262;
HiveSqlParser.KW_READS = 263;
HiveSqlParser.KW_REAL = 264;
HiveSqlParser.KW_REBUILD = 265;
HiveSqlParser.KW_RECORDREADER = 266;
HiveSqlParser.KW_RECORDWRITER = 267;
HiveSqlParser.KW_REDUCE = 268;
HiveSqlParser.KW_REFERENCES = 269;
HiveSqlParser.KW_REGEXP = 270;
HiveSqlParser.KW_RELOAD = 271;
HiveSqlParser.KW_RELY = 272;
HiveSqlParser.KW_REMOTE = 273;
HiveSqlParser.KW_RENAME = 274;
HiveSqlParser.KW_REOPTIMIZATION = 275;
HiveSqlParser.KW_REPAIR = 276;
HiveSqlParser.KW_REPL = 277;
HiveSqlParser.KW_REPLACE = 278;
HiveSqlParser.KW_REPLICATION = 279;
HiveSqlParser.KW_RESOURCE = 280;
HiveSqlParser.KW_RESPECT = 281;
HiveSqlParser.KW_RESTRICT = 282;
HiveSqlParser.KW_REVOKE = 283;
HiveSqlParser.KW_REWRITE = 284;
HiveSqlParser.KW_RIGHT = 285;
HiveSqlParser.KW_RLIKE = 286;
HiveSqlParser.KW_ROLE = 287;
HiveSqlParser.KW_ROLES = 288;
HiveSqlParser.KW_ROLLBACK = 289;
HiveSqlParser.KW_ROLLUP = 290;
HiveSqlParser.KW_ROW = 291;
HiveSqlParser.KW_ROWS = 292;
HiveSqlParser.KW_SCHEDULED = 293;
HiveSqlParser.KW_SCHEDULING_POLICY = 294;
HiveSqlParser.KW_SCHEMA = 295;
HiveSqlParser.KW_SCHEMAS = 296;
HiveSqlParser.KW_SECOND = 297;
HiveSqlParser.KW_SECONDS = 298;
HiveSqlParser.KW_SELECT = 299;
HiveSqlParser.KW_SEMI = 300;
HiveSqlParser.KW_SERDE = 301;
HiveSqlParser.KW_SERDEPROPERTIES = 302;
HiveSqlParser.KW_SERVER = 303;
HiveSqlParser.KW_SET = 304;
HiveSqlParser.KW_SETS = 305;
HiveSqlParser.KW_SET_CURRENT_SNAPSHOT = 306;
HiveSqlParser.KW_SHARED = 307;
HiveSqlParser.KW_SHOW = 308;
HiveSqlParser.KW_SHOW_DATABASE = 309;
HiveSqlParser.KW_SKEWED = 310;
HiveSqlParser.KW_SMALLINT = 311;
HiveSqlParser.KW_SNAPSHOT = 312;
HiveSqlParser.KW_SOME = 313;
HiveSqlParser.KW_SORT = 314;
HiveSqlParser.KW_SORTED = 315;
HiveSqlParser.KW_SPEC = 316;
HiveSqlParser.KW_SSL = 317;
HiveSqlParser.KW_START = 318;
HiveSqlParser.KW_STATISTICS = 319;
HiveSqlParser.KW_STATUS = 320;
HiveSqlParser.KW_STORED = 321;
HiveSqlParser.KW_STREAMTABLE = 322;
HiveSqlParser.KW_STRING = 323;
HiveSqlParser.KW_STRUCT = 324;
HiveSqlParser.KW_SUMMARY = 325;
HiveSqlParser.KW_SYNC = 326;
HiveSqlParser.KW_SYSTEM_TIME = 327;
HiveSqlParser.KW_SYSTEM_VERSION = 328;
HiveSqlParser.KW_TABLE = 329;
HiveSqlParser.KW_TABLES = 330;
HiveSqlParser.KW_TABLESAMPLE = 331;
HiveSqlParser.KW_TBLPROPERTIES = 332;
HiveSqlParser.KW_TEMPORARY = 333;
HiveSqlParser.KW_TERMINATED = 334;
HiveSqlParser.KW_THEN = 335;
HiveSqlParser.KW_TIME = 336;
HiveSqlParser.KW_TIMESTAMP = 337;
HiveSqlParser.KW_TIMESTAMPLOCALTZ = 338;
HiveSqlParser.KW_TIMESTAMPTZ = 339;
HiveSqlParser.KW_TINYINT = 340;
HiveSqlParser.KW_TO = 341;
HiveSqlParser.KW_TOUCH = 342;
HiveSqlParser.KW_TRAILING = 343;
HiveSqlParser.KW_TRANSACTION = 344;
HiveSqlParser.KW_TRANSACTIONAL = 345;
HiveSqlParser.KW_TRANSACTIONS = 346;
HiveSqlParser.KW_TRANSFORM = 347;
HiveSqlParser.KW_TRIGGER = 348;
HiveSqlParser.KW_TRIM = 349;
HiveSqlParser.KW_TRUE = 350;
HiveSqlParser.KW_TRUNCATE = 351;
HiveSqlParser.KW_TYPE = 352;
HiveSqlParser.KW_UNARCHIVE = 353;
HiveSqlParser.KW_UNBOUNDED = 354;
HiveSqlParser.KW_UNDO = 355;
HiveSqlParser.KW_UNION = 356;
HiveSqlParser.KW_UNIONTYPE = 357;
HiveSqlParser.KW_UNIQUE = 358;
HiveSqlParser.KW_UNIQUEJOIN = 359;
HiveSqlParser.KW_UNKNOWN = 360;
HiveSqlParser.KW_UNLOCK = 361;
HiveSqlParser.KW_UNMANAGED = 362;
HiveSqlParser.KW_UNSET = 363;
HiveSqlParser.KW_UNSIGNED = 364;
HiveSqlParser.KW_UPDATE = 365;
HiveSqlParser.KW_URI = 366;
HiveSqlParser.KW_URL = 367;
HiveSqlParser.KW_USE = 368;
HiveSqlParser.KW_USER = 369;
HiveSqlParser.KW_USING = 370;
HiveSqlParser.KW_UTC = 371;
HiveSqlParser.KW_UTCTIMESTAMP = 372;
HiveSqlParser.KW_VALIDATE = 373;
HiveSqlParser.KW_VALUES = 374;
HiveSqlParser.KW_VALUE_TYPE = 375;
HiveSqlParser.KW_VARCHAR = 376;
HiveSqlParser.KW_VECTORIZATION = 377;
HiveSqlParser.KW_VIEW = 378;
HiveSqlParser.KW_VIEWS = 379;
HiveSqlParser.KW_WAIT = 380;
HiveSqlParser.KW_WEEK = 381;
HiveSqlParser.KW_WEEKS = 382;
HiveSqlParser.KW_WHEN = 383;
HiveSqlParser.KW_WHERE = 384;
HiveSqlParser.KW_WHILE = 385;
HiveSqlParser.KW_WINDOW = 386;
HiveSqlParser.KW_WITH = 387;
HiveSqlParser.KW_WITHIN = 388;
HiveSqlParser.KW_WORK = 389;
HiveSqlParser.KW_WORKLOAD = 390;
HiveSqlParser.KW_WRITE = 391;
HiveSqlParser.KW_YEAR = 392;
HiveSqlParser.KW_YEARS = 393;
HiveSqlParser.KW_ZONE = 394;
HiveSqlParser.DOT = 395;
HiveSqlParser.COLON = 396;
HiveSqlParser.COMMA = 397;
HiveSqlParser.SEMICOLON = 398;
HiveSqlParser.LPAREN = 399;
HiveSqlParser.RPAREN = 400;
HiveSqlParser.LSQUARE = 401;
HiveSqlParser.RSQUARE = 402;
HiveSqlParser.LCURLY = 403;
HiveSqlParser.RCURLY = 404;
HiveSqlParser.EQUAL = 405;
HiveSqlParser.EQUAL_NS = 406;
HiveSqlParser.NOTEQUAL = 407;
HiveSqlParser.LESSTHANOREQUALTO = 408;
HiveSqlParser.LESSTHAN = 409;
HiveSqlParser.GREATERTHANOREQUALTO = 410;
HiveSqlParser.GREATERTHAN = 411;
HiveSqlParser.DIVIDE = 412;
HiveSqlParser.PLUS = 413;
HiveSqlParser.MINUS = 414;
HiveSqlParser.STAR = 415;
HiveSqlParser.MOD = 416;
HiveSqlParser.DIV = 417;
HiveSqlParser.BITWISENOT = 418;
HiveSqlParser.AMPERSAND = 419;
HiveSqlParser.TILDE = 420;
HiveSqlParser.BITWISEOR = 421;
HiveSqlParser.CONCATENATE = 422;
HiveSqlParser.BITWISEXOR = 423;
HiveSqlParser.QUESTION = 424;
HiveSqlParser.DOLLAR = 425;
HiveSqlParser.StringLiteral = 426;
HiveSqlParser.CharSetLiteral = 427;
HiveSqlParser.IntegralLiteral = 428;
HiveSqlParser.NumberLiteral = 429;
HiveSqlParser.ByteLengthLiteral = 430;
HiveSqlParser.Number = 431;
HiveSqlParser.Identifier = 432;
HiveSqlParser.CharSetName = 433;
HiveSqlParser.WHITE_SPACE = 434;
HiveSqlParser.LINE_COMMENT = 435;
HiveSqlParser.QUERY_HINT = 436;
HiveSqlParser.SHOW_HINT = 437;
HiveSqlParser.HIDDEN_HINT = 438;
HiveSqlParser.RULE_program = 0;
HiveSqlParser.RULE_statement = 1;
HiveSqlParser.RULE_explainStatement = 2;
HiveSqlParser.RULE_explainOption = 3;
HiveSqlParser.RULE_vectorizationDetail = 4;
HiveSqlParser.RULE_execStatement = 5;
HiveSqlParser.RULE_loadStatement = 6;
HiveSqlParser.RULE_replicationClause = 7;
HiveSqlParser.RULE_exportStatement = 8;
HiveSqlParser.RULE_importStatement = 9;
HiveSqlParser.RULE_replDumpStatement = 10;
HiveSqlParser.RULE_replDbPolicy = 11;
HiveSqlParser.RULE_replLoadStatement = 12;
HiveSqlParser.RULE_replTableLevelPolicy = 13;
HiveSqlParser.RULE_ddlStatement = 14;
HiveSqlParser.RULE_ifExists = 15;
HiveSqlParser.RULE_ifNotExists = 16;
HiveSqlParser.RULE_restrictOrCascade = 17;
HiveSqlParser.RULE_rewriteEnabled = 18;
HiveSqlParser.RULE_rewriteDisabled = 19;
HiveSqlParser.RULE_storedAsDirs = 20;
HiveSqlParser.RULE_createDatabaseStatement = 21;
HiveSqlParser.RULE_dbConnectorName = 22;
HiveSqlParser.RULE_switchDatabaseStatement = 23;
HiveSqlParser.RULE_dropDatabaseStatement = 24;
HiveSqlParser.RULE_databaseComment = 25;
HiveSqlParser.RULE_truncateTableStatement = 26;
HiveSqlParser.RULE_dropTableStatement = 27;
HiveSqlParser.RULE_inputFileFormat = 28;
HiveSqlParser.RULE_tabTypeExpr = 29;
HiveSqlParser.RULE_partTypeExpr = 30;
HiveSqlParser.RULE_tabPartColTypeExpr = 31;
HiveSqlParser.RULE_descStatement = 32;
HiveSqlParser.RULE_analyzeStatement = 33;
HiveSqlParser.RULE_from_in = 34;
HiveSqlParser.RULE_db_schema = 35;
HiveSqlParser.RULE_showStatement = 36;
HiveSqlParser.RULE_showTablesFilterExpr = 37;
HiveSqlParser.RULE_lockStatement = 38;
HiveSqlParser.RULE_lockDatabase = 39;
HiveSqlParser.RULE_lockMode = 40;
HiveSqlParser.RULE_unlockStatement = 41;
HiveSqlParser.RULE_unlockDatabase = 42;
HiveSqlParser.RULE_createRoleStatement = 43;
HiveSqlParser.RULE_dropRoleStatement = 44;
HiveSqlParser.RULE_grantPrivileges = 45;
HiveSqlParser.RULE_revokePrivileges = 46;
HiveSqlParser.RULE_grantRole = 47;
HiveSqlParser.RULE_revokeRole = 48;
HiveSqlParser.RULE_showRoleGrants = 49;
HiveSqlParser.RULE_showRoles = 50;
HiveSqlParser.RULE_showCurrentRole = 51;
HiveSqlParser.RULE_setRole = 52;
HiveSqlParser.RULE_showGrants = 53;
HiveSqlParser.RULE_showRolePrincipals = 54;
HiveSqlParser.RULE_privilegeIncludeColObject = 55;
HiveSqlParser.RULE_privilegeObject = 56;
HiveSqlParser.RULE_privObject = 57;
HiveSqlParser.RULE_privObjectCols = 58;
HiveSqlParser.RULE_privilegeList = 59;
HiveSqlParser.RULE_privilegeDef = 60;
HiveSqlParser.RULE_privilegeType = 61;
HiveSqlParser.RULE_principalSpecification = 62;
HiveSqlParser.RULE_principalName = 63;
HiveSqlParser.RULE_principalAlterName = 64;
HiveSqlParser.RULE_withGrantOption = 65;
HiveSqlParser.RULE_grantOptionFor = 66;
HiveSqlParser.RULE_adminOptionFor = 67;
HiveSqlParser.RULE_withAdminOption = 68;
HiveSqlParser.RULE_metastoreCheck = 69;
HiveSqlParser.RULE_resourceList = 70;
HiveSqlParser.RULE_resource = 71;
HiveSqlParser.RULE_resourceType = 72;
HiveSqlParser.RULE_createFunctionStatement = 73;
HiveSqlParser.RULE_dropFunctionStatement = 74;
HiveSqlParser.RULE_reloadFunctionsStatement = 75;
HiveSqlParser.RULE_createMacroStatement = 76;
HiveSqlParser.RULE_dropMacroStatement = 77;
HiveSqlParser.RULE_createIndexStatement = 78;
HiveSqlParser.RULE_dropIndexStatement = 79;
HiveSqlParser.RULE_createViewStatement = 80;
HiveSqlParser.RULE_viewPartition = 81;
HiveSqlParser.RULE_viewOrganization = 82;
HiveSqlParser.RULE_viewClusterSpec = 83;
HiveSqlParser.RULE_viewComplexSpec = 84;
HiveSqlParser.RULE_viewDistSpec = 85;
HiveSqlParser.RULE_viewSortSpec = 86;
HiveSqlParser.RULE_dropViewStatement = 87;
HiveSqlParser.RULE_createMaterializedViewStatement = 88;
HiveSqlParser.RULE_dropMaterializedViewStatement = 89;
HiveSqlParser.RULE_createScheduledQueryStatement = 90;
HiveSqlParser.RULE_dropScheduledQueryStatement = 91;
HiveSqlParser.RULE_alterScheduledQueryStatement = 92;
HiveSqlParser.RULE_alterScheduledQueryChange = 93;
HiveSqlParser.RULE_scheduleSpec = 94;
HiveSqlParser.RULE_executedAsSpec = 95;
HiveSqlParser.RULE_definedAsSpec = 96;
HiveSqlParser.RULE_showStmtIdentifier = 97;
HiveSqlParser.RULE_tableComment = 98;
HiveSqlParser.RULE_tableLifecycle = 99;
HiveSqlParser.RULE_createTablePartitionSpec = 100;
HiveSqlParser.RULE_createTablePartitionColumnTypeSpec = 101;
HiveSqlParser.RULE_partitionTransformSpec = 102;
HiveSqlParser.RULE_partitionTransformType = 103;
HiveSqlParser.RULE_tableBuckets = 104;
HiveSqlParser.RULE_tableSkewed = 105;
HiveSqlParser.RULE_rowFormat = 106;
HiveSqlParser.RULE_recordReader = 107;
HiveSqlParser.RULE_recordWriter = 108;
HiveSqlParser.RULE_rowFormatSerde = 109;
HiveSqlParser.RULE_rowFormatDelimited = 110;
HiveSqlParser.RULE_tableRowFormat = 111;
HiveSqlParser.RULE_tablePropertiesPrefixed = 112;
HiveSqlParser.RULE_tableProperties = 113;
HiveSqlParser.RULE_tablePropertiesList = 114;
HiveSqlParser.RULE_keyValueProperties = 115;
HiveSqlParser.RULE_keyValuePropertyList = 116;
HiveSqlParser.RULE_keyValueProperty = 117;
HiveSqlParser.RULE_tableRowFormatFieldIdentifier = 118;
HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier = 119;
HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier = 120;
HiveSqlParser.RULE_tableRowFormatLinesIdentifier = 121;
HiveSqlParser.RULE_tableRowNullFormat = 122;
HiveSqlParser.RULE_tableFileFormat = 123;
HiveSqlParser.RULE_columnNameTypeList = 124;
HiveSqlParser.RULE_columnNameTypeOrConstraintList = 125;
HiveSqlParser.RULE_columnNameColonTypeList = 126;
HiveSqlParser.RULE_columnNameList = 127;
HiveSqlParser.RULE_columnName = 128;
HiveSqlParser.RULE_columnNamePath = 129;
HiveSqlParser.RULE_columnNameCreate = 130;
HiveSqlParser.RULE_extColumnName = 131;
HiveSqlParser.RULE_columnNameOrderList = 132;
HiveSqlParser.RULE_columnParenthesesList = 133;
HiveSqlParser.RULE_enableValidateSpecification = 134;
HiveSqlParser.RULE_enableSpecification = 135;
HiveSqlParser.RULE_validateSpecification = 136;
HiveSqlParser.RULE_enforcedSpecification = 137;
HiveSqlParser.RULE_relySpecification = 138;
HiveSqlParser.RULE_createConstraint = 139;
HiveSqlParser.RULE_alterConstraintWithName = 140;
HiveSqlParser.RULE_tableLevelConstraint = 141;
HiveSqlParser.RULE_pkUkConstraint = 142;
HiveSqlParser.RULE_checkConstraint = 143;
HiveSqlParser.RULE_createForeignKey = 144;
HiveSqlParser.RULE_alterForeignKeyWithName = 145;
HiveSqlParser.RULE_skewedValueElement = 146;
HiveSqlParser.RULE_skewedColumnValuePairList = 147;
HiveSqlParser.RULE_skewedColumnValuePair = 148;
HiveSqlParser.RULE_constantList = 149;
HiveSqlParser.RULE_orderSpecification = 150;
HiveSqlParser.RULE_nullOrdering = 151;
HiveSqlParser.RULE_columnNameOrder = 152;
HiveSqlParser.RULE_columnNameCommentList = 153;
HiveSqlParser.RULE_columnNameComment = 154;
HiveSqlParser.RULE_columnRefOrder = 155;
HiveSqlParser.RULE_columnNameType = 156;
HiveSqlParser.RULE_columnNameTypeOrConstraint = 157;
HiveSqlParser.RULE_tableConstraint = 158;
HiveSqlParser.RULE_columnNameTypeConstraint = 159;
HiveSqlParser.RULE_columnConstraint = 160;
HiveSqlParser.RULE_foreignKeyConstraint = 161;
HiveSqlParser.RULE_colConstraint = 162;
HiveSqlParser.RULE_alterColumnConstraint = 163;
HiveSqlParser.RULE_alterForeignKeyConstraint = 164;
HiveSqlParser.RULE_alterColConstraint = 165;
HiveSqlParser.RULE_columnConstraintType = 166;
HiveSqlParser.RULE_defaultVal = 167;
HiveSqlParser.RULE_tableConstraintType = 168;
HiveSqlParser.RULE_constraintOptsCreate = 169;
HiveSqlParser.RULE_constraintOptsAlter = 170;
HiveSqlParser.RULE_columnNameColonType = 171;
HiveSqlParser.RULE_columnType = 172;
HiveSqlParser.RULE_columnTypeList = 173;
HiveSqlParser.RULE_type = 174;
HiveSqlParser.RULE_primitiveType = 175;
HiveSqlParser.RULE_listType = 176;
HiveSqlParser.RULE_structType = 177;
HiveSqlParser.RULE_mapType = 178;
HiveSqlParser.RULE_unionType = 179;
HiveSqlParser.RULE_setOperator = 180;
HiveSqlParser.RULE_queryStatementExpression = 181;
HiveSqlParser.RULE_queryStatementExpressionBody = 182;
HiveSqlParser.RULE_withClause = 183;
HiveSqlParser.RULE_cteStatement = 184;
HiveSqlParser.RULE_fromStatement = 185;
HiveSqlParser.RULE_singleFromStatement = 186;
HiveSqlParser.RULE_regularBody = 187;
HiveSqlParser.RULE_atomSelectStatement = 188;
HiveSqlParser.RULE_selectStatement = 189;
HiveSqlParser.RULE_setOpSelectStatement = 190;
HiveSqlParser.RULE_selectStatementWithCTE = 191;
HiveSqlParser.RULE_insertClause = 192;
HiveSqlParser.RULE_destination = 193;
HiveSqlParser.RULE_limitClause = 194;
HiveSqlParser.RULE_columnAssignmentClause = 195;
HiveSqlParser.RULE_precedencePlusExpressionOrDefault = 196;
HiveSqlParser.RULE_setColumnsClause = 197;
HiveSqlParser.RULE_sqlTransactionStatement = 198;
HiveSqlParser.RULE_transactionMode = 199;
HiveSqlParser.RULE_whenClauses = 200;
HiveSqlParser.RULE_whenNotMatchedClause = 201;
HiveSqlParser.RULE_whenMatchedAndClause = 202;
HiveSqlParser.RULE_whenMatchedThenClause = 203;
HiveSqlParser.RULE_compactionPool = 204;
HiveSqlParser.RULE_compactionType = 205;
HiveSqlParser.RULE_compactionStatus = 206;
HiveSqlParser.RULE_alterStatement = 207;
HiveSqlParser.RULE_alterTableStatementSuffix = 208;
HiveSqlParser.RULE_alterTblPartitionStatementSuffix = 209;
HiveSqlParser.RULE_alterViewStatementSuffix = 210;
HiveSqlParser.RULE_alterDatabaseStatementSuffix = 211;
HiveSqlParser.RULE_alterDataConnectorStatementSuffix = 212;
HiveSqlParser.RULE_locationPath = 213;
HiveSqlParser.RULE_alterStatementSuffixDropPartitions = 214;
HiveSqlParser.RULE_skewedLocationMap = 215;
HiveSqlParser.RULE_alterStatementSuffixExecute = 216;
HiveSqlParser.RULE_fileFormat = 217;
HiveSqlParser.RULE_likeTableOrFile = 218;
HiveSqlParser.RULE_createTableStatement = 219;
HiveSqlParser.RULE_createDataConnectorStatement = 220;
HiveSqlParser.RULE_dropDataConnectorStatement = 221;
HiveSqlParser.RULE_tableAllColumns = 222;
HiveSqlParser.RULE_expressionList = 223;
HiveSqlParser.RULE_aliasList = 224;
HiveSqlParser.RULE_fromClause = 225;
HiveSqlParser.RULE_fromSource = 226;
HiveSqlParser.RULE_atomjoinSource = 227;
HiveSqlParser.RULE_joinSource = 228;
HiveSqlParser.RULE_joinSourcePart = 229;
HiveSqlParser.RULE_uniqueJoinSource = 230;
HiveSqlParser.RULE_joinToken = 231;
HiveSqlParser.RULE_lateralView = 232;
HiveSqlParser.RULE_tableAlias = 233;
HiveSqlParser.RULE_tableSample = 234;
HiveSqlParser.RULE_tableSource = 235;
HiveSqlParser.RULE_asOfClause = 236;
HiveSqlParser.RULE_dbSchemaName = 237;
HiveSqlParser.RULE_dbSchemaNameCreate = 238;
HiveSqlParser.RULE_tableOrView = 239;
HiveSqlParser.RULE_tableName = 240;
HiveSqlParser.RULE_tableNameCreate = 241;
HiveSqlParser.RULE_viewName = 242;
HiveSqlParser.RULE_viewNameCreate = 243;
HiveSqlParser.RULE_subQuerySource = 244;
HiveSqlParser.RULE_partitioningSpec = 245;
HiveSqlParser.RULE_partitionTableFunctionSource = 246;
HiveSqlParser.RULE_partitionedTableFunction = 247;
HiveSqlParser.RULE_whereClause = 248;
HiveSqlParser.RULE_valuesClause = 249;
HiveSqlParser.RULE_virtualTableSource = 250;
HiveSqlParser.RULE_selectClause = 251;
HiveSqlParser.RULE_selectTrfmClause = 252;
HiveSqlParser.RULE_selectItem = 253;
HiveSqlParser.RULE_trfmClause = 254;
HiveSqlParser.RULE_selectExpression = 255;
HiveSqlParser.RULE_selectExpressionList = 256;
HiveSqlParser.RULE_window_clause = 257;
HiveSqlParser.RULE_window_specification = 258;
HiveSqlParser.RULE_window_frame = 259;
HiveSqlParser.RULE_window_frame_boundary = 260;
HiveSqlParser.RULE_groupByClause = 261;
HiveSqlParser.RULE_rollupStandard = 262;
HiveSqlParser.RULE_rollupOldSyntax = 263;
HiveSqlParser.RULE_groupingSetExpression = 264;
HiveSqlParser.RULE_havingClause = 265;
HiveSqlParser.RULE_qualifyClause = 266;
HiveSqlParser.RULE_expressionOrDefault = 267;
HiveSqlParser.RULE_firstExpressionsWithAlias = 268;
HiveSqlParser.RULE_expressions = 269;
HiveSqlParser.RULE_expressionsInParenthesis = 270;
HiveSqlParser.RULE_expressionsNotInParenthesis = 271;
HiveSqlParser.RULE_orderByClause = 272;
HiveSqlParser.RULE_partitionByClause = 273;
HiveSqlParser.RULE_clusterByClause = 274;
HiveSqlParser.RULE_distributeByClause = 275;
HiveSqlParser.RULE_sortByClause = 276;
HiveSqlParser.RULE_function_ = 277;
HiveSqlParser.RULE_null_treatment = 278;
HiveSqlParser.RULE_functionNameCreate = 279;
HiveSqlParser.RULE_functionNameForDDL = 280;
HiveSqlParser.RULE_functionNameForInvoke = 281;
HiveSqlParser.RULE_castExpression = 282;
HiveSqlParser.RULE_caseExpression = 283;
HiveSqlParser.RULE_whenExpression = 284;
HiveSqlParser.RULE_floorExpression = 285;
HiveSqlParser.RULE_extractExpression = 286;
HiveSqlParser.RULE_timeQualifiers = 287;
HiveSqlParser.RULE_constant = 288;
HiveSqlParser.RULE_intervalValue = 289;
HiveSqlParser.RULE_intervalExpression = 290;
HiveSqlParser.RULE_intervalQualifiers = 291;
HiveSqlParser.RULE_expression = 292;
HiveSqlParser.RULE_atomExpression = 293;
HiveSqlParser.RULE_precedenceUnaryPrefixExpression = 294;
HiveSqlParser.RULE_precedenceBitwiseXorExpression = 295;
HiveSqlParser.RULE_precedenceStarExpression = 296;
HiveSqlParser.RULE_precedencePlusExpression = 297;
HiveSqlParser.RULE_precedenceConcatenateExpression = 298;
HiveSqlParser.RULE_precedenceAmpersandExpression = 299;
HiveSqlParser.RULE_precedenceBitwiseOrExpression = 300;
HiveSqlParser.RULE_precedenceSimilarOperator = 301;
HiveSqlParser.RULE_subQueryExpression = 302;
HiveSqlParser.RULE_precedenceSimilarExpression = 303;
HiveSqlParser.RULE_precedenceSimilarExpressionPart = 304;
HiveSqlParser.RULE_precedenceSimilarExpressionAtom = 305;
HiveSqlParser.RULE_precedenceSimilarExpressionIn = 306;
HiveSqlParser.RULE_precedenceSimilarExpressionPartNot = 307;
HiveSqlParser.RULE_precedenceDistinctOperator = 308;
HiveSqlParser.RULE_precedenceEqualOperator = 309;
HiveSqlParser.RULE_precedenceEqualExpression = 310;
HiveSqlParser.RULE_isCondition = 311;
HiveSqlParser.RULE_precedenceNotExpression = 312;
HiveSqlParser.RULE_precedenceAndExpression = 313;
HiveSqlParser.RULE_tableOrPartition = 314;
HiveSqlParser.RULE_partitionSpec = 315;
HiveSqlParser.RULE_partitionVal = 316;
HiveSqlParser.RULE_partitionSelectorSpec = 317;
HiveSqlParser.RULE_partitionSelectorVal = 318;
HiveSqlParser.RULE_subQuerySelectorOperator = 319;
HiveSqlParser.RULE_sysFuncNames = 320;
HiveSqlParser.RULE_id_ = 321;
HiveSqlParser.RULE_functionIdentifier = 322;
HiveSqlParser.RULE_principalIdentifier = 323;
HiveSqlParser.RULE_nonReserved = 324;
HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName = 325;
HiveSqlParser.RULE_configPropertiesItem = 326;
HiveSqlParser.RULE_resourcePlanDdlStatements = 327;
HiveSqlParser.RULE_mappingTypes = 328;
HiveSqlParser.RULE_rpAssign = 329;
HiveSqlParser.RULE_rpAssignList = 330;
HiveSqlParser.RULE_rpUnassign = 331;
HiveSqlParser.RULE_activate = 332;
HiveSqlParser.RULE_enable = 333;
HiveSqlParser.RULE_disable = 334;
HiveSqlParser.RULE_year = 335;
HiveSqlParser.RULE_month = 336;
HiveSqlParser.RULE_week = 337;
HiveSqlParser.RULE_day = 338;
HiveSqlParser.RULE_hour = 339;
HiveSqlParser.RULE_minute = 340;
HiveSqlParser.RULE_second = 341;
HiveSqlParser.RULE_decimal = 342;
HiveSqlParser.RULE_poolPath = 343;
HiveSqlParser.RULE_triggerAtomExpression = 344;
HiveSqlParser.RULE_triggerActionExpression = 345;
HiveSqlParser.RULE_poolAssign = 346;
HiveSqlParser.RULE_poolAssignList = 347;
HiveSqlParser.literalNames = [
    null, "'ABORT'", "'ACTIVATE'", "'ACTIVE'", "'ADD'", "'ADMIN'", "'AFTER'",
    "'ALL'", "'ALLOC_FRACTION'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANTI'",
    "'ANY'", "'APPLICATION'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'",
    "'AST'", "'AT'", "'AUTHORIZATION'", "'AUTOCOMMIT'", "'BATCH'", "'BEFORE'",
    "'BETWEEN'", "'BIGINT'", "'BINARY'", "'BOOLEAN'", "'BOTH'", "'BUCKET'",
    "'BUCKETS'", "'BY'", "'CACHE'", "'CASCADE'", "'CASE'", "'CAST'",
    "'CBO'", "'CHANGE'", "'CHAR'", "'CHECK'", "'CLUSTER'", "'CLUSTERED'",
    "'CLUSTERSTATUS'", "'COLLECTION'", "'COLUMN'", "'COLUMNS'", "'COMMENT'",
    "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", "'COMPACTIONID'", "'COMPUTE'",
    "'CONCATENATE'", "'CONF'", "'CONSTRAINT'", "'CONTINUE'", "'COST'",
    "'CREATE'", "'CRON'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_DATE'",
    "'CURRENT_TIMESTAMP'", "'CURSOR'", "'DATA'", "'DATABASE'", "'DATABASES'",
    "'CONNECTOR'", "'CONNECTORS'", "'DATE'", "'DATETIME'", "'DAY'",
    "'DAYS'", "'DAYOFWEEK'", "'DBPROPERTIES'", "'DCPROPERTIES'", "'DDL'",
    "'DEBUG'", "'DEC'", "'DECIMAL'", "'NUMERIC'", "'DEFAULT'", "'DEFERRED'",
    "'DEFINED'", "'DELETE'", "'DELIMITED'", "'DEPENDENCY'", "'DESC'",
    "'DESCRIBE'", "'DETAIL'", "'DIRECTORIES'", "'DIRECTORY'", "'DISABLE'",
    "'DISABLED'", "'DISTINCT'", "'DISTRIBUTE'", "'DISTRIBUTED'", "'DO'",
    "'DOUBLE'", "'DROP'", "'RECOVER'", "'DUMP'", "'$ELEM$'", "'ELSE'",
    "'ENABLE'", "'ENABLED'", "'END'", "'ENFORCED'", "'ESCAPED'", "'EVERY'",
    "'EXCEPT'", "'EXCHANGE'", "'EXCLUSIVE'", "'EXECUTE'", "'EXECUTED'",
    "'EXISTS'", "'EXPIRE_SNAPSHOTS'", "'EXPLAIN'", "'EXPORT'", "'EXPRESSION'",
    "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FIELDS'",
    "'FILE'", "'FILEFORMAT'", "'FIRST'", "'FLOAT'", "'FLOOR'", "'FOLLOWING'",
    "'FOR'", "'FORCE'", "'FOREIGN'", "'FORMAT'", "'FORMATTED'", "'FROM'",
    "'FULL'", "'FUNCTION'", "'FUNCTIONS'", "'GRANT'", "'GROUP'", "'GROUPING'",
    "'HAVING'", "'HOLD_DDLTIME'", "'HOUR'", "'HOURS'", "'IDXPROPERTIES'",
    "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", "'INDEX'", "'INDEXES'",
    "'INNER'", "'INPATH'", "'INPUTDRIVER'", "'INPUTFORMAT'", "'INSERT'",
    "'INT'", "'INTEGER'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'IS'",
    "'ISOLATION'", "'ITEMS'", "'JAR'", "'JOIN'", "'JOINCOST'", "'KEY'",
    "'KEYS'", "'$KEY$'", "'KILL'", "'LAST'", "'LATERAL'", "'LEADING'",
    "'LEFT'", "'LESS'", "'LEVEL'", "'LIFECYCLE'", "'LIKE'", "'LIMIT'",
    "'LINES'", "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'LOCKS'",
    "'LOGICAL'", "'LONG'", "'MACRO'", "'MANAGED'", "'MANAGEDLOCATION'",
    "'MANAGEMENT'", "'MAP'", "'MAPJOIN'", "'MAPPING'", "'MATCHED'",
    "'MATERIALIZED'", "'MERGE'", "'METADATA'", "'MINUS'", "'MINUTE'",
    "'MINUTES'", "'MONTH'", "'MONTHS'", "'MORE'", "'MOVE'", "'MSCK'",
    "'NONE'", "'NORELY'", "'NOSCAN'", "'NOT'", "'NOVALIDATE'", "'NO_DROP'",
    "'NULL'", "'NULLS'", "'OF'", "'OFFLINE'", "'OFFSET'", "'ON'", "'ONLY'",
    "'OPERATOR'", "'OPTION'", "'OR'", "'ORDER'", "'OUT'", "'OUTER'",
    "'OUTPUTDRIVER'", "'OUTPUTFORMAT'", "'OVER'", "'OVERWRITE'", "'OWNER'",
    "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", "'PATH'", "'PERCENT'",
    "'PKFK_JOIN'", "'PLAN'", "'PLANS'", "'PLUS'", "'POOL'", "'PRECEDING'",
    "'PRECISION'", "'PREPARE'", "'PRESERVE'", "'PRIMARY'", "'PRINCIPALS'",
    "'PROCEDURE'", "'PROTECTION'", "'PURGE'", "'QUALIFY'", "'QUARTER'",
    "'QUERY'", "'QUERY_PARALLELISM'", "'RANGE'", "'READ'", "'READONLY'",
    "'READS'", "'REAL'", "'REBUILD'", "'RECORDREADER'", "'RECORDWRITER'",
    "'REDUCE'", "'REFERENCES'", "'REGEXP'", "'RELOAD'", "'RELY'", "'REMOTE'",
    "'RENAME'", "'REOPTIMIZATION'", "'REPAIR'", "'REPL'", "'REPLACE'",
    "'REPLICATION'", "'RESOURCE'", "'RESPECT'", "'RESTRICT'", "'REVOKE'",
    "'REWRITE'", "'RIGHT'", "'RLIKE'", "'ROLE'", "'ROLES'", "'ROLLBACK'",
    "'ROLLUP'", "'ROW'", "'ROWS'", "'SCHEDULED'", "'SCHEDULING_POLICY'",
    "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECONDS'", "'SELECT'", "'SEMI'",
    "'SERDE'", "'SERDEPROPERTIES'", "'SERVER'", "'SET'", "'SETS'", "'SET_CURRENT_SNAPSHOT'",
    "'SHARED'", "'SHOW'", "'SHOW_DATABASE'", "'SKEWED'", "'SMALLINT'",
    "'SNAPSHOT'", "'SOME'", "'SORT'", "'SORTED'", "'SPEC'", "'SSL'",
    "'START'", "'STATISTICS'", "'STATUS'", "'STORED'", "'STREAMTABLE'",
    "'STRING'", "'STRUCT'", "'SUMMARY'", "'SYNC'", "'SYSTEM_TIME'",
    "'SYSTEM_VERSION'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'",
    "'TEMPORARY'", "'TERMINATED'", "'THEN'", "'TIME'", "'TIMESTAMP'",
    "'TIMESTAMPLOCALTZ'", "'TIMESTAMPTZ'", "'TINYINT'", "'TO'", "'TOUCH'",
    "'TRAILING'", "'TRANSACTION'", "'TRANSACTIONAL'", "'TRANSACTIONS'",
    "'TRANSFORM'", "'TRIGGER'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'",
    "'UNARCHIVE'", "'UNBOUNDED'", "'UNDO'", "'UNION'", "'UNIONTYPE'",
    "'UNIQUE'", "'UNIQUEJOIN'", "'UNKNOWN'", "'UNLOCK'", "'UNMANAGED'",
    "'UNSET'", "'UNSIGNED'", "'UPDATE'", "'URI'", "'URL'", "'USE'",
    "'USER'", "'USING'", "'UTC'", "'UTC_TMESTAMP'", "'VALIDATE'", "'VALUES'",
    "'$VALUE$'", "'VARCHAR'", "'VECTORIZATION'", "'VIEW'", "'VIEWS'",
    "'WAIT'", "'WEEK'", "'WEEKS'", "'WHEN'", "'WHERE'", "'WHILE'", "'WINDOW'",
    "'WITH'", "'WITHIN'", "'WORK'", "'WORKLOAD'", "'WRITE'", "'YEAR'",
    "'YEARS'", "'ZONE'", "'.'", "':'", "','", "';'", "'('", "')'", "'['",
    "']'", "'{'", "'}'", null, "'<=>'", null, "'<='", "'<'", "'>='",
    "'>'", "'/'", "'+'", "'-'", "'*'", "'%'", "'DIV'", "'!'", "'&'",
    "'~'", "'|'", "'||'", "'^'", "'?'", "'$'"
];
HiveSqlParser.symbolicNames = [
    null, "KW_ABORT", "KW_ACTIVATE", "KW_ACTIVE", "KW_ADD", "KW_ADMIN",
    "KW_AFTER", "KW_ALL", "KW_ALLOC_FRACTION", "KW_ALTER", "KW_ANALYZE",
    "KW_AND", "KW_ANTI", "KW_ANY", "KW_APPLICATION", "KW_ARCHIVE", "KW_ARRAY",
    "KW_AS", "KW_ASC", "KW_AST", "KW_AT", "KW_AUTHORIZATION", "KW_AUTOCOMMIT",
    "KW_BATCH", "KW_BEFORE", "KW_BETWEEN", "KW_BIGINT", "KW_BINARY",
    "KW_BOOLEAN", "KW_BOTH", "KW_BUCKET", "KW_BUCKETS", "KW_BY", "KW_CACHE",
    "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CBO", "KW_CHANGE", "KW_CHAR",
    "KW_CHECK", "KW_CLUSTER", "KW_CLUSTERED", "KW_CLUSTERSTATUS", "KW_COLLECTION",
    "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMPACT",
    "KW_COMPACTIONS", "KW_COMPACT_ID", "KW_COMPUTE", "KW_CONCATENATE",
    "KW_CONF", "KW_CONSTRAINT", "KW_CONTINUE", "KW_COST", "KW_CREATE",
    "KW_CRON", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_DATE",
    "KW_CURRENT_TIMESTAMP", "KW_CURSOR", "KW_DATA", "KW_DATABASE", "KW_DATABASES",
    "KW_DATACONNECTOR", "KW_DATACONNECTORS", "KW_DATE", "KW_DATETIME",
    "KW_DAY", "KW_DAYS", "KW_DAYOFWEEK", "KW_DBPROPERTIES", "KW_DCPROPERTIES",
    "KW_DDL", "KW_DEBUG", "KW_DEC", "KW_DECIMAL", "KW_NUMERIC", "KW_DEFAULT",
    "KW_DEFERRED", "KW_DEFINED", "KW_DELETE", "KW_DELIMITED", "KW_DEPENDENCY",
    "KW_DESC", "KW_DESCRIBE", "KW_DETAIL", "KW_DIRECTORIES", "KW_DIRECTORY",
    "KW_DISABLE", "KW_DISABLED", "KW_DISTINCT", "KW_DISTRIBUTE", "KW_DISTRIBUTED",
    "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_RECOVER", "KW_DUMP", "KW_ELEM_TYPE",
    "KW_ELSE", "KW_ENABLE", "KW_ENABLED", "KW_END", "KW_ENFORCED", "KW_ESCAPED",
    "KW_EVERY", "KW_EXCEPT", "KW_EXCHANGE", "KW_EXCLUSIVE", "KW_EXECUTE",
    "KW_EXECUTED", "KW_EXISTS", "KW_EXPIRE_SNAPSHOTS", "KW_EXPLAIN",
    "KW_EXPORT", "KW_EXPRESSION", "KW_EXTENDED", "KW_EXTERNAL", "KW_EXTRACT",
    "KW_FALSE", "KW_FETCH", "KW_FIELDS", "KW_FILE", "KW_FILEFORMAT",
    "KW_FIRST", "KW_FLOAT", "KW_FLOOR", "KW_FOLLOWING", "KW_FOR", "KW_FORCE",
    "KW_FOREIGN", "KW_FORMAT", "KW_FORMATTED", "KW_FROM", "KW_FULL",
    "KW_FUNCTION", "KW_FUNCTIONS", "KW_GRANT", "KW_GROUP", "KW_GROUPING",
    "KW_HAVING", "KW_HOLD_DDLTIME", "KW_HOUR", "KW_HOURS", "KW_IDXPROPERTIES",
    "KW_IF", "KW_IGNORE", "KW_IMPORT", "KW_IN", "KW_INDEX", "KW_INDEXES",
    "KW_INNER", "KW_INPATH", "KW_INPUTDRIVER", "KW_INPUTFORMAT", "KW_INSERT",
    "KW_INT", "KW_INTEGER", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO",
    "KW_IS", "KW_ISOLATION", "KW_ITEMS", "KW_JAR", "KW_JOIN", "KW_JOINCOST",
    "KW_KEY", "KW_KEYS", "KW_KEY_TYPE", "KW_KILL", "KW_LAST", "KW_LATERAL",
    "KW_LEADING", "KW_LEFT", "KW_LESS", "KW_LEVEL", "KW_LIFECYCLE",
    "KW_LIKE", "KW_LIMIT", "KW_LINES", "KW_LOAD", "KW_LOCAL", "KW_LOCATION",
    "KW_LOCK", "KW_LOCKS", "KW_LOGICAL", "KW_LONG", "KW_MACRO", "KW_MANAGED",
    "KW_MANAGEDLOCATION", "KW_MANAGEMENT", "KW_MAP", "KW_MAPJOIN", "KW_MAPPING",
    "KW_MATCHED", "KW_MATERIALIZED", "KW_MERGE", "KW_METADATA", "KW_MINUS",
    "KW_MINUTE", "KW_MINUTES", "KW_MONTH", "KW_MONTHS", "KW_MORE", "KW_MOVE",
    "KW_MSCK", "KW_NONE", "KW_NORELY", "KW_NOSCAN", "KW_NOT", "KW_NOVALIDATE",
    "KW_NO_DROP", "KW_NULL", "KW_NULLS", "KW_OF", "KW_OFFLINE", "KW_OFFSET",
    "KW_ON", "KW_ONLY", "KW_OPERATOR", "KW_OPTION", "KW_OR", "KW_ORDER",
    "KW_OUT", "KW_OUTER", "KW_OUTPUTDRIVER", "KW_OUTPUTFORMAT", "KW_OVER",
    "KW_OVERWRITE", "KW_OWNER", "KW_PARTITION", "KW_PARTITIONED", "KW_PARTITIONS",
    "KW_PATH", "KW_PERCENT", "KW_PKFK_JOIN", "KW_PLAN", "KW_PLANS",
    "KW_PLUS", "KW_POOL", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE",
    "KW_PRESERVE", "KW_PRIMARY", "KW_PRINCIPALS", "KW_PROCEDURE", "KW_PROTECTION",
    "KW_PURGE", "KW_QUALIFY", "KW_QUARTER", "KW_QUERY", "KW_QUERY_PARALLELISM",
    "KW_RANGE", "KW_READ", "KW_READONLY", "KW_READS", "KW_REAL", "KW_REBUILD",
    "KW_RECORDREADER", "KW_RECORDWRITER", "KW_REDUCE", "KW_REFERENCES",
    "KW_REGEXP", "KW_RELOAD", "KW_RELY", "KW_REMOTE", "KW_RENAME", "KW_REOPTIMIZATION",
    "KW_REPAIR", "KW_REPL", "KW_REPLACE", "KW_REPLICATION", "KW_RESOURCE",
    "KW_RESPECT", "KW_RESTRICT", "KW_REVOKE", "KW_REWRITE", "KW_RIGHT",
    "KW_RLIKE", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", "KW_ROLLUP", "KW_ROW",
    "KW_ROWS", "KW_SCHEDULED", "KW_SCHEDULING_POLICY", "KW_SCHEMA",
    "KW_SCHEMAS", "KW_SECOND", "KW_SECONDS", "KW_SELECT", "KW_SEMI",
    "KW_SERDE", "KW_SERDEPROPERTIES", "KW_SERVER", "KW_SET", "KW_SETS",
    "KW_SET_CURRENT_SNAPSHOT", "KW_SHARED", "KW_SHOW", "KW_SHOW_DATABASE",
    "KW_SKEWED", "KW_SMALLINT", "KW_SNAPSHOT", "KW_SOME", "KW_SORT",
    "KW_SORTED", "KW_SPEC", "KW_SSL", "KW_START", "KW_STATISTICS", "KW_STATUS",
    "KW_STORED", "KW_STREAMTABLE", "KW_STRING", "KW_STRUCT", "KW_SUMMARY",
    "KW_SYNC", "KW_SYSTEM_TIME", "KW_SYSTEM_VERSION", "KW_TABLE", "KW_TABLES",
    "KW_TABLESAMPLE", "KW_TBLPROPERTIES", "KW_TEMPORARY", "KW_TERMINATED",
    "KW_THEN", "KW_TIME", "KW_TIMESTAMP", "KW_TIMESTAMPLOCALTZ", "KW_TIMESTAMPTZ",
    "KW_TINYINT", "KW_TO", "KW_TOUCH", "KW_TRAILING", "KW_TRANSACTION",
    "KW_TRANSACTIONAL", "KW_TRANSACTIONS", "KW_TRANSFORM", "KW_TRIGGER",
    "KW_TRIM", "KW_TRUE", "KW_TRUNCATE", "KW_TYPE", "KW_UNARCHIVE",
    "KW_UNBOUNDED", "KW_UNDO", "KW_UNION", "KW_UNIONTYPE", "KW_UNIQUE",
    "KW_UNIQUEJOIN", "KW_UNKNOWN", "KW_UNLOCK", "KW_UNMANAGED", "KW_UNSET",
    "KW_UNSIGNED", "KW_UPDATE", "KW_URI", "KW_URL", "KW_USE", "KW_USER",
    "KW_USING", "KW_UTC", "KW_UTCTIMESTAMP", "KW_VALIDATE", "KW_VALUES",
    "KW_VALUE_TYPE", "KW_VARCHAR", "KW_VECTORIZATION", "KW_VIEW", "KW_VIEWS",
    "KW_WAIT", "KW_WEEK", "KW_WEEKS", "KW_WHEN", "KW_WHERE", "KW_WHILE",
    "KW_WINDOW", "KW_WITH", "KW_WITHIN", "KW_WORK", "KW_WORKLOAD", "KW_WRITE",
    "KW_YEAR", "KW_YEARS", "KW_ZONE", "DOT", "COLON", "COMMA", "SEMICOLON",
    "LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURLY", "RCURLY", "EQUAL",
    "EQUAL_NS", "NOTEQUAL", "LESSTHANOREQUALTO", "LESSTHAN", "GREATERTHANOREQUALTO",
    "GREATERTHAN", "DIVIDE", "PLUS", "MINUS", "STAR", "MOD", "DIV",
    "BITWISENOT", "AMPERSAND", "TILDE", "BITWISEOR", "CONCATENATE",
    "BITWISEXOR", "QUESTION", "DOLLAR", "StringLiteral", "CharSetLiteral",
    "IntegralLiteral", "NumberLiteral", "ByteLengthLiteral", "Number",
    "Identifier", "CharSetName", "WHITE_SPACE", "LINE_COMMENT", "QUERY_HINT",
    "SHOW_HINT", "HIDDEN_HINT"
];
HiveSqlParser.ruleNames = [
    "program", "statement", "explainStatement", "explainOption", "vectorizationDetail",
    "execStatement", "loadStatement", "replicationClause", "exportStatement",
    "importStatement", "replDumpStatement", "replDbPolicy", "replLoadStatement",
    "replTableLevelPolicy", "ddlStatement", "ifExists", "ifNotExists",
    "restrictOrCascade", "rewriteEnabled", "rewriteDisabled", "storedAsDirs",
    "createDatabaseStatement", "dbConnectorName", "switchDatabaseStatement",
    "dropDatabaseStatement", "databaseComment", "truncateTableStatement",
    "dropTableStatement", "inputFileFormat", "tabTypeExpr", "partTypeExpr",
    "tabPartColTypeExpr", "descStatement", "analyzeStatement", "from_in",
    "db_schema", "showStatement", "showTablesFilterExpr", "lockStatement",
    "lockDatabase", "lockMode", "unlockStatement", "unlockDatabase",
    "createRoleStatement", "dropRoleStatement", "grantPrivileges", "revokePrivileges",
    "grantRole", "revokeRole", "showRoleGrants", "showRoles", "showCurrentRole",
    "setRole", "showGrants", "showRolePrincipals", "privilegeIncludeColObject",
    "privilegeObject", "privObject", "privObjectCols", "privilegeList",
    "privilegeDef", "privilegeType", "principalSpecification", "principalName",
    "principalAlterName", "withGrantOption", "grantOptionFor", "adminOptionFor",
    "withAdminOption", "metastoreCheck", "resourceList", "resource",
    "resourceType", "createFunctionStatement", "dropFunctionStatement",
    "reloadFunctionsStatement", "createMacroStatement", "dropMacroStatement",
    "createIndexStatement", "dropIndexStatement", "createViewStatement",
    "viewPartition", "viewOrganization", "viewClusterSpec", "viewComplexSpec",
    "viewDistSpec", "viewSortSpec", "dropViewStatement", "createMaterializedViewStatement",
    "dropMaterializedViewStatement", "createScheduledQueryStatement",
    "dropScheduledQueryStatement", "alterScheduledQueryStatement", "alterScheduledQueryChange",
    "scheduleSpec", "executedAsSpec", "definedAsSpec", "showStmtIdentifier",
    "tableComment", "tableLifecycle", "createTablePartitionSpec", "createTablePartitionColumnTypeSpec",
    "partitionTransformSpec", "partitionTransformType", "tableBuckets",
    "tableSkewed", "rowFormat", "recordReader", "recordWriter", "rowFormatSerde",
    "rowFormatDelimited", "tableRowFormat", "tablePropertiesPrefixed",
    "tableProperties", "tablePropertiesList", "keyValueProperties",
    "keyValuePropertyList", "keyValueProperty", "tableRowFormatFieldIdentifier",
    "tableRowFormatCollItemsIdentifier", "tableRowFormatMapKeysIdentifier",
    "tableRowFormatLinesIdentifier", "tableRowNullFormat", "tableFileFormat",
    "columnNameTypeList", "columnNameTypeOrConstraintList", "columnNameColonTypeList",
    "columnNameList", "columnName", "columnNamePath", "columnNameCreate",
    "extColumnName", "columnNameOrderList", "columnParenthesesList",
    "enableValidateSpecification", "enableSpecification", "validateSpecification",
    "enforcedSpecification", "relySpecification", "createConstraint",
    "alterConstraintWithName", "tableLevelConstraint", "pkUkConstraint",
    "checkConstraint", "createForeignKey", "alterForeignKeyWithName",
    "skewedValueElement", "skewedColumnValuePairList", "skewedColumnValuePair",
    "constantList", "orderSpecification", "nullOrdering", "columnNameOrder",
    "columnNameCommentList", "columnNameComment", "columnRefOrder",
    "columnNameType", "columnNameTypeOrConstraint", "tableConstraint",
    "columnNameTypeConstraint", "columnConstraint", "foreignKeyConstraint",
    "colConstraint", "alterColumnConstraint", "alterForeignKeyConstraint",
    "alterColConstraint", "columnConstraintType", "defaultVal", "tableConstraintType",
    "constraintOptsCreate", "constraintOptsAlter", "columnNameColonType",
    "columnType", "columnTypeList", "type", "primitiveType", "listType",
    "structType", "mapType", "unionType", "setOperator", "queryStatementExpression",
    "queryStatementExpressionBody", "withClause", "cteStatement", "fromStatement",
    "singleFromStatement", "regularBody", "atomSelectStatement", "selectStatement",
    "setOpSelectStatement", "selectStatementWithCTE", "insertClause",
    "destination", "limitClause", "columnAssignmentClause", "precedencePlusExpressionOrDefault",
    "setColumnsClause", "sqlTransactionStatement", "transactionMode",
    "whenClauses", "whenNotMatchedClause", "whenMatchedAndClause", "whenMatchedThenClause",
    "compactionPool", "compactionType", "compactionStatus", "alterStatement",
    "alterTableStatementSuffix", "alterTblPartitionStatementSuffix",
    "alterViewStatementSuffix", "alterDatabaseStatementSuffix", "alterDataConnectorStatementSuffix",
    "locationPath", "alterStatementSuffixDropPartitions", "skewedLocationMap",
    "alterStatementSuffixExecute", "fileFormat", "likeTableOrFile",
    "createTableStatement", "createDataConnectorStatement", "dropDataConnectorStatement",
    "tableAllColumns", "expressionList", "aliasList", "fromClause",
    "fromSource", "atomjoinSource", "joinSource", "joinSourcePart",
    "uniqueJoinSource", "joinToken", "lateralView", "tableAlias", "tableSample",
    "tableSource", "asOfClause", "dbSchemaName", "dbSchemaNameCreate",
    "tableOrView", "tableName", "tableNameCreate", "viewName", "viewNameCreate",
    "subQuerySource", "partitioningSpec", "partitionTableFunctionSource",
    "partitionedTableFunction", "whereClause", "valuesClause", "virtualTableSource",
    "selectClause", "selectTrfmClause", "selectItem", "trfmClause",
    "selectExpression", "selectExpressionList", "window_clause", "window_specification",
    "window_frame", "window_frame_boundary", "groupByClause", "rollupStandard",
    "rollupOldSyntax", "groupingSetExpression", "havingClause", "qualifyClause",
    "expressionOrDefault", "firstExpressionsWithAlias", "expressions",
    "expressionsInParenthesis", "expressionsNotInParenthesis", "orderByClause",
    "partitionByClause", "clusterByClause", "distributeByClause", "sortByClause",
    "function_", "null_treatment", "functionNameCreate", "functionNameForDDL",
    "functionNameForInvoke", "castExpression", "caseExpression", "whenExpression",
    "floorExpression", "extractExpression", "timeQualifiers", "constant",
    "intervalValue", "intervalExpression", "intervalQualifiers", "expression",
    "atomExpression", "precedenceUnaryPrefixExpression", "precedenceBitwiseXorExpression",
    "precedenceStarExpression", "precedencePlusExpression", "precedenceConcatenateExpression",
    "precedenceAmpersandExpression", "precedenceBitwiseOrExpression",
    "precedenceSimilarOperator", "subQueryExpression", "precedenceSimilarExpression",
    "precedenceSimilarExpressionPart", "precedenceSimilarExpressionAtom",
    "precedenceSimilarExpressionIn", "precedenceSimilarExpressionPartNot",
    "precedenceDistinctOperator", "precedenceEqualOperator", "precedenceEqualExpression",
    "isCondition", "precedenceNotExpression", "precedenceAndExpression",
    "tableOrPartition", "partitionSpec", "partitionVal", "partitionSelectorSpec",
    "partitionSelectorVal", "subQuerySelectorOperator", "sysFuncNames",
    "id_", "functionIdentifier", "principalIdentifier", "nonReserved",
    "sql11ReservedKeywordsUsedAsFunctionName", "configPropertiesItem",
    "resourcePlanDdlStatements", "mappingTypes", "rpAssign", "rpAssignList",
    "rpUnassign", "activate", "enable", "disable", "year", "month",
    "week", "day", "hour", "minute", "second", "decimal", "poolPath",
    "triggerAtomExpression", "triggerActionExpression", "poolAssign",
    "poolAssignList",
];
HiveSqlParser._serializedATN = [
    4, 1, 438, 4809, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6,
    7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7,
    13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2,
    20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7,
    26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2,
    33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7,
    39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2,
    46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7,
    52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2,
    59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7,
    65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2,
    72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7,
    78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2,
    85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7,
    91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2,
    98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103,
    2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109,
    7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114,
    2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120,
    7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125,
    2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131,
    7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136,
    2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142,
    7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147,
    2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153,
    7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158,
    2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164,
    7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169,
    2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175,
    7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180,
    2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186,
    7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191,
    2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197,
    7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202,
    2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208,
    7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213,
    2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219,
    7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224,
    2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230,
    7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235,
    2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241,
    7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246,
    2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252,
    7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257,
    2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263,
    7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268,
    2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274,
    7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279,
    2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285,
    7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290,
    2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296,
    7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301,
    2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307,
    7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312,
    2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318,
    7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323,
    2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329,
    7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334,
    2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340,
    7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345,
    2, 346, 7, 346, 2, 347, 7, 347, 1, 0, 5, 0, 698, 8, 0, 10, 0, 12, 0, 701, 9, 0, 1, 0, 1,
    0, 1, 1, 1, 1, 3, 1, 707, 8, 1, 1, 1, 3, 1, 710, 8, 1, 1, 2, 1, 2, 5, 2, 714, 8, 2, 10, 2, 12,
    2, 717, 9, 2, 1, 2, 1, 2, 1, 2, 3, 2, 722, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 729, 8,
    3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 739, 8, 3, 1, 3, 3, 3, 742, 8, 3, 1,
    3, 1, 3, 3, 3, 746, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1,
    5, 1, 5, 3, 5, 761, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 768, 8, 5, 1, 5, 1, 5, 1, 5, 1,
    5, 3, 5, 774, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 779, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 784, 8, 5, 1,
    5, 3, 5, 787, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1,
    5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 809, 8, 5, 10, 5, 12, 5, 812, 9, 5, 1, 5,
    1, 5, 5, 5, 816, 8, 5, 10, 5, 12, 5, 819, 9, 5, 3, 5, 821, 8, 5, 1, 6, 1, 6, 1, 6, 3, 6, 826,
    8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 831, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 837, 8, 6, 1, 7, 1, 7,
    3, 7, 841, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 854,
    8, 8, 1, 9, 1, 9, 3, 9, 858, 8, 9, 1, 9, 1, 9, 3, 9, 862, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 867,
    8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 874, 8, 10, 1, 10, 1, 10, 3, 10, 878, 8,
    10, 1, 11, 1, 11, 1, 11, 3, 11, 883, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 890,
    8, 12, 1, 12, 1, 12, 3, 12, 894, 8, 12, 1, 13, 1, 13, 1, 13, 3, 13, 899, 8, 13, 1, 14, 1,
    14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1,
    14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1,
    14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1,
    14, 1, 14, 1, 14, 1, 14, 4, 14, 945, 8, 14, 11, 14, 12, 14, 946, 1, 14, 1, 14, 1, 14, 4,
    14, 952, 8, 14, 11, 14, 12, 14, 953, 1, 14, 1, 14, 1, 14, 3, 14, 959, 8, 14, 1, 15, 1,
    15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1,
    19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 982, 8, 21, 1, 21, 1, 21, 3, 21, 986,
    8, 21, 1, 21, 1, 21, 3, 21, 990, 8, 21, 1, 21, 3, 21, 993, 8, 21, 1, 21, 1, 21, 3, 21, 997,
    8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1002, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1008,
    8, 21, 1, 21, 1, 21, 3, 21, 1012, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1018, 8, 21,
    3, 21, 1020, 8, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 3, 24,
    1031, 8, 24, 1, 24, 1, 24, 3, 24, 1035, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26,
    1042, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1050, 8, 26, 1, 26, 3, 26,
    1053, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 1058, 8, 27, 1, 27, 1, 27, 3, 27, 1062, 8, 27,
    1, 27, 3, 27, 1065, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29,
    1075, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 1083, 8, 29, 5, 29, 1085,
    8, 29, 10, 29, 12, 29, 1088, 9, 29, 3, 29, 1090, 8, 29, 1, 30, 1, 30, 3, 30, 1094, 8,
    30, 1, 31, 1, 31, 3, 31, 1098, 8, 31, 1, 31, 3, 31, 1101, 8, 31, 1, 32, 1, 32, 1, 32, 3,
    32, 1106, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1112, 8, 32, 1, 32, 1, 32, 1, 32, 3,
    32, 1117, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1122, 8, 32, 1, 32, 1, 32, 3, 32, 1126, 8,
    32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1137, 8, 33, 3,
    33, 1139, 8, 33, 1, 33, 1, 33, 3, 33, 1143, 8, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1,
    36, 1, 36, 1, 36, 3, 36, 1153, 8, 36, 1, 36, 1, 36, 3, 36, 1157, 8, 36, 1, 36, 1, 36, 1,
    36, 1, 36, 3, 36, 1163, 8, 36, 1, 36, 3, 36, 1166, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1,
    36, 3, 36, 1173, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1178, 8, 36, 1, 36, 1, 36, 1, 36, 1,
    36, 1, 36, 1, 36, 3, 36, 1186, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1191, 8, 36, 1, 36, 1,
    36, 3, 36, 1195, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1203, 8, 36, 1,
    36, 1, 36, 1, 36, 3, 36, 1208, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1214, 8, 36, 1,
    36, 1, 36, 1, 36, 1, 36, 3, 36, 1220, 8, 36, 1, 36, 3, 36, 1223, 8, 36, 1, 36, 3, 36, 1226,
    8, 36, 1, 36, 3, 36, 1229, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36,
    1238, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1246, 8, 36, 1, 36, 1, 36,
    1, 36, 3, 36, 1251, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1259, 8, 36,
    1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1266, 8, 36, 1, 36, 3, 36, 1269, 8, 36, 1, 36,
    3, 36, 1272, 8, 36, 3, 36, 1274, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
    1, 36, 1, 36, 3, 36, 1285, 8, 36, 3, 36, 1287, 8, 36, 1, 36, 3, 36, 1290, 8, 36, 1, 36,
    3, 36, 1293, 8, 36, 1, 36, 3, 36, 1296, 8, 36, 1, 36, 3, 36, 1299, 8, 36, 1, 36, 3, 36,
    1302, 8, 36, 3, 36, 1304, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
    1, 36, 1, 36, 3, 36, 1316, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1322, 8, 36, 1, 36,
    1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1330, 8, 36, 3, 36, 1332, 8, 36, 1, 37, 1, 37,
    1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1342, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38,
    1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42,
    1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45,
    1, 45, 3, 45, 1375, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1380, 8, 45, 1, 46, 1, 46, 3, 46,
    1384, 8, 46, 1, 46, 1, 46, 3, 46, 1388, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47,
    1395, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1400, 8, 47, 10, 47, 12, 47, 1403, 9, 47, 1,
    47, 1, 47, 1, 47, 3, 47, 1408, 8, 47, 1, 48, 1, 48, 3, 48, 1412, 8, 48, 1, 48, 3, 48, 1415,
    8, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1420, 8, 48, 10, 48, 12, 48, 1423, 9, 48, 1, 48, 1,
    48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1,
    51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1445, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1450,
    8, 53, 1, 53, 1, 53, 3, 53, 1454, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55,
    1462, 8, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1471, 8, 57, 1, 57,
    1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1478, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1484,
    8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1491, 8, 58, 1, 58, 3, 58, 1494, 8, 58,
    1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1500, 8, 58, 1, 59, 1, 59, 1, 59, 5, 59, 1505, 8, 59,
    10, 59, 12, 59, 1508, 9, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1515, 8, 60, 1,
    61, 1, 61, 1, 62, 1, 62, 1, 62, 5, 62, 1522, 8, 62, 10, 62, 12, 62, 1525, 9, 62, 1, 63,
    1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1533, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64,
    3, 64, 1540, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67,
    1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1560, 8, 69, 1, 69, 1, 69,
    1, 69, 1, 69, 1, 69, 3, 69, 1567, 8, 69, 3, 69, 1569, 8, 69, 1, 70, 1, 70, 1, 70, 5, 70,
    1574, 8, 70, 10, 70, 12, 70, 1577, 9, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1,
    73, 3, 73, 1586, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1594, 8, 73, 1,
    74, 1, 74, 3, 74, 1598, 8, 74, 1, 74, 1, 74, 3, 74, 1602, 8, 74, 1, 74, 1, 74, 1, 75, 1,
    75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 1615, 8, 76, 1, 76, 1, 76, 1,
    76, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1624, 8, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1,
    78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1640, 8, 78, 1, 78, 1,
    78, 3, 78, 1644, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1649, 8, 78, 1, 78, 1, 78, 1, 78, 3,
    78, 1654, 8, 78, 1, 78, 3, 78, 1657, 8, 78, 1, 78, 3, 78, 1660, 8, 78, 1, 78, 3, 78, 1663,
    8, 78, 1, 78, 3, 78, 1666, 8, 78, 1, 78, 3, 78, 1669, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79,
    1674, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 3, 80, 1683, 8, 80, 1, 80,
    1, 80, 3, 80, 1687, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1694, 8, 80, 1, 80,
    3, 80, 1697, 8, 80, 1, 80, 3, 80, 1700, 8, 80, 1, 80, 3, 80, 1703, 8, 80, 1, 80, 1, 80,
    1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1715, 8, 81, 1, 81, 1, 81,
    1, 82, 1, 82, 3, 82, 1721, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84,
    1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86,
    1, 87, 1, 87, 1, 87, 3, 87, 1747, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88,
    1755, 8, 88, 1, 88, 1, 88, 3, 88, 1759, 8, 88, 1, 88, 3, 88, 1762, 8, 88, 1, 88, 3, 88,
    1765, 8, 88, 1, 88, 3, 88, 1768, 8, 88, 1, 88, 3, 88, 1771, 8, 88, 1, 88, 3, 88, 1774,
    8, 88, 1, 88, 3, 88, 1777, 8, 88, 1, 88, 3, 88, 1780, 8, 88, 1, 88, 1, 88, 1, 88, 1, 89,
    1, 89, 1, 89, 1, 89, 3, 89, 1789, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90,
    1, 90, 3, 90, 1799, 8, 90, 1, 90, 3, 90, 1802, 8, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91,
    1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93,
    3, 93, 1822, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1828, 8, 94, 1, 94, 1, 94, 1, 94,
    1, 94, 3, 94, 1834, 8, 94, 1, 94, 3, 94, 1837, 8, 94, 3, 94, 1839, 8, 94, 1, 95, 1, 95,
    1, 95, 1, 95, 1, 96, 3, 96, 1846, 8, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 3, 97, 1853,
    8, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100,
    3, 100, 1866, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1871, 8, 100, 1, 100, 1, 100,
    1, 101, 1, 101, 1, 101, 5, 101, 1878, 8, 101, 10, 101, 12, 101, 1881, 9, 101, 1, 102,
    1, 102, 1, 102, 5, 102, 1886, 8, 102, 10, 102, 12, 102, 1889, 9, 102, 1, 103, 1, 103,
    1, 103, 1, 103, 1, 103, 3, 103, 1896, 8, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103,
    1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1909, 8, 103, 1, 104, 1, 104,
    1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1922,
    8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105,
    1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1938, 8, 105, 1, 106, 1, 106, 3, 106, 1942,
    8, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109,
    1, 109, 1, 109, 1, 109, 3, 109, 1957, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110,
    1963, 8, 110, 1, 110, 3, 110, 1966, 8, 110, 1, 110, 3, 110, 1969, 8, 110, 1, 110, 3,
    110, 1972, 8, 110, 1, 110, 3, 110, 1975, 8, 110, 1, 111, 1, 111, 3, 111, 1979, 8, 111,
    1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114,
    5, 114, 1992, 8, 114, 10, 114, 12, 114, 1995, 9, 114, 3, 114, 1997, 8, 114, 1, 115,
    1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 2006, 8, 116, 10, 116, 12, 116,
    2009, 9, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118,
    1, 118, 1, 118, 3, 118, 2022, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119,
    1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121,
    1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123,
    1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2056, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123,
    1, 123, 1, 123, 3, 123, 2064, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2069, 8, 123,
    1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2077, 8, 123, 1, 123, 1, 123,
    1, 123, 3, 123, 2082, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2087, 8, 123, 1, 124,
    1, 124, 1, 124, 5, 124, 2092, 8, 124, 10, 124, 12, 124, 2095, 9, 124, 1, 125, 1, 125,
    1, 125, 5, 125, 2100, 8, 125, 10, 125, 12, 125, 2103, 9, 125, 1, 126, 1, 126, 1, 126,
    5, 126, 2108, 8, 126, 10, 126, 12, 126, 2111, 9, 126, 1, 127, 1, 127, 1, 127, 5, 127,
    2116, 8, 127, 10, 127, 12, 127, 2119, 9, 127, 1, 128, 1, 128, 3, 128, 2123, 8, 128,
    1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131,
    2135, 8, 131, 5, 131, 2137, 8, 131, 10, 131, 12, 131, 2140, 9, 131, 1, 132, 1, 132,
    1, 132, 5, 132, 2145, 8, 132, 10, 132, 12, 132, 2148, 9, 132, 1, 133, 1, 133, 1, 133,
    1, 133, 1, 134, 1, 134, 3, 134, 2156, 8, 134, 1, 134, 3, 134, 2159, 8, 134, 1, 135,
    1, 135, 3, 135, 2163, 8, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 3, 137, 2170,
    8, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 2176, 8, 139, 1, 139, 1, 139, 3, 139,
    2180, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2186, 8, 140, 1, 141, 1, 141,
    3, 141, 2190, 8, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143,
    1, 144, 1, 144, 3, 144, 2202, 8, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144,
    1, 144, 3, 144, 2211, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145,
    1, 145, 1, 145, 3, 145, 2222, 8, 145, 1, 146, 1, 146, 3, 146, 2226, 8, 146, 1, 147,
    1, 147, 1, 147, 5, 147, 2231, 8, 147, 10, 147, 12, 147, 2234, 9, 147, 1, 148, 1, 148,
    1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 5, 149, 2243, 8, 149, 10, 149, 12, 149, 2246,
    9, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 3, 152, 2255, 8, 152,
    1, 152, 3, 152, 2258, 8, 152, 1, 153, 1, 153, 1, 153, 5, 153, 2263, 8, 153, 10, 153,
    12, 153, 2266, 9, 153, 1, 154, 1, 154, 1, 154, 3, 154, 2271, 8, 154, 1, 155, 1, 155,
    3, 155, 2275, 8, 155, 1, 155, 3, 155, 2278, 8, 155, 1, 155, 3, 155, 2281, 8, 155, 1,
    156, 1, 156, 1, 156, 1, 156, 3, 156, 2287, 8, 156, 1, 157, 1, 157, 3, 157, 2291, 8,
    157, 1, 158, 1, 158, 3, 158, 2295, 8, 158, 1, 159, 1, 159, 1, 159, 3, 159, 2300, 8,
    159, 1, 159, 1, 159, 3, 159, 2304, 8, 159, 1, 160, 1, 160, 3, 160, 2308, 8, 160, 1,
    161, 1, 161, 3, 161, 2312, 8, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3,
    161, 2320, 8, 161, 1, 162, 1, 162, 3, 162, 2324, 8, 162, 1, 162, 1, 162, 3, 162, 2328,
    8, 162, 1, 163, 1, 163, 3, 163, 2332, 8, 163, 1, 164, 1, 164, 3, 164, 2336, 8, 164,
    1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2344, 8, 164, 1, 165, 1, 165,
    3, 165, 2348, 8, 165, 1, 165, 1, 165, 3, 165, 2352, 8, 165, 1, 166, 1, 166, 1, 166,
    1, 166, 1, 166, 1, 166, 3, 166, 2360, 8, 166, 1, 167, 1, 167, 1, 167, 3, 167, 2365,
    8, 167, 1, 168, 1, 168, 1, 168, 3, 168, 2370, 8, 168, 1, 169, 1, 169, 3, 169, 2374,
    8, 169, 1, 170, 1, 170, 3, 170, 2378, 8, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171,
    3, 171, 2385, 8, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 5, 173, 2392, 8, 173,
    10, 173, 12, 173, 2395, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2402,
    8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175,
    3, 175, 2414, 8, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175,
    1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2432, 8, 175,
    1, 175, 3, 175, 2435, 8, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2441, 8, 175,
    1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178,
    1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179,
    1, 180, 1, 180, 3, 180, 2467, 8, 180, 1, 181, 3, 181, 2470, 8, 181, 1, 181, 1, 181,
    1, 182, 1, 182, 3, 182, 2476, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 5, 183, 2482,
    8, 183, 10, 183, 12, 183, 2485, 9, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 3, 184,
    2492, 8, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185,
    5, 185, 2503, 8, 185, 10, 185, 12, 185, 2506, 9, 185, 1, 186, 1, 186, 1, 186, 1, 186,
    3, 186, 2512, 8, 186, 1, 186, 3, 186, 2515, 8, 186, 1, 186, 3, 186, 2518, 8, 186, 1,
    186, 3, 186, 2521, 8, 186, 1, 186, 3, 186, 2524, 8, 186, 1, 186, 3, 186, 2527, 8, 186,
    1, 186, 3, 186, 2530, 8, 186, 1, 186, 3, 186, 2533, 8, 186, 1, 186, 3, 186, 2536, 8,
    186, 1, 186, 3, 186, 2539, 8, 186, 1, 186, 3, 186, 2542, 8, 186, 1, 186, 1, 186, 1,
    186, 3, 186, 2547, 8, 186, 1, 186, 3, 186, 2550, 8, 186, 1, 186, 3, 186, 2553, 8, 186,
    1, 186, 3, 186, 2556, 8, 186, 1, 186, 3, 186, 2559, 8, 186, 1, 186, 3, 186, 2562, 8,
    186, 1, 186, 3, 186, 2565, 8, 186, 1, 186, 3, 186, 2568, 8, 186, 1, 186, 3, 186, 2571,
    8, 186, 1, 186, 3, 186, 2574, 8, 186, 1, 186, 3, 186, 2577, 8, 186, 3, 186, 2579, 8,
    186, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2585, 8, 187, 1, 188, 1, 188, 3, 188, 2589,
    8, 188, 1, 188, 3, 188, 2592, 8, 188, 1, 188, 3, 188, 2595, 8, 188, 1, 188, 3, 188,
    2598, 8, 188, 1, 188, 3, 188, 2601, 8, 188, 1, 188, 3, 188, 2604, 8, 188, 1, 188, 1,
    188, 1, 188, 1, 188, 1, 188, 3, 188, 2611, 8, 188, 1, 189, 1, 189, 3, 189, 2615, 8,
    189, 1, 189, 3, 189, 2618, 8, 189, 1, 189, 3, 189, 2621, 8, 189, 1, 189, 3, 189, 2624,
    8, 189, 1, 189, 3, 189, 2627, 8, 189, 1, 189, 3, 189, 2630, 8, 189, 1, 190, 1, 190,
    1, 190, 4, 190, 2635, 8, 190, 11, 190, 12, 190, 2636, 1, 191, 3, 191, 2640, 8, 191,
    1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2648, 8, 192, 1, 192, 1, 192,
    3, 192, 2652, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2659, 8, 192,
    3, 192, 2661, 8, 192, 1, 193, 3, 193, 2664, 8, 193, 1, 193, 1, 193, 1, 193, 3, 193,
    2669, 8, 193, 1, 193, 3, 193, 2672, 8, 193, 1, 193, 1, 193, 3, 193, 2676, 8, 193, 1,
    194, 1, 194, 1, 194, 3, 194, 2681, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 2687,
    8, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 3, 196, 2695, 8, 196, 1, 197,
    1, 197, 1, 197, 1, 197, 5, 197, 2701, 8, 197, 10, 197, 12, 197, 2704, 9, 197, 1, 198,
    1, 198, 1, 198, 1, 198, 1, 198, 5, 198, 2711, 8, 198, 10, 198, 12, 198, 2714, 9, 198,
    3, 198, 2716, 8, 198, 1, 198, 1, 198, 3, 198, 2720, 8, 198, 1, 198, 1, 198, 3, 198,
    2724, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2729, 8, 198, 1, 199, 1, 199, 1, 199,
    1, 199, 1, 199, 3, 199, 2736, 8, 199, 1, 200, 1, 200, 5, 200, 2740, 8, 200, 10, 200,
    12, 200, 2743, 9, 200, 1, 200, 3, 200, 2746, 8, 200, 1, 201, 1, 201, 1, 201, 1, 201,
    1, 201, 3, 201, 2753, 8, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2758, 8, 201, 1, 201,
    1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202,
    2771, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2779, 8, 203,
    1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207,
    1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2798, 8, 207, 1, 207, 1, 207,
    1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2808, 8, 207, 1, 207, 1, 207,
    1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2821,
    8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2831,
    8, 208, 1, 208, 1, 208, 3, 208, 2835, 8, 208, 4, 208, 2837, 8, 208, 11, 208, 12, 208,
    2838, 1, 208, 1, 208, 5, 208, 2843, 8, 208, 10, 208, 12, 208, 2846, 9, 208, 1, 208,
    1, 208, 5, 208, 2850, 8, 208, 10, 208, 12, 208, 2853, 9, 208, 1, 208, 1, 208, 5, 208,
    2857, 8, 208, 10, 208, 12, 208, 2860, 9, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208,
    1, 208, 3, 208, 2868, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2875,
    8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208,
    1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2895, 8, 208,
    1, 208, 3, 208, 2898, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208,
    1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2912, 8, 208, 1, 209, 1, 209, 1, 209,
    1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209,
    2927, 8, 209, 1, 209, 1, 209, 3, 209, 2931, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209,
    1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209,
    1, 209, 5, 209, 2949, 8, 209, 10, 209, 12, 209, 2952, 9, 209, 1, 209, 1, 209, 1, 209,
    1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2963, 8, 209, 1, 209, 1, 209,
    1, 209, 1, 209, 3, 209, 2969, 8, 209, 1, 209, 3, 209, 2972, 8, 209, 1, 209, 3, 209,
    2975, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2981, 8, 209, 1, 209, 1, 209,
    1, 209, 1, 209, 3, 209, 2987, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209,
    2994, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3002, 8, 209,
    1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3008, 8, 209, 1, 209, 1, 209, 3, 209, 3012,
    8, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3017, 8, 209, 1, 209, 3, 209, 3020, 8, 209,
    1, 209, 1, 209, 3, 209, 3024, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209,
    3031, 8, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3036, 8, 209, 1, 209, 1, 209, 1, 209,
    3, 209, 3041, 8, 209, 1, 209, 3, 209, 3044, 8, 209, 3, 209, 3046, 8, 209, 1, 210, 1,
    210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 3054, 8, 210, 1, 210, 1, 210, 1, 210, 1,
    210, 1, 210, 1, 210, 3, 210, 3062, 8, 210, 1, 210, 1, 210, 3, 210, 3066, 8, 210, 4,
    210, 3068, 8, 210, 11, 210, 12, 210, 3069, 1, 210, 1, 210, 3, 210, 3074, 8, 210, 1,
    211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211,
    1, 211, 1, 211, 1, 211, 1, 211, 3, 211, 3091, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212,
    1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212,
    3, 212, 3108, 8, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 3, 214, 3115, 8, 214,
    1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 3122, 8, 214, 10, 214, 12, 214, 3125,
    9, 214, 1, 214, 1, 214, 3, 214, 3129, 8, 214, 1, 214, 3, 214, 3132, 8, 214, 1, 214,
    3, 214, 3135, 8, 214, 1, 215, 1, 215, 3, 215, 3139, 8, 215, 1, 215, 1, 215, 1, 215,
    1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216,
    3154, 8, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217,
    1, 217, 1, 217, 1, 217, 3, 217, 3168, 8, 217, 1, 217, 3, 217, 3171, 8, 217, 1, 218,
    1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 3182, 8, 218,
    1, 219, 1, 219, 3, 219, 3186, 8, 219, 1, 219, 3, 219, 3189, 8, 219, 1, 219, 3, 219,
    3192, 8, 219, 1, 219, 1, 219, 3, 219, 3196, 8, 219, 1, 219, 1, 219, 1, 219, 3, 219,
    3201, 8, 219, 1, 219, 3, 219, 3204, 8, 219, 1, 219, 3, 219, 3207, 8, 219, 1, 219, 3,
    219, 3210, 8, 219, 1, 219, 3, 219, 3213, 8, 219, 1, 219, 3, 219, 3216, 8, 219, 1, 219,
    1, 219, 1, 219, 1, 219, 3, 219, 3222, 8, 219, 1, 219, 3, 219, 3225, 8, 219, 1, 219,
    3, 219, 3228, 8, 219, 1, 219, 3, 219, 3231, 8, 219, 1, 219, 3, 219, 3234, 8, 219, 1,
    219, 3, 219, 3237, 8, 219, 1, 219, 3, 219, 3240, 8, 219, 1, 219, 3, 219, 3243, 8, 219,
    1, 219, 3, 219, 3246, 8, 219, 1, 219, 3, 219, 3249, 8, 219, 1, 219, 1, 219, 3, 219,
    3253, 8, 219, 3, 219, 3255, 8, 219, 1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 3261, 8,
    219, 1, 219, 1, 219, 1, 219, 3, 219, 3266, 8, 219, 1, 219, 3, 219, 3269, 8, 219, 1,
    219, 3, 219, 3272, 8, 219, 1, 219, 3, 219, 3275, 8, 219, 1, 219, 3, 219, 3278, 8, 219,
    1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 3284, 8, 219, 1, 219, 3, 219, 3287, 8, 219,
    1, 219, 3, 219, 3290, 8, 219, 1, 219, 3, 219, 3293, 8, 219, 1, 219, 3, 219, 3296, 8,
    219, 1, 219, 3, 219, 3299, 8, 219, 1, 219, 3, 219, 3302, 8, 219, 1, 219, 3, 219, 3305,
    8, 219, 1, 219, 3, 219, 3308, 8, 219, 1, 219, 3, 219, 3311, 8, 219, 1, 219, 1, 219,
    3, 219, 3315, 8, 219, 3, 219, 3317, 8, 219, 3, 219, 3319, 8, 219, 1, 220, 1, 220, 1,
    220, 3, 220, 3324, 8, 220, 1, 220, 1, 220, 1, 220, 3, 220, 3329, 8, 220, 1, 220, 1,
    220, 3, 220, 3333, 8, 220, 1, 220, 1, 220, 3, 220, 3337, 8, 220, 1, 220, 1, 220, 1,
    220, 3, 220, 3342, 8, 220, 1, 221, 1, 221, 1, 221, 3, 221, 3347, 8, 221, 1, 221, 1,
    221, 1, 222, 1, 222, 1, 222, 5, 222, 3354, 8, 222, 10, 222, 12, 222, 3357, 9, 222,
    1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 5, 223, 3364, 8, 223, 10, 223, 12, 223, 3367,
    9, 223, 1, 224, 1, 224, 1, 224, 5, 224, 3372, 8, 224, 10, 224, 12, 224, 3375, 9, 224,
    1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 4, 226, 3384, 8, 226, 11, 226,
    12, 226, 3385, 1, 226, 3, 226, 3389, 8, 226, 1, 227, 1, 227, 5, 227, 3393, 8, 227,
    10, 227, 12, 227, 3396, 9, 227, 1, 227, 1, 227, 5, 227, 3400, 8, 227, 10, 227, 12,
    227, 3403, 9, 227, 1, 227, 1, 227, 5, 227, 3407, 8, 227, 10, 227, 12, 227, 3410, 9,
    227, 1, 227, 1, 227, 5, 227, 3414, 8, 227, 10, 227, 12, 227, 3417, 9, 227, 1, 227,
    1, 227, 1, 227, 1, 227, 3, 227, 3423, 8, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228,
    1, 228, 1, 228, 3, 228, 3432, 8, 228, 5, 228, 3434, 8, 228, 10, 228, 12, 228, 3437,
    9, 228, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 3443, 8, 229, 1, 229, 5, 229, 3446,
    8, 229, 10, 229, 12, 229, 3449, 9, 229, 1, 230, 3, 230, 3452, 8, 230, 1, 230, 1, 230,
    3, 230, 3456, 8, 230, 1, 230, 3, 230, 3459, 8, 230, 1, 230, 3, 230, 3462, 8, 230, 1,
    230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 3473, 8,
    231, 1, 231, 1, 231, 3, 231, 3477, 8, 231, 3, 231, 3479, 8, 231, 1, 231, 3, 231, 3482,
    8, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 5, 232,
    3493, 8, 232, 10, 232, 12, 232, 3496, 9, 232, 3, 232, 3498, 8, 232, 1, 232, 3, 232,
    3501, 8, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 5, 232,
    3511, 8, 232, 10, 232, 12, 232, 3514, 9, 232, 3, 232, 3516, 8, 232, 1, 232, 1, 232,
    1, 232, 1, 232, 1, 232, 3, 232, 3523, 8, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232,
    5, 232, 3530, 8, 232, 10, 232, 12, 232, 3533, 9, 232, 1, 232, 1, 232, 3, 232, 3537,
    8, 232, 3, 232, 3539, 8, 232, 3, 232, 3541, 8, 232, 1, 233, 1, 233, 1, 234, 1, 234,
    1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 5, 234, 3556,
    8, 234, 10, 234, 12, 234, 3559, 9, 234, 3, 234, 3561, 8, 234, 1, 234, 1, 234, 1, 234,
    1, 234, 1, 234, 1, 234, 3, 234, 3569, 8, 234, 1, 234, 3, 234, 3572, 8, 234, 1, 235,
    1, 235, 3, 235, 3576, 8, 235, 1, 235, 3, 235, 3579, 8, 235, 1, 235, 3, 235, 3582, 8,
    235, 1, 235, 3, 235, 3585, 8, 235, 1, 235, 3, 235, 3588, 8, 235, 1, 236, 1, 236, 1,
    236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 3600, 8, 236, 1,
    237, 1, 237, 1, 238, 1, 238, 1, 239, 1, 239, 3, 239, 3608, 8, 239, 1, 240, 1, 240, 1,
    240, 1, 240, 1, 240, 3, 240, 3615, 8, 240, 1, 240, 3, 240, 3618, 8, 240, 1, 241, 1,
    241, 1, 241, 1, 241, 1, 241, 3, 241, 3625, 8, 241, 1, 241, 3, 241, 3628, 8, 241, 1,
    242, 1, 242, 1, 242, 3, 242, 3633, 8, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 3,
    243, 3640, 8, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 3, 244, 3648, 8,
    244, 1, 244, 1, 244, 1, 245, 1, 245, 3, 245, 3654, 8, 245, 1, 245, 1, 245, 1, 245, 3,
    245, 3659, 8, 245, 1, 245, 1, 245, 3, 245, 3663, 8, 245, 1, 246, 1, 246, 1, 246, 3,
    246, 3668, 8, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 3675, 8, 247, 1,
    247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 5, 247,
    3687, 8, 247, 10, 247, 12, 247, 3690, 9, 247, 3, 247, 3692, 8, 247, 1, 247, 1, 247,
    3, 247, 3696, 8, 247, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 5, 249,
    3705, 8, 249, 10, 249, 12, 249, 3708, 9, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249,
    5, 249, 3715, 8, 249, 10, 249, 12, 249, 3718, 9, 249, 3, 249, 3720, 8, 249, 1, 250,
    1, 250, 1, 250, 1, 250, 1, 250, 3, 250, 3727, 8, 250, 1, 250, 1, 250, 1, 250, 1, 250,
    1, 250, 5, 250, 3734, 8, 250, 10, 250, 12, 250, 3737, 9, 250, 3, 250, 3739, 8, 250,
    1, 250, 1, 250, 1, 251, 1, 251, 3, 251, 3745, 8, 251, 1, 251, 3, 251, 3748, 8, 251,
    1, 251, 1, 251, 1, 251, 5, 251, 3753, 8, 251, 10, 251, 12, 251, 3756, 9, 251, 1, 251,
    1, 251, 3, 251, 3760, 8, 251, 1, 251, 3, 251, 3763, 8, 251, 1, 252, 1, 252, 1, 252,
    1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 3776, 8, 252,
    1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 3782, 8, 252, 3, 252, 3784, 8, 252, 1, 252,
    1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 3, 253, 3792, 8, 253, 1, 253, 3, 253, 3795,
    8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 5, 253, 3803, 8, 253, 10, 253,
    12, 253, 3806, 9, 253, 1, 253, 1, 253, 3, 253, 3810, 8, 253, 3, 253, 3812, 8, 253,
    1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254,
    3824, 8, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254, 3830, 8, 254, 3, 254, 3832, 8,
    254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 3, 255, 3839, 8, 255, 1, 256, 1, 256, 1,
    256, 5, 256, 3844, 8, 256, 10, 256, 12, 256, 3847, 9, 256, 1, 257, 1, 257, 1, 257,
    1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 5, 257, 3858, 8, 257, 10, 257, 12, 257,
    3861, 9, 257, 1, 258, 1, 258, 1, 258, 3, 258, 3866, 8, 258, 1, 258, 3, 258, 3869, 8,
    258, 1, 258, 3, 258, 3872, 8, 258, 1, 258, 3, 258, 3875, 8, 258, 1, 259, 1, 259, 1,
    259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 3884, 8, 259, 1, 259, 1, 259, 1, 259, 1,
    259, 1, 259, 3, 259, 3891, 8, 259, 1, 260, 1, 260, 1, 260, 1, 260, 3, 260, 3897, 8,
    260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 3906, 8, 261, 1,
    262, 1, 262, 3, 262, 3910, 8, 262, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 3916, 8,
    262, 10, 262, 12, 262, 3919, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263,
    1, 263, 3, 263, 3928, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 5, 263,
    3936, 8, 263, 10, 263, 12, 263, 3939, 9, 263, 1, 263, 1, 263, 3, 263, 3943, 8, 263,
    1, 264, 1, 264, 3, 264, 3947, 8, 264, 1, 264, 1, 264, 5, 264, 3951, 8, 264, 10, 264,
    12, 264, 3954, 9, 264, 1, 264, 1, 264, 3, 264, 3958, 8, 264, 1, 265, 1, 265, 1, 265,
    1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 3, 267, 3968, 8, 267, 1, 268, 1, 268, 3, 268,
    3972, 8, 268, 1, 268, 3, 268, 3975, 8, 268, 1, 268, 1, 268, 1, 268, 3, 268, 3980, 8,
    268, 1, 268, 3, 268, 3983, 8, 268, 5, 268, 3985, 8, 268, 10, 268, 12, 268, 3988, 9,
    268, 1, 269, 1, 269, 3, 269, 3992, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1,
    271, 1, 271, 4, 271, 4001, 8, 271, 11, 271, 12, 271, 4002, 3, 271, 4005, 8, 271, 1,
    272, 1, 272, 1, 272, 1, 272, 1, 272, 5, 272, 4012, 8, 272, 10, 272, 12, 272, 4015,
    9, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275,
    1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4035, 8, 276,
    10, 276, 12, 276, 4038, 9, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4045,
    8, 276, 10, 276, 12, 276, 4048, 9, 276, 3, 276, 4050, 8, 276, 1, 277, 1, 277, 1, 277,
    1, 277, 1, 277, 3, 277, 4057, 8, 277, 1, 277, 3, 277, 4060, 8, 277, 1, 277, 1, 277,
    1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 4070, 8, 277, 1, 277, 1, 277,
    1, 277, 5, 277, 4075, 8, 277, 10, 277, 12, 277, 4078, 9, 277, 3, 277, 4080, 8, 277,
    3, 277, 4082, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277,
    1, 277, 3, 277, 4093, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277,
    1, 277, 3, 277, 4103, 8, 277, 3, 277, 4105, 8, 277, 1, 278, 1, 278, 1, 278, 1, 279,
    1, 279, 1, 280, 1, 280, 3, 280, 4114, 8, 280, 1, 281, 1, 281, 1, 281, 3, 281, 4119,
    8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 4128, 8, 282,
    1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 4, 283, 4139,
    8, 283, 11, 283, 12, 283, 4140, 1, 283, 1, 283, 3, 283, 4145, 8, 283, 1, 283, 1, 283,
    1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 4, 284, 4155, 8, 284, 11, 284, 12, 284,
    4156, 1, 284, 1, 284, 3, 284, 4161, 8, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285,
    1, 285, 1, 285, 3, 285, 4170, 8, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286,
    1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287,
    3, 287, 4189, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288,
    1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 5, 288, 4205, 8, 288, 10, 288, 12, 288,
    4208, 9, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288,
    3, 288, 4219, 8, 288, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290,
    1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 4234, 8, 290, 1, 290, 1, 290, 3, 290,
    4238, 8, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291,
    1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 3, 291, 4254, 8, 291, 1, 292, 1, 292, 1, 292,
    5, 292, 4259, 8, 292, 10, 292, 12, 292, 4262, 9, 292, 1, 293, 1, 293, 1, 293, 1, 293,
    1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 3, 293, 4275, 8, 293, 1, 294,
    5, 294, 4278, 8, 294, 10, 294, 12, 294, 4281, 9, 294, 1, 294, 1, 294, 1, 294, 1, 294,
    1, 294, 1, 294, 1, 294, 5, 294, 4290, 8, 294, 10, 294, 12, 294, 4293, 9, 294, 1, 295,
    1, 295, 1, 295, 5, 295, 4298, 8, 295, 10, 295, 12, 295, 4301, 9, 295, 1, 296, 1, 296,
    1, 296, 5, 296, 4306, 8, 296, 10, 296, 12, 296, 4309, 9, 296, 1, 297, 1, 297, 1, 297,
    5, 297, 4314, 8, 297, 10, 297, 12, 297, 4317, 9, 297, 1, 298, 1, 298, 1, 298, 5, 298,
    4322, 8, 298, 10, 298, 12, 298, 4325, 9, 298, 1, 299, 1, 299, 1, 299, 5, 299, 4330,
    8, 299, 10, 299, 12, 299, 4333, 9, 299, 1, 300, 1, 300, 1, 300, 5, 300, 4338, 8, 300,
    10, 300, 12, 300, 4341, 9, 300, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303,
    1, 303, 3, 303, 4351, 8, 303, 1, 303, 1, 303, 3, 303, 4355, 8, 303, 1, 304, 1, 304,
    1, 304, 1, 304, 1, 304, 1, 304, 3, 304, 4363, 8, 304, 1, 305, 1, 305, 1, 305, 1, 305,
    1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305,
    4379, 8, 305, 1, 306, 1, 306, 3, 306, 4383, 8, 306, 1, 307, 1, 307, 1, 307, 3, 307,
    4388, 8, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309,
    1, 309, 1, 309, 3, 309, 4401, 8, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310,
    1, 310, 5, 310, 4410, 8, 310, 10, 310, 12, 310, 4413, 9, 310, 1, 311, 1, 311, 1, 311,
    1, 311, 1, 311, 1, 311, 3, 311, 4421, 8, 311, 1, 312, 5, 312, 4424, 8, 312, 10, 312,
    12, 312, 4427, 9, 312, 1, 312, 1, 312, 1, 312, 3, 312, 4432, 8, 312, 1, 313, 1, 313,
    1, 313, 5, 313, 4437, 8, 313, 10, 313, 12, 313, 4440, 9, 313, 1, 314, 1, 314, 3, 314,
    4444, 8, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 5, 315, 4451, 8, 315, 10, 315,
    12, 315, 4454, 9, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 3, 316, 4461, 8, 316,
    1, 317, 1, 317, 1, 317, 1, 317, 5, 317, 4467, 8, 317, 10, 317, 12, 317, 4470, 9, 317,
    1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 3, 318, 4477, 8, 318, 1, 318, 1, 318, 1, 319,
    1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 3, 321, 4487, 8, 321, 1, 322, 1, 322, 1, 322,
    3, 322, 4492, 8, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 326, 1, 326,
    1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326,
    1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326,
    1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326,
    1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326,
    1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 4551, 8, 326, 1, 327, 1, 327, 1, 327,
    1, 327, 3, 327, 4557, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    3, 327, 4566, 8, 327, 3, 327, 4568, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 4582, 8, 327, 10, 327,
    12, 327, 4585, 9, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 4592, 8, 327,
    1, 327, 1, 327, 3, 327, 4596, 8, 327, 3, 327, 4598, 8, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 3, 327, 4604, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 4609, 8, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 3, 327, 4626, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 4652, 8, 327,
    1, 327, 1, 327, 1, 327, 3, 327, 4657, 8, 327, 3, 327, 4659, 8, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 3, 327, 4687, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 4704,
    8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 4709, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327,
    1, 327, 1, 327, 1, 327, 3, 327, 4718, 8, 327, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329,
    1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 4729, 8, 329, 1, 330, 1, 330, 1, 330, 5, 330,
    4734, 8, 330, 10, 330, 12, 330, 4737, 9, 330, 1, 331, 1, 331, 1, 331, 3, 331, 4742,
    8, 331, 1, 332, 1, 332, 1, 332, 3, 332, 4747, 8, 332, 1, 333, 1, 333, 1, 334, 1, 334,
    1, 335, 1, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 339, 1, 339, 1, 340,
    1, 340, 1, 341, 1, 341, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 5, 343, 4772, 8, 343,
    10, 343, 12, 343, 4775, 9, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345,
    1, 345, 3, 345, 4785, 8, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346,
    1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 3, 346, 4799, 8, 346, 1, 347, 1, 347, 1, 347,
    5, 347, 4804, 8, 347, 10, 347, 12, 347, 4807, 9, 347, 1, 347, 1, 817, 0, 348, 0, 2,
    4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
    50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92,
    94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126,
    128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158,
    160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190,
    192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222,
    224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254,
    256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286,
    288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318,
    320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350,
    352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382,
    384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414,
    416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446,
    448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478,
    480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510,
    512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542,
    544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574,
    576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606,
    608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638,
    640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670,
    672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 0, 61, 2, 0, 57, 57, 172,
    172, 4, 0, 91, 91, 121, 121, 226, 226, 325, 325, 1, 0, 395, 396, 2, 0, 50, 50, 346,
    346, 2, 0, 34, 34, 282, 282, 1, 0, 89, 90, 2, 0, 139, 139, 154, 154, 2, 0, 67, 67, 295,
    295, 2, 0, 68, 68, 296, 296, 1, 0, 155, 156, 2, 0, 114, 114, 307, 307, 11, 0, 7, 7, 9,
    9, 58, 58, 86, 86, 101, 101, 155, 155, 161, 161, 190, 190, 299, 299, 309, 309, 365,
    365, 3, 0, 4, 4, 101, 101, 326, 326, 3, 0, 15, 15, 128, 128, 170, 170, 1, 0, 141, 142,
    2, 0, 30, 30, 351, 351, 2, 0, 217, 217, 373, 373, 2, 0, 214, 214, 272, 272, 2, 0, 18,
    18, 89, 89, 2, 0, 130, 130, 177, 177, 2, 0, 39, 39, 376, 376, 4, 0, 112, 112, 164, 164,
    205, 205, 356, 356, 2, 0, 7, 7, 96, 96, 2, 0, 125, 125, 350, 350, 2, 0, 225, 225, 391,
    391, 2, 0, 42, 42, 315, 315, 2, 0, 189, 189, 196, 196, 2, 0, 426, 426, 431, 431, 2,
    0, 140, 140, 285, 285, 3, 0, 12, 12, 231, 231, 300, 300, 2, 0, 241, 241, 292, 292,
    2, 0, 198, 198, 268, 268, 2, 0, 260, 260, 292, 292, 2, 0, 354, 354, 431, 431, 2, 0,
    133, 133, 247, 247, 2, 0, 152, 152, 281, 281, 3, 0, 413, 414, 418, 418, 420, 420,
    2, 0, 412, 412, 415, 417, 1, 0, 413, 414, 4, 0, 184, 184, 270, 270, 286, 286, 408,
    411, 2, 0, 7, 7, 13, 13, 3, 0, 7, 7, 13, 13, 313, 313, 3, 0, 184, 184, 270, 270, 286,
    286, 4, 0, 125, 125, 219, 219, 350, 350, 360, 360, 2, 0, 405, 405, 407, 411, 24, 0,
    11, 11, 16, 16, 25, 28, 35, 35, 100, 100, 131, 132, 151, 151, 154, 154, 162, 163,
    184, 184, 198, 198, 216, 216, 228, 228, 264, 264, 270, 270, 286, 286, 311, 311,
    323, 324, 340, 340, 357, 357, 383, 383, 405, 417, 419, 421, 423, 423, 85, 0, 1, 6,
    8, 8, 10, 10, 15, 15, 18, 20, 22, 24, 30, 31, 33, 34, 37, 38, 40, 44, 46, 47, 49, 50,
    52, 53, 56, 57, 59, 59, 66, 66, 68, 68, 72, 77, 79, 79, 83, 85, 87, 89, 91, 95, 97, 99,
    103, 104, 106, 107, 109, 111, 114, 116, 118, 121, 127, 130, 137, 138, 142, 142,
    147, 150, 152, 152, 155, 156, 158, 160, 168, 170, 172, 177, 182, 183, 185, 187,
    189, 193, 195, 197, 199, 202, 204, 204, 206, 209, 211, 212, 214, 215, 217, 218,
    220, 220, 222, 223, 226, 227, 232, 233, 235, 236, 238, 240, 243, 246, 252, 252,
    254, 255, 257, 259, 261, 262, 265, 267, 271, 282, 284, 284, 287, 288, 293, 298,
    300, 303, 305, 310, 312, 312, 314, 317, 319, 325, 327, 328, 330, 330, 332, 334,
    339, 340, 342, 342, 344, 346, 349, 349, 352, 353, 355, 355, 357, 357, 360, 364,
    366, 368, 371, 373, 375, 375, 377, 382, 385, 385, 388, 394, 13, 0, 16, 16, 26, 28,
    63, 64, 71, 71, 100, 100, 131, 131, 145, 145, 151, 151, 162, 163, 198, 198, 264,
    264, 311, 311, 337, 337, 2, 0, 4, 4, 101, 101, 2, 0, 9, 9, 58, 58, 3, 0, 14, 14, 144,
    144, 369, 369, 1, 0, 106, 107, 1, 0, 94, 95, 1, 0, 392, 393, 1, 0, 208, 209, 1, 0, 381,
    382, 1, 0, 73, 74, 1, 0, 148, 149, 1, 0, 206, 207, 1, 0, 297, 298, 1, 0, 80, 82, 5398,
    0, 699, 1, 0, 0, 0, 2, 706, 1, 0, 0, 0, 4, 711, 1, 0, 0, 0, 6, 745, 1, 0, 0, 0, 8, 747, 1,
    0, 0, 0, 10, 820, 1, 0, 0, 0, 12, 822, 1, 0, 0, 0, 14, 838, 1, 0, 0, 0, 16, 847, 1, 0, 0,
    0, 18, 855, 1, 0, 0, 0, 20, 868, 1, 0, 0, 0, 22, 879, 1, 0, 0, 0, 24, 884, 1, 0, 0, 0, 26,
    895, 1, 0, 0, 0, 28, 958, 1, 0, 0, 0, 30, 960, 1, 0, 0, 0, 32, 963, 1, 0, 0, 0, 34, 967,
    1, 0, 0, 0, 36, 969, 1, 0, 0, 0, 38, 972, 1, 0, 0, 0, 40, 975, 1, 0, 0, 0, 42, 1019, 1, 0,
    0, 0, 44, 1021, 1, 0, 0, 0, 46, 1024, 1, 0, 0, 0, 48, 1027, 1, 0, 0, 0, 50, 1036, 1, 0,
    0, 0, 52, 1039, 1, 0, 0, 0, 54, 1054, 1, 0, 0, 0, 56, 1066, 1, 0, 0, 0, 58, 1071, 1, 0,
    0, 0, 60, 1091, 1, 0, 0, 0, 62, 1095, 1, 0, 0, 0, 64, 1102, 1, 0, 0, 0, 66, 1127, 1, 0,
    0, 0, 68, 1144, 1, 0, 0, 0, 70, 1146, 1, 0, 0, 0, 72, 1331, 1, 0, 0, 0, 74, 1341, 1, 0,
    0, 0, 76, 1343, 1, 0, 0, 0, 78, 1348, 1, 0, 0, 0, 80, 1353, 1, 0, 0, 0, 82, 1355, 1, 0,
    0, 0, 84, 1359, 1, 0, 0, 0, 86, 1363, 1, 0, 0, 0, 88, 1367, 1, 0, 0, 0, 90, 1371, 1, 0,
    0, 0, 92, 1381, 1, 0, 0, 0, 94, 1392, 1, 0, 0, 0, 96, 1409, 1, 0, 0, 0, 98, 1427, 1, 0,
    0, 0, 100, 1432, 1, 0, 0, 0, 102, 1435, 1, 0, 0, 0, 104, 1439, 1, 0, 0, 0, 106, 1446,
    1, 0, 0, 0, 108, 1455, 1, 0, 0, 0, 110, 1461, 1, 0, 0, 0, 112, 1463, 1, 0, 0, 0, 114, 1477,
    1, 0, 0, 0, 116, 1499, 1, 0, 0, 0, 118, 1501, 1, 0, 0, 0, 120, 1509, 1, 0, 0, 0, 122, 1516,
    1, 0, 0, 0, 124, 1518, 1, 0, 0, 0, 126, 1532, 1, 0, 0, 0, 128, 1539, 1, 0, 0, 0, 130, 1541,
    1, 0, 0, 0, 132, 1545, 1, 0, 0, 0, 134, 1549, 1, 0, 0, 0, 136, 1553, 1, 0, 0, 0, 138, 1557,
    1, 0, 0, 0, 140, 1570, 1, 0, 0, 0, 142, 1578, 1, 0, 0, 0, 144, 1581, 1, 0, 0, 0, 146, 1583,
    1, 0, 0, 0, 148, 1595, 1, 0, 0, 0, 150, 1605, 1, 0, 0, 0, 152, 1608, 1, 0, 0, 0, 154, 1619,
    1, 0, 0, 0, 156, 1627, 1, 0, 0, 0, 158, 1670, 1, 0, 0, 0, 160, 1679, 1, 0, 0, 0, 162, 1707,
    1, 0, 0, 0, 164, 1720, 1, 0, 0, 0, 166, 1722, 1, 0, 0, 0, 168, 1728, 1, 0, 0, 0, 170, 1731,
    1, 0, 0, 0, 172, 1737, 1, 0, 0, 0, 174, 1743, 1, 0, 0, 0, 176, 1750, 1, 0, 0, 0, 178, 1784,
    1, 0, 0, 0, 180, 1792, 1, 0, 0, 0, 182, 1805, 1, 0, 0, 0, 184, 1810, 1, 0, 0, 0, 186, 1821,
    1, 0, 0, 0, 188, 1838, 1, 0, 0, 0, 190, 1840, 1, 0, 0, 0, 192, 1845, 1, 0, 0, 0, 194, 1852,
    1, 0, 0, 0, 196, 1854, 1, 0, 0, 0, 198, 1857, 1, 0, 0, 0, 200, 1860, 1, 0, 0, 0, 202, 1874,
    1, 0, 0, 0, 204, 1882, 1, 0, 0, 0, 206, 1908, 1, 0, 0, 0, 208, 1910, 1, 0, 0, 0, 210, 1927,
    1, 0, 0, 0, 212, 1941, 1, 0, 0, 0, 214, 1943, 1, 0, 0, 0, 216, 1946, 1, 0, 0, 0, 218, 1949,
    1, 0, 0, 0, 220, 1958, 1, 0, 0, 0, 222, 1978, 1, 0, 0, 0, 224, 1980, 1, 0, 0, 0, 226, 1983,
    1, 0, 0, 0, 228, 1996, 1, 0, 0, 0, 230, 1998, 1, 0, 0, 0, 232, 2002, 1, 0, 0, 0, 234, 2010,
    1, 0, 0, 0, 236, 2014, 1, 0, 0, 0, 238, 2023, 1, 0, 0, 0, 240, 2029, 1, 0, 0, 0, 242, 2035,
    1, 0, 0, 0, 244, 2040, 1, 0, 0, 0, 246, 2086, 1, 0, 0, 0, 248, 2088, 1, 0, 0, 0, 250, 2096,
    1, 0, 0, 0, 252, 2104, 1, 0, 0, 0, 254, 2112, 1, 0, 0, 0, 256, 2122, 1, 0, 0, 0, 258, 2124,
    1, 0, 0, 0, 260, 2126, 1, 0, 0, 0, 262, 2128, 1, 0, 0, 0, 264, 2141, 1, 0, 0, 0, 266, 2149,
    1, 0, 0, 0, 268, 2158, 1, 0, 0, 0, 270, 2162, 1, 0, 0, 0, 272, 2164, 1, 0, 0, 0, 274, 2169,
    1, 0, 0, 0, 276, 2171, 1, 0, 0, 0, 278, 2175, 1, 0, 0, 0, 280, 2181, 1, 0, 0, 0, 282, 2189,
    1, 0, 0, 0, 284, 2191, 1, 0, 0, 0, 286, 2194, 1, 0, 0, 0, 288, 2201, 1, 0, 0, 0, 290, 2212,
    1, 0, 0, 0, 292, 2225, 1, 0, 0, 0, 294, 2227, 1, 0, 0, 0, 296, 2235, 1, 0, 0, 0, 298, 2239,
    1, 0, 0, 0, 300, 2247, 1, 0, 0, 0, 302, 2249, 1, 0, 0, 0, 304, 2252, 1, 0, 0, 0, 306, 2259,
    1, 0, 0, 0, 308, 2267, 1, 0, 0, 0, 310, 2274, 1, 0, 0, 0, 312, 2282, 1, 0, 0, 0, 314, 2290,
    1, 0, 0, 0, 316, 2294, 1, 0, 0, 0, 318, 2296, 1, 0, 0, 0, 320, 2307, 1, 0, 0, 0, 322, 2311,
    1, 0, 0, 0, 324, 2323, 1, 0, 0, 0, 326, 2331, 1, 0, 0, 0, 328, 2335, 1, 0, 0, 0, 330, 2347,
    1, 0, 0, 0, 332, 2359, 1, 0, 0, 0, 334, 2364, 1, 0, 0, 0, 336, 2369, 1, 0, 0, 0, 338, 2371,
    1, 0, 0, 0, 340, 2375, 1, 0, 0, 0, 342, 2379, 1, 0, 0, 0, 344, 2386, 1, 0, 0, 0, 346, 2388,
    1, 0, 0, 0, 348, 2401, 1, 0, 0, 0, 350, 2440, 1, 0, 0, 0, 352, 2442, 1, 0, 0, 0, 354, 2447,
    1, 0, 0, 0, 356, 2452, 1, 0, 0, 0, 358, 2459, 1, 0, 0, 0, 360, 2464, 1, 0, 0, 0, 362, 2469,
    1, 0, 0, 0, 364, 2475, 1, 0, 0, 0, 366, 2477, 1, 0, 0, 0, 368, 2486, 1, 0, 0, 0, 370, 2498,
    1, 0, 0, 0, 372, 2578, 1, 0, 0, 0, 374, 2584, 1, 0, 0, 0, 376, 2610, 1, 0, 0, 0, 378, 2612,
    1, 0, 0, 0, 380, 2634, 1, 0, 0, 0, 382, 2639, 1, 0, 0, 0, 384, 2643, 1, 0, 0, 0, 386, 2675,
    1, 0, 0, 0, 388, 2677, 1, 0, 0, 0, 390, 2688, 1, 0, 0, 0, 392, 2694, 1, 0, 0, 0, 394, 2696,
    1, 0, 0, 0, 396, 2728, 1, 0, 0, 0, 398, 2735, 1, 0, 0, 0, 400, 2741, 1, 0, 0, 0, 402, 2747,
    1, 0, 0, 0, 404, 2762, 1, 0, 0, 0, 406, 2772, 1, 0, 0, 0, 408, 2780, 1, 0, 0, 0, 410, 2783,
    1, 0, 0, 0, 412, 2786, 1, 0, 0, 0, 414, 2789, 1, 0, 0, 0, 416, 2911, 1, 0, 0, 0, 418, 3045,
    1, 0, 0, 0, 420, 3073, 1, 0, 0, 0, 422, 3090, 1, 0, 0, 0, 424, 3107, 1, 0, 0, 0, 426, 3109,
    1, 0, 0, 0, 428, 3112, 1, 0, 0, 0, 430, 3138, 1, 0, 0, 0, 432, 3143, 1, 0, 0, 0, 434, 3170,
    1, 0, 0, 0, 436, 3181, 1, 0, 0, 0, 438, 3318, 1, 0, 0, 0, 440, 3320, 1, 0, 0, 0, 442, 3343,
    1, 0, 0, 0, 444, 3355, 1, 0, 0, 0, 446, 3360, 1, 0, 0, 0, 448, 3368, 1, 0, 0, 0, 450, 3376,
    1, 0, 0, 0, 452, 3388, 1, 0, 0, 0, 454, 3422, 1, 0, 0, 0, 456, 3424, 1, 0, 0, 0, 458, 3442,
    1, 0, 0, 0, 460, 3451, 1, 0, 0, 0, 462, 3481, 1, 0, 0, 0, 464, 3540, 1, 0, 0, 0, 466, 3542,
    1, 0, 0, 0, 468, 3571, 1, 0, 0, 0, 470, 3573, 1, 0, 0, 0, 472, 3589, 1, 0, 0, 0, 474, 3601,
    1, 0, 0, 0, 476, 3603, 1, 0, 0, 0, 478, 3607, 1, 0, 0, 0, 480, 3617, 1, 0, 0, 0, 482, 3627,
    1, 0, 0, 0, 484, 3632, 1, 0, 0, 0, 486, 3639, 1, 0, 0, 0, 488, 3643, 1, 0, 0, 0, 490, 3662,
    1, 0, 0, 0, 492, 3667, 1, 0, 0, 0, 494, 3669, 1, 0, 0, 0, 496, 3697, 1, 0, 0, 0, 498, 3700,
    1, 0, 0, 0, 500, 3721, 1, 0, 0, 0, 502, 3762, 1, 0, 0, 0, 504, 3764, 1, 0, 0, 0, 506, 3811,
    1, 0, 0, 0, 508, 3813, 1, 0, 0, 0, 510, 3838, 1, 0, 0, 0, 512, 3840, 1, 0, 0, 0, 514, 3848,
    1, 0, 0, 0, 516, 3874, 1, 0, 0, 0, 518, 3876, 1, 0, 0, 0, 520, 3896, 1, 0, 0, 0, 522, 3898,
    1, 0, 0, 0, 524, 3909, 1, 0, 0, 0, 526, 3922, 1, 0, 0, 0, 528, 3957, 1, 0, 0, 0, 530, 3959,
    1, 0, 0, 0, 532, 3962, 1, 0, 0, 0, 534, 3967, 1, 0, 0, 0, 536, 3969, 1, 0, 0, 0, 538, 3991,
    1, 0, 0, 0, 540, 3993, 1, 0, 0, 0, 542, 3997, 1, 0, 0, 0, 544, 4006, 1, 0, 0, 0, 546, 4016,
    1, 0, 0, 0, 548, 4020, 1, 0, 0, 0, 550, 4024, 1, 0, 0, 0, 552, 4028, 1, 0, 0, 0, 554, 4104,
    1, 0, 0, 0, 556, 4106, 1, 0, 0, 0, 558, 4109, 1, 0, 0, 0, 560, 4113, 1, 0, 0, 0, 562, 4118,
    1, 0, 0, 0, 564, 4120, 1, 0, 0, 0, 566, 4131, 1, 0, 0, 0, 568, 4148, 1, 0, 0, 0, 570, 4164,
    1, 0, 0, 0, 572, 4173, 1, 0, 0, 0, 574, 4188, 1, 0, 0, 0, 576, 4218, 1, 0, 0, 0, 578, 4220,
    1, 0, 0, 0, 580, 4237, 1, 0, 0, 0, 582, 4253, 1, 0, 0, 0, 584, 4255, 1, 0, 0, 0, 586, 4274,
    1, 0, 0, 0, 588, 4279, 1, 0, 0, 0, 590, 4294, 1, 0, 0, 0, 592, 4302, 1, 0, 0, 0, 594, 4310,
    1, 0, 0, 0, 596, 4318, 1, 0, 0, 0, 598, 4326, 1, 0, 0, 0, 600, 4334, 1, 0, 0, 0, 602, 4342,
    1, 0, 0, 0, 604, 4344, 1, 0, 0, 0, 606, 4354, 1, 0, 0, 0, 608, 4362, 1, 0, 0, 0, 610, 4378,
    1, 0, 0, 0, 612, 4382, 1, 0, 0, 0, 614, 4387, 1, 0, 0, 0, 616, 4389, 1, 0, 0, 0, 618, 4400,
    1, 0, 0, 0, 620, 4402, 1, 0, 0, 0, 622, 4420, 1, 0, 0, 0, 624, 4425, 1, 0, 0, 0, 626, 4433,
    1, 0, 0, 0, 628, 4441, 1, 0, 0, 0, 630, 4445, 1, 0, 0, 0, 632, 4457, 1, 0, 0, 0, 634, 4462,
    1, 0, 0, 0, 636, 4473, 1, 0, 0, 0, 638, 4480, 1, 0, 0, 0, 640, 4482, 1, 0, 0, 0, 642, 4486,
    1, 0, 0, 0, 644, 4488, 1, 0, 0, 0, 646, 4493, 1, 0, 0, 0, 648, 4495, 1, 0, 0, 0, 650, 4497,
    1, 0, 0, 0, 652, 4550, 1, 0, 0, 0, 654, 4717, 1, 0, 0, 0, 656, 4719, 1, 0, 0, 0, 658, 4728,
    1, 0, 0, 0, 660, 4730, 1, 0, 0, 0, 662, 4741, 1, 0, 0, 0, 664, 4743, 1, 0, 0, 0, 666, 4748,
    1, 0, 0, 0, 668, 4750, 1, 0, 0, 0, 670, 4752, 1, 0, 0, 0, 672, 4754, 1, 0, 0, 0, 674, 4756,
    1, 0, 0, 0, 676, 4758, 1, 0, 0, 0, 678, 4760, 1, 0, 0, 0, 680, 4762, 1, 0, 0, 0, 682, 4764,
    1, 0, 0, 0, 684, 4766, 1, 0, 0, 0, 686, 4768, 1, 0, 0, 0, 688, 4776, 1, 0, 0, 0, 690, 4784,
    1, 0, 0, 0, 692, 4798, 1, 0, 0, 0, 694, 4800, 1, 0, 0, 0, 696, 698, 3, 2, 1, 0, 697, 696,
    1, 0, 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 702,
    1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, 5, 0, 0, 1, 703, 1, 1, 0, 0, 0, 704, 707, 3,
    4, 2, 0, 705, 707, 3, 10, 5, 0, 706, 704, 1, 0, 0, 0, 706, 705, 1, 0, 0, 0, 707, 709, 1,
    0, 0, 0, 708, 710, 5, 398, 0, 0, 709, 708, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 3, 1,
    0, 0, 0, 711, 721, 5, 119, 0, 0, 712, 714, 3, 6, 3, 0, 713, 712, 1, 0, 0, 0, 714, 717,
    1, 0, 0, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 1, 0, 0, 0, 717, 715,
    1, 0, 0, 0, 718, 722, 3, 10, 5, 0, 719, 720, 5, 284, 0, 0, 720, 722, 3, 362, 181, 0, 721,
    715, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 722, 5, 1, 0, 0, 0, 723, 746, 5, 122, 0, 0, 724,
    746, 5, 138, 0, 0, 725, 746, 5, 88, 0, 0, 726, 728, 5, 37, 0, 0, 727, 729, 7, 0, 0, 0,
    728, 727, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 746, 1, 0, 0, 0, 730, 746, 5, 192, 0,
    0, 731, 746, 5, 21, 0, 0, 732, 746, 5, 10, 0, 0, 733, 746, 5, 275, 0, 0, 734, 746, 5,
    191, 0, 0, 735, 746, 5, 19, 0, 0, 736, 738, 5, 377, 0, 0, 737, 739, 5, 225, 0, 0, 738,
    737, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 741, 1, 0, 0, 0, 740, 742, 3, 8, 4, 0, 741,
    740, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 746, 1, 0, 0, 0, 743, 746, 5, 79, 0, 0, 744,
    746, 5, 78, 0, 0, 745, 723, 1, 0, 0, 0, 745, 724, 1, 0, 0, 0, 745, 725, 1, 0, 0, 0, 745,
    726, 1, 0, 0, 0, 745, 730, 1, 0, 0, 0, 745, 731, 1, 0, 0, 0, 745, 732, 1, 0, 0, 0, 745,
    733, 1, 0, 0, 0, 745, 734, 1, 0, 0, 0, 745, 735, 1, 0, 0, 0, 745, 736, 1, 0, 0, 0, 745,
    743, 1, 0, 0, 0, 745, 744, 1, 0, 0, 0, 746, 7, 1, 0, 0, 0, 747, 748, 7, 1, 0, 0, 748, 9,
    1, 0, 0, 0, 749, 821, 3, 362, 181, 0, 750, 821, 3, 12, 6, 0, 751, 821, 3, 16, 8, 0, 752,
    821, 3, 18, 9, 0, 753, 821, 3, 20, 10, 0, 754, 821, 3, 24, 12, 0, 755, 756, 5, 277, 0,
    0, 756, 757, 5, 320, 0, 0, 757, 760, 3, 474, 237, 0, 758, 759, 5, 387, 0, 0, 759, 761,
    3, 230, 115, 0, 760, 758, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 821, 1, 0, 0, 0, 762,
    821, 3, 28, 14, 0, 763, 764, 5, 86, 0, 0, 764, 765, 5, 139, 0, 0, 765, 767, 3, 480, 240,
    0, 766, 768, 3, 496, 248, 0, 767, 766, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 821, 1,
    0, 0, 0, 769, 770, 5, 365, 0, 0, 770, 771, 3, 480, 240, 0, 771, 773, 3, 394, 197, 0,
    772, 774, 3, 496, 248, 0, 773, 772, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 821, 1, 0,
    0, 0, 775, 821, 3, 396, 198, 0, 776, 778, 5, 203, 0, 0, 777, 779, 5, 436, 0, 0, 778,
    777, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 5, 166, 0, 0, 781,
    786, 3, 480, 240, 0, 782, 784, 5, 17, 0, 0, 783, 782, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0,
    784, 785, 1, 0, 0, 0, 785, 787, 3, 642, 321, 0, 786, 783, 1, 0, 0, 0, 786, 787, 1, 0,
    0, 0, 787, 788, 1, 0, 0, 0, 788, 789, 5, 370, 0, 0, 789, 790, 3, 458, 229, 0, 790, 791,
    5, 224, 0, 0, 791, 792, 3, 584, 292, 0, 792, 793, 3, 400, 200, 0, 793, 821, 1, 0, 0,
    0, 794, 795, 5, 249, 0, 0, 795, 796, 3, 642, 321, 0, 796, 797, 5, 139, 0, 0, 797, 798,
    3, 362, 181, 0, 798, 821, 1, 0, 0, 0, 799, 800, 5, 115, 0, 0, 800, 801, 3, 642, 321,
    0, 801, 802, 5, 370, 0, 0, 802, 803, 3, 298, 149, 0, 803, 821, 1, 0, 0, 0, 804, 805,
    5, 304, 0, 0, 805, 810, 3, 652, 326, 0, 806, 807, 7, 2, 0, 0, 807, 809, 3, 652, 326,
    0, 808, 806, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 810, 811, 1, 0, 0,
    0, 811, 813, 1, 0, 0, 0, 812, 810, 1, 0, 0, 0, 813, 817, 5, 405, 0, 0, 814, 816, 9, 0,
    0, 0, 815, 814, 1, 0, 0, 0, 816, 819, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 817, 815, 1, 0,
    0, 0, 818, 821, 1, 0, 0, 0, 819, 817, 1, 0, 0, 0, 820, 749, 1, 0, 0, 0, 820, 750, 1, 0,
    0, 0, 820, 751, 1, 0, 0, 0, 820, 752, 1, 0, 0, 0, 820, 753, 1, 0, 0, 0, 820, 754, 1, 0,
    0, 0, 820, 755, 1, 0, 0, 0, 820, 762, 1, 0, 0, 0, 820, 763, 1, 0, 0, 0, 820, 769, 1, 0,
    0, 0, 820, 775, 1, 0, 0, 0, 820, 776, 1, 0, 0, 0, 820, 794, 1, 0, 0, 0, 820, 799, 1, 0,
    0, 0, 820, 804, 1, 0, 0, 0, 821, 11, 1, 0, 0, 0, 822, 823, 5, 187, 0, 0, 823, 825, 5, 66,
    0, 0, 824, 826, 5, 188, 0, 0, 825, 824, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 1,
    0, 0, 0, 827, 828, 5, 158, 0, 0, 828, 830, 5, 426, 0, 0, 829, 831, 5, 235, 0, 0, 830,
    829, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 833, 5, 166, 0, 0, 833,
    834, 5, 329, 0, 0, 834, 836, 3, 628, 314, 0, 835, 837, 3, 56, 28, 0, 836, 835, 1, 0,
    0, 0, 836, 837, 1, 0, 0, 0, 837, 13, 1, 0, 0, 0, 838, 840, 5, 134, 0, 0, 839, 841, 5, 204,
    0, 0, 840, 839, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 843, 5, 279,
    0, 0, 843, 844, 5, 399, 0, 0, 844, 845, 5, 426, 0, 0, 845, 846, 5, 400, 0, 0, 846, 15,
    1, 0, 0, 0, 847, 848, 5, 120, 0, 0, 848, 849, 5, 329, 0, 0, 849, 850, 3, 628, 314, 0,
    850, 851, 5, 341, 0, 0, 851, 853, 5, 426, 0, 0, 852, 854, 3, 14, 7, 0, 853, 852, 1, 0,
    0, 0, 853, 854, 1, 0, 0, 0, 854, 17, 1, 0, 0, 0, 855, 861, 5, 153, 0, 0, 856, 858, 5, 123,
    0, 0, 857, 856, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 5, 329,
    0, 0, 860, 862, 3, 628, 314, 0, 861, 857, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 863,
    1, 0, 0, 0, 863, 864, 5, 139, 0, 0, 864, 866, 5, 426, 0, 0, 865, 867, 3, 426, 213, 0,
    866, 865, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 19, 1, 0, 0, 0, 868, 869, 5, 277, 0, 0,
    869, 870, 5, 103, 0, 0, 870, 873, 3, 22, 11, 0, 871, 872, 5, 278, 0, 0, 872, 874, 3,
    22, 11, 0, 873, 871, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 877, 1, 0, 0, 0, 875, 876,
    5, 387, 0, 0, 876, 878, 3, 230, 115, 0, 877, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878,
    21, 1, 0, 0, 0, 879, 882, 3, 474, 237, 0, 880, 881, 5, 395, 0, 0, 881, 883, 3, 26, 13,
    0, 882, 880, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 23, 1, 0, 0, 0, 884, 885, 5, 277, 0,
    0, 885, 886, 5, 187, 0, 0, 886, 889, 3, 22, 11, 0, 887, 888, 5, 166, 0, 0, 888, 890,
    3, 474, 237, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891,
    892, 5, 387, 0, 0, 892, 894, 3, 230, 115, 0, 893, 891, 1, 0, 0, 0, 893, 894, 1, 0, 0,
    0, 894, 25, 1, 0, 0, 0, 895, 898, 5, 426, 0, 0, 896, 897, 5, 395, 0, 0, 897, 899, 5, 426,
    0, 0, 898, 896, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 27, 1, 0, 0, 0, 900, 959, 3, 42,
    21, 0, 901, 959, 3, 46, 23, 0, 902, 959, 3, 48, 24, 0, 903, 959, 3, 438, 219, 0, 904,
    959, 3, 54, 27, 0, 905, 959, 3, 52, 26, 0, 906, 959, 3, 414, 207, 0, 907, 959, 3, 64,
    32, 0, 908, 959, 3, 72, 36, 0, 909, 959, 3, 138, 69, 0, 910, 959, 3, 160, 80, 0, 911,
    959, 3, 176, 88, 0, 912, 959, 3, 180, 90, 0, 913, 959, 3, 184, 92, 0, 914, 959, 3, 182,
    91, 0, 915, 959, 3, 174, 87, 0, 916, 959, 3, 178, 89, 0, 917, 959, 3, 146, 73, 0, 918,
    959, 3, 152, 76, 0, 919, 959, 3, 148, 74, 0, 920, 959, 3, 150, 75, 0, 921, 959, 3, 154,
    77, 0, 922, 959, 3, 156, 78, 0, 923, 959, 3, 158, 79, 0, 924, 959, 3, 66, 33, 0, 925,
    959, 3, 76, 38, 0, 926, 959, 3, 82, 41, 0, 927, 959, 3, 78, 39, 0, 928, 959, 3, 84, 42,
    0, 929, 959, 3, 86, 43, 0, 930, 959, 3, 88, 44, 0, 931, 959, 3, 90, 45, 0, 932, 959,
    3, 92, 46, 0, 933, 959, 3, 106, 53, 0, 934, 959, 3, 98, 49, 0, 935, 959, 3, 108, 54,
    0, 936, 959, 3, 100, 50, 0, 937, 959, 3, 94, 47, 0, 938, 959, 3, 96, 48, 0, 939, 959,
    3, 104, 52, 0, 940, 959, 3, 102, 51, 0, 941, 942, 5, 1, 0, 0, 942, 944, 7, 3, 0, 0, 943,
    945, 5, 431, 0, 0, 944, 943, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 944, 1, 0, 0, 0, 946,
    947, 1, 0, 0, 0, 947, 959, 1, 0, 0, 0, 948, 949, 5, 176, 0, 0, 949, 951, 5, 258, 0, 0,
    950, 952, 5, 426, 0, 0, 951, 950, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 951, 1, 0, 0,
    0, 953, 954, 1, 0, 0, 0, 954, 959, 1, 0, 0, 0, 955, 959, 3, 654, 327, 0, 956, 959, 3,
    440, 220, 0, 957, 959, 3, 442, 221, 0, 958, 900, 1, 0, 0, 0, 958, 901, 1, 0, 0, 0, 958,
    902, 1, 0, 0, 0, 958, 903, 1, 0, 0, 0, 958, 904, 1, 0, 0, 0, 958, 905, 1, 0, 0, 0, 958,
    906, 1, 0, 0, 0, 958, 907, 1, 0, 0, 0, 958, 908, 1, 0, 0, 0, 958, 909, 1, 0, 0, 0, 958,
    910, 1, 0, 0, 0, 958, 911, 1, 0, 0, 0, 958, 912, 1, 0, 0, 0, 958, 913, 1, 0, 0, 0, 958,
    914, 1, 0, 0, 0, 958, 915, 1, 0, 0, 0, 958, 916, 1, 0, 0, 0, 958, 917, 1, 0, 0, 0, 958,
    918, 1, 0, 0, 0, 958, 919, 1, 0, 0, 0, 958, 920, 1, 0, 0, 0, 958, 921, 1, 0, 0, 0, 958,
    922, 1, 0, 0, 0, 958, 923, 1, 0, 0, 0, 958, 924, 1, 0, 0, 0, 958, 925, 1, 0, 0, 0, 958,
    926, 1, 0, 0, 0, 958, 927, 1, 0, 0, 0, 958, 928, 1, 0, 0, 0, 958, 929, 1, 0, 0, 0, 958,
    930, 1, 0, 0, 0, 958, 931, 1, 0, 0, 0, 958, 932, 1, 0, 0, 0, 958, 933, 1, 0, 0, 0, 958,
    934, 1, 0, 0, 0, 958, 935, 1, 0, 0, 0, 958, 936, 1, 0, 0, 0, 958, 937, 1, 0, 0, 0, 958,
    938, 1, 0, 0, 0, 958, 939, 1, 0, 0, 0, 958, 940, 1, 0, 0, 0, 958, 941, 1, 0, 0, 0, 958,
    948, 1, 0, 0, 0, 958, 955, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 957, 1, 0, 0, 0, 959,
    29, 1, 0, 0, 0, 960, 961, 5, 151, 0, 0, 961, 962, 5, 117, 0, 0, 962, 31, 1, 0, 0, 0, 963,
    964, 5, 151, 0, 0, 964, 965, 5, 216, 0, 0, 965, 966, 5, 117, 0, 0, 966, 33, 1, 0, 0, 0,
    967, 968, 7, 4, 0, 0, 968, 35, 1, 0, 0, 0, 969, 970, 3, 666, 333, 0, 970, 971, 5, 284,
    0, 0, 971, 37, 1, 0, 0, 0, 972, 973, 3, 668, 334, 0, 973, 974, 5, 284, 0, 0, 974, 39,
    1, 0, 0, 0, 975, 976, 5, 321, 0, 0, 976, 977, 5, 17, 0, 0, 977, 978, 5, 92, 0, 0, 978,
    41, 1, 0, 0, 0, 979, 981, 5, 58, 0, 0, 980, 982, 5, 273, 0, 0, 981, 980, 1, 0, 0, 0, 981,
    982, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 985, 3, 70, 35, 0, 984, 986, 3, 32, 16, 0,
    985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 989, 3, 476, 238,
    0, 988, 990, 3, 50, 25, 0, 989, 988, 1, 0, 0, 0, 989, 990, 1, 0, 0, 0, 990, 992, 1, 0,
    0, 0, 991, 993, 3, 426, 213, 0, 992, 991, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 996,
    1, 0, 0, 0, 994, 995, 5, 196, 0, 0, 995, 997, 5, 426, 0, 0, 996, 994, 1, 0, 0, 0, 996,
    997, 1, 0, 0, 0, 997, 1001, 1, 0, 0, 0, 998, 999, 5, 387, 0, 0, 999, 1000, 5, 76, 0, 0,
    1000, 1002, 3, 230, 115, 0, 1001, 998, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1020,
    1, 0, 0, 0, 1003, 1004, 5, 58, 0, 0, 1004, 1005, 5, 273, 0, 0, 1005, 1007, 3, 70, 35,
    0, 1006, 1008, 3, 32, 16, 0, 1007, 1006, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1009,
    1, 0, 0, 0, 1009, 1011, 3, 476, 238, 0, 1010, 1012, 3, 50, 25, 0, 1011, 1010, 1, 0,
    0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1017, 3, 44, 22, 0, 1014,
    1015, 5, 387, 0, 0, 1015, 1016, 5, 76, 0, 0, 1016, 1018, 3, 230, 115, 0, 1017, 1014,
    1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1020, 1, 0, 0, 0, 1019, 979, 1, 0, 0, 0, 1019,
    1003, 1, 0, 0, 0, 1020, 43, 1, 0, 0, 0, 1021, 1022, 5, 370, 0, 0, 1022, 1023, 3, 474,
    237, 0, 1023, 45, 1, 0, 0, 0, 1024, 1025, 5, 368, 0, 0, 1025, 1026, 3, 474, 237, 0,
    1026, 47, 1, 0, 0, 0, 1027, 1028, 5, 101, 0, 0, 1028, 1030, 3, 70, 35, 0, 1029, 1031,
    3, 30, 15, 0, 1030, 1029, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0,
    1032, 1034, 3, 474, 237, 0, 1033, 1035, 3, 34, 17, 0, 1034, 1033, 1, 0, 0, 0, 1034,
    1035, 1, 0, 0, 0, 1035, 49, 1, 0, 0, 0, 1036, 1037, 5, 47, 0, 0, 1037, 1038, 5, 426,
    0, 0, 1038, 51, 1, 0, 0, 0, 1039, 1041, 5, 351, 0, 0, 1040, 1042, 5, 329, 0, 0, 1041,
    1040, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1049, 3, 628,
    314, 0, 1044, 1045, 5, 46, 0, 0, 1045, 1046, 5, 399, 0, 0, 1046, 1047, 3, 254, 127,
    0, 1047, 1048, 5, 400, 0, 0, 1048, 1050, 1, 0, 0, 0, 1049, 1044, 1, 0, 0, 0, 1049, 1050,
    1, 0, 0, 0, 1050, 1052, 1, 0, 0, 0, 1051, 1053, 5, 135, 0, 0, 1052, 1051, 1, 0, 0, 0,
    1052, 1053, 1, 0, 0, 0, 1053, 53, 1, 0, 0, 0, 1054, 1055, 5, 101, 0, 0, 1055, 1057,
    5, 329, 0, 0, 1056, 1058, 3, 30, 15, 0, 1057, 1056, 1, 0, 0, 0, 1057, 1058, 1, 0, 0,
    0, 1058, 1059, 1, 0, 0, 0, 1059, 1061, 3, 480, 240, 0, 1060, 1062, 5, 255, 0, 0, 1061,
    1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1064, 1, 0, 0, 0, 1063, 1065, 3, 14,
    7, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 55, 1, 0, 0, 0, 1066, 1067,
    5, 160, 0, 0, 1067, 1068, 5, 426, 0, 0, 1068, 1069, 5, 301, 0, 0, 1069, 1070, 5, 426,
    0, 0, 1070, 57, 1, 0, 0, 0, 1071, 1074, 3, 642, 321, 0, 1072, 1073, 5, 395, 0, 0, 1073,
    1075, 3, 642, 321, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1089, 1,
    0, 0, 0, 1076, 1086, 3, 642, 321, 0, 1077, 1082, 5, 395, 0, 0, 1078, 1083, 5, 104,
    0, 0, 1079, 1083, 5, 175, 0, 0, 1080, 1083, 5, 375, 0, 0, 1081, 1083, 3, 642, 321,
    0, 1082, 1078, 1, 0, 0, 0, 1082, 1079, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1081,
    1, 0, 0, 0, 1083, 1085, 1, 0, 0, 0, 1084, 1077, 1, 0, 0, 0, 1085, 1088, 1, 0, 0, 0, 1086,
    1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1090, 1, 0, 0, 0, 1088, 1086, 1, 0, 0,
    0, 1089, 1076, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 59, 1, 0, 0, 0, 1091, 1093,
    3, 58, 29, 0, 1092, 1094, 3, 630, 315, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0,
    0, 0, 1094, 61, 1, 0, 0, 0, 1095, 1097, 3, 478, 239, 0, 1096, 1098, 3, 630, 315, 0,
    1097, 1096, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1100, 1, 0, 0, 0, 1099, 1101,
    3, 262, 131, 0, 1100, 1099, 1, 0, 0, 0, 1100, 1101, 1, 0, 0, 0, 1101, 63, 1, 0, 0, 0,
    1102, 1125, 7, 5, 0, 0, 1103, 1105, 3, 70, 35, 0, 1104, 1106, 5, 122, 0, 0, 1105, 1104,
    1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 3, 474, 237,
    0, 1108, 1126, 1, 0, 0, 0, 1109, 1111, 5, 69, 0, 0, 1110, 1112, 5, 122, 0, 0, 1111,
    1110, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1126, 3, 474,
    237, 0, 1114, 1116, 5, 141, 0, 0, 1115, 1117, 5, 122, 0, 0, 1116, 1115, 1, 0, 0, 0,
    1116, 1117, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1126, 3, 560, 280, 0, 1119, 1122,
    5, 138, 0, 0, 1120, 1122, 5, 122, 0, 0, 1121, 1119, 1, 0, 0, 0, 1121, 1120, 1, 0, 0,
    0, 1122, 1123, 1, 0, 0, 0, 1123, 1126, 3, 62, 31, 0, 1124, 1126, 3, 62, 31, 0, 1125,
    1103, 1, 0, 0, 0, 1125, 1109, 1, 0, 0, 0, 1125, 1114, 1, 0, 0, 0, 1125, 1121, 1, 0, 0,
    0, 1125, 1124, 1, 0, 0, 0, 1126, 65, 1, 0, 0, 0, 1127, 1128, 5, 10, 0, 0, 1128, 1129,
    5, 329, 0, 0, 1129, 1142, 3, 628, 314, 0, 1130, 1131, 5, 52, 0, 0, 1131, 1138, 5, 319,
    0, 0, 1132, 1139, 5, 215, 0, 0, 1133, 1134, 5, 134, 0, 0, 1134, 1136, 5, 46, 0, 0, 1135,
    1137, 3, 254, 127, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1139, 1,
    0, 0, 0, 1138, 1132, 1, 0, 0, 0, 1138, 1133, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139,
    1143, 1, 0, 0, 0, 1140, 1141, 5, 33, 0, 0, 1141, 1143, 5, 204, 0, 0, 1142, 1130, 1,
    0, 0, 0, 1142, 1140, 1, 0, 0, 0, 1143, 67, 1, 0, 0, 0, 1144, 1145, 7, 6, 0, 0, 1145, 69,
    1, 0, 0, 0, 1146, 1147, 7, 7, 0, 0, 1147, 71, 1, 0, 0, 0, 1148, 1149, 5, 308, 0, 0, 1149,
    1152, 7, 8, 0, 0, 1150, 1151, 5, 184, 0, 0, 1151, 1153, 3, 194, 97, 0, 1152, 1150,
    1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1332, 1, 0, 0, 0, 1154, 1156, 5, 308, 0, 0,
    1155, 1157, 5, 122, 0, 0, 1156, 1155, 1, 0, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1158,
    1, 0, 0, 0, 1158, 1162, 5, 330, 0, 0, 1159, 1160, 3, 68, 34, 0, 1160, 1161, 3, 474,
    237, 0, 1161, 1163, 1, 0, 0, 0, 1162, 1159, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163,
    1165, 1, 0, 0, 0, 1164, 1166, 3, 74, 37, 0, 1165, 1164, 1, 0, 0, 0, 1165, 1166, 1, 0,
    0, 0, 1166, 1332, 1, 0, 0, 0, 1167, 1168, 5, 308, 0, 0, 1168, 1172, 5, 379, 0, 0, 1169,
    1170, 3, 68, 34, 0, 1170, 1171, 3, 474, 237, 0, 1171, 1173, 1, 0, 0, 0, 1172, 1169,
    1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1177, 1, 0, 0, 0, 1174, 1175, 5, 184, 0, 0,
    1175, 1178, 3, 194, 97, 0, 1176, 1178, 3, 194, 97, 0, 1177, 1174, 1, 0, 0, 0, 1177,
    1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1332, 1, 0, 0, 0, 1179, 1180, 5, 308,
    0, 0, 1180, 1181, 5, 202, 0, 0, 1181, 1185, 5, 379, 0, 0, 1182, 1183, 3, 68, 34, 0,
    1183, 1184, 3, 474, 237, 0, 1184, 1186, 1, 0, 0, 0, 1185, 1182, 1, 0, 0, 0, 1185, 1186,
    1, 0, 0, 0, 1186, 1190, 1, 0, 0, 0, 1187, 1188, 5, 184, 0, 0, 1188, 1191, 3, 194, 97,
    0, 1189, 1191, 3, 194, 97, 0, 1190, 1187, 1, 0, 0, 0, 1190, 1189, 1, 0, 0, 0, 1190,
    1191, 1, 0, 0, 0, 1191, 1332, 1, 0, 0, 0, 1192, 1194, 5, 308, 0, 0, 1193, 1195, 5, 315,
    0, 0, 1194, 1193, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197,
    5, 46, 0, 0, 1197, 1198, 3, 68, 34, 0, 1198, 1202, 3, 478, 239, 0, 1199, 1200, 3, 68,
    34, 0, 1200, 1201, 3, 474, 237, 0, 1201, 1203, 1, 0, 0, 0, 1202, 1199, 1, 0, 0, 0, 1202,
    1203, 1, 0, 0, 0, 1203, 1207, 1, 0, 0, 0, 1204, 1205, 5, 184, 0, 0, 1205, 1208, 3, 194,
    97, 0, 1206, 1208, 3, 194, 97, 0, 1207, 1204, 1, 0, 0, 0, 1207, 1206, 1, 0, 0, 0, 1207,
    1208, 1, 0, 0, 0, 1208, 1332, 1, 0, 0, 0, 1209, 1210, 5, 308, 0, 0, 1210, 1213, 5, 142,
    0, 0, 1211, 1212, 5, 184, 0, 0, 1212, 1214, 3, 560, 280, 0, 1213, 1211, 1, 0, 0, 0,
    1213, 1214, 1, 0, 0, 0, 1214, 1332, 1, 0, 0, 0, 1215, 1216, 5, 308, 0, 0, 1216, 1217,
    5, 239, 0, 0, 1217, 1219, 3, 478, 239, 0, 1218, 1220, 3, 630, 315, 0, 1219, 1218,
    1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1222, 1, 0, 0, 0, 1221, 1223, 3, 496, 248,
    0, 1222, 1221, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1225, 1, 0, 0, 0, 1224, 1226,
    3, 544, 272, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1228, 1, 0, 0,
    0, 1227, 1229, 3, 388, 194, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229,
    1332, 1, 0, 0, 0, 1230, 1231, 5, 308, 0, 0, 1231, 1237, 5, 58, 0, 0, 1232, 1233, 3,
    70, 35, 0, 1233, 1234, 3, 474, 237, 0, 1234, 1238, 1, 0, 0, 0, 1235, 1236, 5, 329,
    0, 0, 1236, 1238, 3, 480, 240, 0, 1237, 1232, 1, 0, 0, 0, 1237, 1235, 1, 0, 0, 0, 1238,
    1332, 1, 0, 0, 0, 1239, 1240, 5, 308, 0, 0, 1240, 1241, 5, 329, 0, 0, 1241, 1245, 5,
    122, 0, 0, 1242, 1243, 3, 68, 34, 0, 1243, 1244, 3, 474, 237, 0, 1244, 1246, 1, 0,
    0, 0, 1245, 1242, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1248,
    5, 184, 0, 0, 1248, 1250, 3, 194, 97, 0, 1249, 1251, 3, 630, 315, 0, 1250, 1249, 1,
    0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1332, 1, 0, 0, 0, 1252, 1253, 5, 308, 0, 0, 1253,
    1254, 5, 332, 0, 0, 1254, 1258, 3, 480, 240, 0, 1255, 1256, 5, 399, 0, 0, 1256, 1257,
    5, 426, 0, 0, 1257, 1259, 5, 400, 0, 0, 1258, 1255, 1, 0, 0, 0, 1258, 1259, 1, 0, 0,
    0, 1259, 1332, 1, 0, 0, 0, 1260, 1261, 5, 308, 0, 0, 1261, 1273, 5, 191, 0, 0, 1262,
    1263, 3, 70, 35, 0, 1263, 1265, 3, 474, 237, 0, 1264, 1266, 5, 122, 0, 0, 1265, 1264,
    1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1274, 1, 0, 0, 0, 1267, 1269, 3, 60, 30, 0,
    1268, 1267, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1271, 1, 0, 0, 0, 1270, 1272,
    5, 122, 0, 0, 1271, 1270, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1274, 1, 0, 0, 0,
    1273, 1262, 1, 0, 0, 0, 1273, 1268, 1, 0, 0, 0, 1274, 1332, 1, 0, 0, 0, 1275, 1276,
    5, 308, 0, 0, 1276, 1303, 5, 50, 0, 0, 1277, 1278, 5, 51, 0, 0, 1278, 1279, 5, 405,
    0, 0, 1279, 1304, 5, 431, 0, 0, 1280, 1281, 3, 70, 35, 0, 1281, 1282, 3, 474, 237,
    0, 1282, 1287, 1, 0, 0, 0, 1283, 1285, 3, 60, 30, 0, 1284, 1283, 1, 0, 0, 0, 1284, 1285,
    1, 0, 0, 0, 1285, 1287, 1, 0, 0, 0, 1286, 1280, 1, 0, 0, 0, 1286, 1284, 1, 0, 0, 0, 1287,
    1289, 1, 0, 0, 0, 1288, 1290, 3, 408, 204, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1,
    0, 0, 0, 1290, 1292, 1, 0, 0, 0, 1291, 1293, 3, 410, 205, 0, 1292, 1291, 1, 0, 0, 0,
    1292, 1293, 1, 0, 0, 0, 1293, 1295, 1, 0, 0, 0, 1294, 1296, 3, 412, 206, 0, 1295, 1294,
    1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1298, 1, 0, 0, 0, 1297, 1299, 3, 544, 272,
    0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1301, 1, 0, 0, 0, 1300, 1302,
    3, 388, 194, 0, 1301, 1300, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1304, 1, 0, 0,
    0, 1303, 1277, 1, 0, 0, 0, 1303, 1286, 1, 0, 0, 0, 1304, 1332, 1, 0, 0, 0, 1305, 1306,
    5, 308, 0, 0, 1306, 1332, 5, 346, 0, 0, 1307, 1308, 5, 308, 0, 0, 1308, 1309, 5, 54,
    0, 0, 1309, 1332, 5, 426, 0, 0, 1310, 1311, 5, 308, 0, 0, 1311, 1315, 5, 280, 0, 0,
    1312, 1313, 5, 243, 0, 0, 1313, 1316, 3, 642, 321, 0, 1314, 1316, 5, 244, 0, 0, 1315,
    1312, 1, 0, 0, 0, 1315, 1314, 1, 0, 0, 0, 1316, 1332, 1, 0, 0, 0, 1317, 1318, 5, 308,
    0, 0, 1318, 1332, 5, 70, 0, 0, 1319, 1321, 5, 308, 0, 0, 1320, 1322, 5, 138, 0, 0, 1321,
    1320, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 7, 9, 0,
    0, 1324, 1325, 5, 224, 0, 0, 1325, 1329, 3, 480, 240, 0, 1326, 1327, 3, 68, 34, 0,
    1327, 1328, 3, 474, 237, 0, 1328, 1330, 1, 0, 0, 0, 1329, 1326, 1, 0, 0, 0, 1329, 1330,
    1, 0, 0, 0, 1330, 1332, 1, 0, 0, 0, 1331, 1148, 1, 0, 0, 0, 1331, 1154, 1, 0, 0, 0, 1331,
    1167, 1, 0, 0, 0, 1331, 1179, 1, 0, 0, 0, 1331, 1192, 1, 0, 0, 0, 1331, 1209, 1, 0, 0,
    0, 1331, 1215, 1, 0, 0, 0, 1331, 1230, 1, 0, 0, 0, 1331, 1239, 1, 0, 0, 0, 1331, 1252,
    1, 0, 0, 0, 1331, 1260, 1, 0, 0, 0, 1331, 1275, 1, 0, 0, 0, 1331, 1305, 1, 0, 0, 0, 1331,
    1307, 1, 0, 0, 0, 1331, 1310, 1, 0, 0, 0, 1331, 1317, 1, 0, 0, 0, 1331, 1319, 1, 0, 0,
    0, 1332, 73, 1, 0, 0, 0, 1333, 1334, 5, 384, 0, 0, 1334, 1335, 3, 642, 321, 0, 1335,
    1336, 5, 405, 0, 0, 1336, 1337, 5, 426, 0, 0, 1337, 1342, 1, 0, 0, 0, 1338, 1339, 5,
    184, 0, 0, 1339, 1342, 3, 194, 97, 0, 1340, 1342, 3, 194, 97, 0, 1341, 1333, 1, 0,
    0, 0, 1341, 1338, 1, 0, 0, 0, 1341, 1340, 1, 0, 0, 0, 1342, 75, 1, 0, 0, 0, 1343, 1344,
    5, 190, 0, 0, 1344, 1345, 5, 329, 0, 0, 1345, 1346, 3, 628, 314, 0, 1346, 1347, 3,
    80, 40, 0, 1347, 77, 1, 0, 0, 0, 1348, 1349, 5, 190, 0, 0, 1349, 1350, 3, 70, 35, 0,
    1350, 1351, 3, 474, 237, 0, 1351, 1352, 3, 80, 40, 0, 1352, 79, 1, 0, 0, 0, 1353, 1354,
    7, 10, 0, 0, 1354, 81, 1, 0, 0, 0, 1355, 1356, 5, 361, 0, 0, 1356, 1357, 5, 329, 0, 0,
    1357, 1358, 3, 628, 314, 0, 1358, 83, 1, 0, 0, 0, 1359, 1360, 5, 361, 0, 0, 1360, 1361,
    3, 70, 35, 0, 1361, 1362, 3, 474, 237, 0, 1362, 85, 1, 0, 0, 0, 1363, 1364, 5, 58, 0,
    0, 1364, 1365, 5, 287, 0, 0, 1365, 1366, 3, 642, 321, 0, 1366, 87, 1, 0, 0, 0, 1367,
    1368, 5, 101, 0, 0, 1368, 1369, 5, 287, 0, 0, 1369, 1370, 3, 642, 321, 0, 1370, 89,
    1, 0, 0, 0, 1371, 1372, 5, 143, 0, 0, 1372, 1374, 3, 118, 59, 0, 1373, 1375, 3, 112,
    56, 0, 1374, 1373, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376,
    1377, 5, 341, 0, 0, 1377, 1379, 3, 124, 62, 0, 1378, 1380, 3, 130, 65, 0, 1379, 1378,
    1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 91, 1, 0, 0, 0, 1381, 1383, 5, 283, 0, 0, 1382,
    1384, 3, 132, 66, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1,
    0, 0, 0, 1385, 1387, 3, 118, 59, 0, 1386, 1388, 3, 112, 56, 0, 1387, 1386, 1, 0, 0,
    0, 1387, 1388, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1390, 5, 139, 0, 0, 1390, 1391,
    3, 124, 62, 0, 1391, 93, 1, 0, 0, 0, 1392, 1394, 5, 143, 0, 0, 1393, 1395, 5, 287, 0,
    0, 1394, 1393, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1401,
    3, 642, 321, 0, 1397, 1398, 5, 397, 0, 0, 1398, 1400, 3, 642, 321, 0, 1399, 1397,
    1, 0, 0, 0, 1400, 1403, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402,
    1404, 1, 0, 0, 0, 1403, 1401, 1, 0, 0, 0, 1404, 1405, 5, 341, 0, 0, 1405, 1407, 3, 124,
    62, 0, 1406, 1408, 3, 136, 68, 0, 1407, 1406, 1, 0, 0, 0, 1407, 1408, 1, 0, 0, 0, 1408,
    95, 1, 0, 0, 0, 1409, 1411, 5, 283, 0, 0, 1410, 1412, 3, 134, 67, 0, 1411, 1410, 1,
    0, 0, 0, 1411, 1412, 1, 0, 0, 0, 1412, 1414, 1, 0, 0, 0, 1413, 1415, 5, 287, 0, 0, 1414,
    1413, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 1421, 3, 642,
    321, 0, 1417, 1418, 5, 397, 0, 0, 1418, 1420, 3, 642, 321, 0, 1419, 1417, 1, 0, 0,
    0, 1420, 1423, 1, 0, 0, 0, 1421, 1419, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1424,
    1, 0, 0, 0, 1423, 1421, 1, 0, 0, 0, 1424, 1425, 5, 139, 0, 0, 1425, 1426, 3, 124, 62,
    0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 5, 308, 0, 0, 1428, 1429, 5, 287, 0, 0, 1429, 1430,
    5, 143, 0, 0, 1430, 1431, 3, 126, 63, 0, 1431, 99, 1, 0, 0, 0, 1432, 1433, 5, 308, 0,
    0, 1433, 1434, 5, 288, 0, 0, 1434, 101, 1, 0, 0, 0, 1435, 1436, 5, 308, 0, 0, 1436,
    1437, 5, 62, 0, 0, 1437, 1438, 5, 288, 0, 0, 1438, 103, 1, 0, 0, 0, 1439, 1440, 5, 304,
    0, 0, 1440, 1444, 5, 287, 0, 0, 1441, 1445, 5, 7, 0, 0, 1442, 1445, 5, 213, 0, 0, 1443,
    1445, 3, 642, 321, 0, 1444, 1441, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1444, 1443, 1,
    0, 0, 0, 1445, 105, 1, 0, 0, 0, 1446, 1447, 5, 308, 0, 0, 1447, 1449, 5, 143, 0, 0, 1448,
    1450, 3, 126, 63, 0, 1449, 1448, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1453, 1,
    0, 0, 0, 1451, 1452, 5, 224, 0, 0, 1452, 1454, 3, 110, 55, 0, 1453, 1451, 1, 0, 0, 0,
    1453, 1454, 1, 0, 0, 0, 1454, 107, 1, 0, 0, 0, 1455, 1456, 5, 308, 0, 0, 1456, 1457,
    5, 252, 0, 0, 1457, 1458, 3, 642, 321, 0, 1458, 109, 1, 0, 0, 0, 1459, 1462, 5, 7, 0,
    0, 1460, 1462, 3, 116, 58, 0, 1461, 1459, 1, 0, 0, 0, 1461, 1460, 1, 0, 0, 0, 1462,
    111, 1, 0, 0, 0, 1463, 1464, 5, 224, 0, 0, 1464, 1465, 3, 114, 57, 0, 1465, 113, 1,
    0, 0, 0, 1466, 1467, 3, 70, 35, 0, 1467, 1468, 3, 474, 237, 0, 1468, 1478, 1, 0, 0,
    0, 1469, 1471, 5, 329, 0, 0, 1470, 1469, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472,
    1, 0, 0, 0, 1472, 1478, 3, 628, 314, 0, 1473, 1474, 5, 366, 0, 0, 1474, 1478, 5, 426,
    0, 0, 1475, 1476, 5, 303, 0, 0, 1476, 1478, 3, 642, 321, 0, 1477, 1466, 1, 0, 0, 0,
    1477, 1470, 1, 0, 0, 0, 1477, 1473, 1, 0, 0, 0, 1477, 1475, 1, 0, 0, 0, 1478, 115, 1,
    0, 0, 0, 1479, 1480, 3, 70, 35, 0, 1480, 1481, 3, 474, 237, 0, 1481, 1500, 1, 0, 0,
    0, 1482, 1484, 5, 329, 0, 0, 1483, 1482, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1485,
    1, 0, 0, 0, 1485, 1490, 3, 480, 240, 0, 1486, 1487, 5, 399, 0, 0, 1487, 1488, 3, 254,
    127, 0, 1488, 1489, 5, 400, 0, 0, 1489, 1491, 1, 0, 0, 0, 1490, 1486, 1, 0, 0, 0, 1490,
    1491, 1, 0, 0, 0, 1491, 1493, 1, 0, 0, 0, 1492, 1494, 3, 630, 315, 0, 1493, 1492, 1,
    0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1500, 1, 0, 0, 0, 1495, 1496, 5, 366, 0, 0, 1496,
    1500, 5, 426, 0, 0, 1497, 1498, 5, 303, 0, 0, 1498, 1500, 3, 642, 321, 0, 1499, 1479,
    1, 0, 0, 0, 1499, 1483, 1, 0, 0, 0, 1499, 1495, 1, 0, 0, 0, 1499, 1497, 1, 0, 0, 0, 1500,
    117, 1, 0, 0, 0, 1501, 1506, 3, 120, 60, 0, 1502, 1503, 5, 397, 0, 0, 1503, 1505, 3,
    120, 60, 0, 1504, 1502, 1, 0, 0, 0, 1505, 1508, 1, 0, 0, 0, 1506, 1504, 1, 0, 0, 0, 1506,
    1507, 1, 0, 0, 0, 1507, 119, 1, 0, 0, 0, 1508, 1506, 1, 0, 0, 0, 1509, 1514, 3, 122,
    61, 0, 1510, 1511, 5, 399, 0, 0, 1511, 1512, 3, 254, 127, 0, 1512, 1513, 5, 400, 0,
    0, 1513, 1515, 1, 0, 0, 0, 1514, 1510, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 121,
    1, 0, 0, 0, 1516, 1517, 7, 11, 0, 0, 1517, 123, 1, 0, 0, 0, 1518, 1523, 3, 126, 63, 0,
    1519, 1520, 5, 397, 0, 0, 1520, 1522, 3, 126, 63, 0, 1521, 1519, 1, 0, 0, 0, 1522,
    1525, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 125, 1, 0, 0,
    0, 1525, 1523, 1, 0, 0, 0, 1526, 1527, 5, 369, 0, 0, 1527, 1533, 3, 646, 323, 0, 1528,
    1529, 5, 144, 0, 0, 1529, 1533, 3, 646, 323, 0, 1530, 1531, 5, 287, 0, 0, 1531, 1533,
    3, 642, 321, 0, 1532, 1526, 1, 0, 0, 0, 1532, 1528, 1, 0, 0, 0, 1532, 1530, 1, 0, 0,
    0, 1533, 127, 1, 0, 0, 0, 1534, 1535, 5, 369, 0, 0, 1535, 1540, 3, 646, 323, 0, 1536,
    1537, 5, 287, 0, 0, 1537, 1540, 3, 642, 321, 0, 1538, 1540, 3, 642, 321, 0, 1539,
    1534, 1, 0, 0, 0, 1539, 1536, 1, 0, 0, 0, 1539, 1538, 1, 0, 0, 0, 1540, 129, 1, 0, 0,
    0, 1541, 1542, 5, 387, 0, 0, 1542, 1543, 5, 143, 0, 0, 1543, 1544, 5, 227, 0, 0, 1544,
    131, 1, 0, 0, 0, 1545, 1546, 5, 143, 0, 0, 1546, 1547, 5, 227, 0, 0, 1547, 1548, 5,
    134, 0, 0, 1548, 133, 1, 0, 0, 0, 1549, 1550, 5, 5, 0, 0, 1550, 1551, 5, 227, 0, 0, 1551,
    1552, 5, 134, 0, 0, 1552, 135, 1, 0, 0, 0, 1553, 1554, 5, 387, 0, 0, 1554, 1555, 5,
    5, 0, 0, 1555, 1556, 5, 227, 0, 0, 1556, 137, 1, 0, 0, 0, 1557, 1559, 5, 212, 0, 0, 1558,
    1560, 5, 276, 0, 0, 1559, 1558, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 1561, 1, 0,
    0, 0, 1561, 1562, 5, 329, 0, 0, 1562, 1568, 3, 480, 240, 0, 1563, 1564, 7, 12, 0, 0,
    1564, 1566, 5, 239, 0, 0, 1565, 1567, 3, 634, 317, 0, 1566, 1565, 1, 0, 0, 0, 1566,
    1567, 1, 0, 0, 0, 1567, 1569, 1, 0, 0, 0, 1568, 1563, 1, 0, 0, 0, 1568, 1569, 1, 0, 0,
    0, 1569, 139, 1, 0, 0, 0, 1570, 1575, 3, 142, 71, 0, 1571, 1572, 5, 397, 0, 0, 1572,
    1574, 3, 142, 71, 0, 1573, 1571, 1, 0, 0, 0, 1574, 1577, 1, 0, 0, 0, 1575, 1573, 1,
    0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 141, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1578,
    1579, 3, 144, 72, 0, 1579, 1580, 5, 426, 0, 0, 1580, 143, 1, 0, 0, 0, 1581, 1582, 7,
    13, 0, 0, 1582, 145, 1, 0, 0, 0, 1583, 1585, 5, 58, 0, 0, 1584, 1586, 5, 333, 0, 0, 1585,
    1584, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 5, 141,
    0, 0, 1588, 1589, 3, 558, 279, 0, 1589, 1590, 5, 17, 0, 0, 1590, 1593, 5, 426, 0, 0,
    1591, 1592, 5, 370, 0, 0, 1592, 1594, 3, 140, 70, 0, 1593, 1591, 1, 0, 0, 0, 1593,
    1594, 1, 0, 0, 0, 1594, 147, 1, 0, 0, 0, 1595, 1597, 5, 101, 0, 0, 1596, 1598, 5, 333,
    0, 0, 1597, 1596, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1601,
    5, 141, 0, 0, 1600, 1602, 3, 30, 15, 0, 1601, 1600, 1, 0, 0, 0, 1601, 1602, 1, 0, 0,
    0, 1602, 1603, 1, 0, 0, 0, 1603, 1604, 3, 560, 280, 0, 1604, 149, 1, 0, 0, 0, 1605,
    1606, 5, 271, 0, 0, 1606, 1607, 7, 14, 0, 0, 1607, 151, 1, 0, 0, 0, 1608, 1609, 5, 58,
    0, 0, 1609, 1610, 5, 333, 0, 0, 1610, 1611, 5, 194, 0, 0, 1611, 1612, 5, 432, 0, 0,
    1612, 1614, 5, 399, 0, 0, 1613, 1615, 3, 248, 124, 0, 1614, 1613, 1, 0, 0, 0, 1614,
    1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1617, 5, 400, 0, 0, 1617, 1618, 3, 584,
    292, 0, 1618, 153, 1, 0, 0, 0, 1619, 1620, 5, 101, 0, 0, 1620, 1621, 5, 333, 0, 0, 1621,
    1623, 5, 194, 0, 0, 1622, 1624, 3, 30, 15, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1,
    0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1626, 5, 432, 0, 0, 1626, 155, 1, 0, 0, 0, 1627,
    1628, 5, 58, 0, 0, 1628, 1629, 5, 155, 0, 0, 1629, 1630, 3, 642, 321, 0, 1630, 1631,
    5, 224, 0, 0, 1631, 1632, 5, 329, 0, 0, 1632, 1633, 3, 480, 240, 0, 1633, 1634, 3,
    266, 133, 0, 1634, 1635, 5, 17, 0, 0, 1635, 1639, 5, 426, 0, 0, 1636, 1637, 5, 387,
    0, 0, 1637, 1638, 5, 84, 0, 0, 1638, 1640, 5, 265, 0, 0, 1639, 1636, 1, 0, 0, 0, 1639,
    1640, 1, 0, 0, 0, 1640, 1643, 1, 0, 0, 0, 1641, 1642, 5, 150, 0, 0, 1642, 1644, 3, 226,
    113, 0, 1643, 1641, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1648, 1, 0, 0, 0, 1645,
    1646, 5, 154, 0, 0, 1646, 1647, 5, 329, 0, 0, 1647, 1649, 3, 480, 240, 0, 1648, 1645,
    1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 1653, 1, 0, 0, 0, 1650, 1651, 5, 238, 0, 0,
    1651, 1652, 5, 32, 0, 0, 1652, 1654, 3, 266, 133, 0, 1653, 1650, 1, 0, 0, 0, 1653,
    1654, 1, 0, 0, 0, 1654, 1659, 1, 0, 0, 0, 1655, 1657, 3, 222, 111, 0, 1656, 1655, 1,
    0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1660, 3, 246, 123, 0,
    1659, 1656, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1663,
    3, 426, 213, 0, 1662, 1661, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1665, 1, 0, 0,
    0, 1664, 1666, 3, 224, 112, 0, 1665, 1664, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666,
    1668, 1, 0, 0, 0, 1667, 1669, 3, 196, 98, 0, 1668, 1667, 1, 0, 0, 0, 1668, 1669, 1,
    0, 0, 0, 1669, 157, 1, 0, 0, 0, 1670, 1671, 5, 101, 0, 0, 1671, 1673, 5, 155, 0, 0, 1672,
    1674, 3, 30, 15, 0, 1673, 1672, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0,
    0, 0, 1675, 1676, 3, 642, 321, 0, 1676, 1677, 5, 224, 0, 0, 1677, 1678, 3, 480, 240,
    0, 1678, 159, 1, 0, 0, 0, 1679, 1682, 5, 58, 0, 0, 1680, 1681, 5, 228, 0, 0, 1681, 1683,
    5, 278, 0, 0, 1682, 1680, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0,
    1684, 1686, 5, 378, 0, 0, 1685, 1687, 3, 32, 16, 0, 1686, 1685, 1, 0, 0, 0, 1686, 1687,
    1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1693, 3, 486, 243, 0, 1689, 1690, 5, 399,
    0, 0, 1690, 1691, 3, 306, 153, 0, 1691, 1692, 5, 400, 0, 0, 1692, 1694, 1, 0, 0, 0,
    1693, 1689, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1697,
    3, 196, 98, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1699, 1, 0, 0, 0,
    1698, 1700, 3, 162, 81, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1702,
    1, 0, 0, 0, 1701, 1703, 3, 224, 112, 0, 1702, 1701, 1, 0, 0, 0, 1702, 1703, 1, 0, 0,
    0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 5, 17, 0, 0, 1705, 1706, 3, 382, 191, 0, 1706,
    161, 1, 0, 0, 0, 1707, 1708, 5, 238, 0, 0, 1708, 1714, 5, 224, 0, 0, 1709, 1710, 5,
    399, 0, 0, 1710, 1715, 3, 254, 127, 0, 1711, 1712, 5, 316, 0, 0, 1712, 1713, 5, 399,
    0, 0, 1713, 1715, 3, 204, 102, 0, 1714, 1709, 1, 0, 0, 0, 1714, 1711, 1, 0, 0, 0, 1715,
    1716, 1, 0, 0, 0, 1716, 1717, 5, 400, 0, 0, 1717, 163, 1, 0, 0, 0, 1718, 1721, 3, 166,
    83, 0, 1719, 1721, 3, 168, 84, 0, 1720, 1718, 1, 0, 0, 0, 1720, 1719, 1, 0, 0, 0, 1721,
    165, 1, 0, 0, 0, 1722, 1723, 5, 42, 0, 0, 1723, 1724, 5, 224, 0, 0, 1724, 1725, 5, 399,
    0, 0, 1725, 1726, 3, 254, 127, 0, 1726, 1727, 5, 400, 0, 0, 1727, 167, 1, 0, 0, 0, 1728,
    1729, 3, 170, 85, 0, 1729, 1730, 3, 172, 86, 0, 1730, 169, 1, 0, 0, 0, 1731, 1732,
    5, 98, 0, 0, 1732, 1733, 5, 224, 0, 0, 1733, 1734, 5, 399, 0, 0, 1734, 1735, 3, 254,
    127, 0, 1735, 1736, 5, 400, 0, 0, 1736, 171, 1, 0, 0, 0, 1737, 1738, 5, 315, 0, 0, 1738,
    1739, 5, 224, 0, 0, 1739, 1740, 5, 399, 0, 0, 1740, 1741, 3, 254, 127, 0, 1741, 1742,
    5, 400, 0, 0, 1742, 173, 1, 0, 0, 0, 1743, 1744, 5, 101, 0, 0, 1744, 1746, 5, 378, 0,
    0, 1745, 1747, 3, 30, 15, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748,
    1, 0, 0, 0, 1748, 1749, 3, 484, 242, 0, 1749, 175, 1, 0, 0, 0, 1750, 1751, 5, 58, 0,
    0, 1751, 1752, 5, 202, 0, 0, 1752, 1754, 5, 378, 0, 0, 1753, 1755, 3, 32, 16, 0, 1754,
    1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1758, 3, 486,
    243, 0, 1757, 1759, 3, 38, 19, 0, 1758, 1757, 1, 0, 0, 0, 1758, 1759, 1, 0, 0, 0, 1759,
    1761, 1, 0, 0, 0, 1760, 1762, 3, 196, 98, 0, 1761, 1760, 1, 0, 0, 0, 1761, 1762, 1,
    0, 0, 0, 1762, 1764, 1, 0, 0, 0, 1763, 1765, 3, 162, 81, 0, 1764, 1763, 1, 0, 0, 0, 1764,
    1765, 1, 0, 0, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1768, 3, 164, 82, 0, 1767, 1766, 1,
    0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1770, 1, 0, 0, 0, 1769, 1771, 3, 222, 111, 0,
    1770, 1769, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1773, 1, 0, 0, 0, 1772, 1774,
    3, 246, 123, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1776, 1, 0, 0,
    0, 1775, 1777, 3, 426, 213, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777,
    1779, 1, 0, 0, 0, 1778, 1780, 3, 224, 112, 0, 1779, 1778, 1, 0, 0, 0, 1779, 1780, 1,
    0, 0, 0, 1780, 1781, 1, 0, 0, 0, 1781, 1782, 5, 17, 0, 0, 1782, 1783, 3, 382, 191, 0,
    1783, 177, 1, 0, 0, 0, 1784, 1785, 5, 101, 0, 0, 1785, 1786, 5, 202, 0, 0, 1786, 1788,
    5, 378, 0, 0, 1787, 1789, 3, 30, 15, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0,
    0, 1789, 1790, 1, 0, 0, 0, 1790, 1791, 3, 484, 242, 0, 1791, 179, 1, 0, 0, 0, 1792,
    1793, 5, 58, 0, 0, 1793, 1794, 5, 293, 0, 0, 1794, 1795, 5, 258, 0, 0, 1795, 1796,
    3, 642, 321, 0, 1796, 1798, 3, 188, 94, 0, 1797, 1799, 3, 190, 95, 0, 1798, 1797,
    1, 0, 0, 0, 1798, 1799, 1, 0, 0, 0, 1799, 1801, 1, 0, 0, 0, 1800, 1802, 3, 270, 135,
    0, 1801, 1800, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1803, 1, 0, 0, 0, 1803, 1804,
    3, 192, 96, 0, 1804, 181, 1, 0, 0, 0, 1805, 1806, 5, 101, 0, 0, 1806, 1807, 5, 293,
    0, 0, 1807, 1808, 5, 258, 0, 0, 1808, 1809, 3, 642, 321, 0, 1809, 183, 1, 0, 0, 0, 1810,
    1811, 5, 9, 0, 0, 1811, 1812, 5, 293, 0, 0, 1812, 1813, 5, 258, 0, 0, 1813, 1814, 3,
    642, 321, 0, 1814, 1815, 3, 186, 93, 0, 1815, 185, 1, 0, 0, 0, 1816, 1822, 3, 188,
    94, 0, 1817, 1822, 3, 190, 95, 0, 1818, 1822, 3, 270, 135, 0, 1819, 1822, 3, 192,
    96, 0, 1820, 1822, 5, 115, 0, 0, 1821, 1816, 1, 0, 0, 0, 1821, 1817, 1, 0, 0, 0, 1821,
    1818, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1820, 1, 0, 0, 0, 1822, 187, 1, 0, 0,
    0, 1823, 1824, 5, 59, 0, 0, 1824, 1839, 5, 426, 0, 0, 1825, 1827, 5, 111, 0, 0, 1826,
    1828, 5, 431, 0, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 1, 0,
    0, 0, 1829, 1836, 3, 582, 291, 0, 1830, 1834, 5, 20, 0, 0, 1831, 1832, 5, 223, 0, 0,
    1832, 1834, 5, 32, 0, 0, 1833, 1830, 1, 0, 0, 0, 1833, 1831, 1, 0, 0, 0, 1834, 1835,
    1, 0, 0, 0, 1835, 1837, 5, 426, 0, 0, 1836, 1833, 1, 0, 0, 0, 1836, 1837, 1, 0, 0, 0,
    1837, 1839, 1, 0, 0, 0, 1838, 1823, 1, 0, 0, 0, 1838, 1825, 1, 0, 0, 0, 1839, 189, 1,
    0, 0, 0, 1840, 1841, 5, 116, 0, 0, 1841, 1842, 5, 17, 0, 0, 1842, 1843, 5, 426, 0, 0,
    1843, 191, 1, 0, 0, 0, 1844, 1846, 5, 85, 0, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846,
    1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 1848, 5, 17, 0, 0, 1848, 1849, 3, 2, 1, 0, 1849,
    193, 1, 0, 0, 0, 1850, 1853, 3, 642, 321, 0, 1851, 1853, 5, 426, 0, 0, 1852, 1850,
    1, 0, 0, 0, 1852, 1851, 1, 0, 0, 0, 1853, 195, 1, 0, 0, 0, 1854, 1855, 5, 47, 0, 0, 1855,
    1856, 5, 426, 0, 0, 1856, 197, 1, 0, 0, 0, 1857, 1858, 5, 183, 0, 0, 1858, 1859, 5,
    431, 0, 0, 1859, 199, 1, 0, 0, 0, 1860, 1861, 5, 238, 0, 0, 1861, 1870, 5, 32, 0, 0,
    1862, 1865, 5, 399, 0, 0, 1863, 1866, 3, 202, 101, 0, 1864, 1866, 3, 254, 127, 0,
    1865, 1863, 1, 0, 0, 0, 1865, 1864, 1, 0, 0, 0, 1866, 1871, 1, 0, 0, 0, 1867, 1868,
    5, 316, 0, 0, 1868, 1869, 5, 399, 0, 0, 1869, 1871, 3, 204, 102, 0, 1870, 1862, 1,
    0, 0, 0, 1870, 1867, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1873, 5, 400, 0, 0, 1873,
    201, 1, 0, 0, 0, 1874, 1879, 3, 318, 159, 0, 1875, 1876, 5, 397, 0, 0, 1876, 1878,
    3, 318, 159, 0, 1877, 1875, 1, 0, 0, 0, 1878, 1881, 1, 0, 0, 0, 1879, 1877, 1, 0, 0,
    0, 1879, 1880, 1, 0, 0, 0, 1880, 203, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1882, 1887,
    3, 206, 103, 0, 1883, 1884, 5, 397, 0, 0, 1884, 1886, 3, 206, 103, 0, 1885, 1883,
    1, 0, 0, 0, 1886, 1889, 1, 0, 0, 0, 1887, 1885, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888,
    205, 1, 0, 0, 0, 1889, 1887, 1, 0, 0, 0, 1890, 1909, 3, 256, 128, 0, 1891, 1896, 3,
    670, 335, 0, 1892, 1896, 3, 672, 336, 0, 1893, 1896, 3, 676, 338, 0, 1894, 1896,
    3, 678, 339, 0, 1895, 1891, 1, 0, 0, 0, 1895, 1892, 1, 0, 0, 0, 1895, 1893, 1, 0, 0,
    0, 1895, 1894, 1, 0, 0, 0, 1896, 1897, 1, 0, 0, 0, 1897, 1898, 5, 399, 0, 0, 1898, 1899,
    3, 256, 128, 0, 1899, 1900, 5, 400, 0, 0, 1900, 1909, 1, 0, 0, 0, 1901, 1902, 7, 15,
    0, 0, 1902, 1903, 5, 399, 0, 0, 1903, 1904, 5, 431, 0, 0, 1904, 1905, 5, 397, 0, 0,
    1905, 1906, 3, 256, 128, 0, 1906, 1907, 5, 400, 0, 0, 1907, 1909, 1, 0, 0, 0, 1908,
    1890, 1, 0, 0, 0, 1908, 1895, 1, 0, 0, 0, 1908, 1901, 1, 0, 0, 0, 1909, 207, 1, 0, 0,
    0, 1910, 1911, 5, 42, 0, 0, 1911, 1912, 5, 32, 0, 0, 1912, 1913, 5, 399, 0, 0, 1913,
    1914, 3, 254, 127, 0, 1914, 1921, 5, 400, 0, 0, 1915, 1916, 5, 315, 0, 0, 1916, 1917,
    5, 32, 0, 0, 1917, 1918, 5, 399, 0, 0, 1918, 1919, 3, 264, 132, 0, 1919, 1920, 5, 400,
    0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1915, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1923,
    1, 0, 0, 0, 1923, 1924, 5, 166, 0, 0, 1924, 1925, 5, 431, 0, 0, 1925, 1926, 5, 31, 0,
    0, 1926, 209, 1, 0, 0, 0, 1927, 1928, 5, 310, 0, 0, 1928, 1929, 5, 32, 0, 0, 1929, 1930,
    5, 399, 0, 0, 1930, 1931, 3, 254, 127, 0, 1931, 1932, 5, 400, 0, 0, 1932, 1933, 5,
    224, 0, 0, 1933, 1934, 5, 399, 0, 0, 1934, 1935, 3, 292, 146, 0, 1935, 1937, 5, 400,
    0, 0, 1936, 1938, 3, 40, 20, 0, 1937, 1936, 1, 0, 0, 0, 1937, 1938, 1, 0, 0, 0, 1938,
    211, 1, 0, 0, 0, 1939, 1942, 3, 218, 109, 0, 1940, 1942, 3, 220, 110, 0, 1941, 1939,
    1, 0, 0, 0, 1941, 1940, 1, 0, 0, 0, 1942, 213, 1, 0, 0, 0, 1943, 1944, 5, 266, 0, 0, 1944,
    1945, 5, 426, 0, 0, 1945, 215, 1, 0, 0, 0, 1946, 1947, 5, 267, 0, 0, 1947, 1948, 5,
    426, 0, 0, 1948, 217, 1, 0, 0, 0, 1949, 1950, 5, 291, 0, 0, 1950, 1951, 5, 137, 0, 0,
    1951, 1952, 5, 301, 0, 0, 1952, 1956, 5, 426, 0, 0, 1953, 1954, 5, 387, 0, 0, 1954,
    1955, 5, 302, 0, 0, 1955, 1957, 3, 226, 113, 0, 1956, 1953, 1, 0, 0, 0, 1956, 1957,
    1, 0, 0, 0, 1957, 219, 1, 0, 0, 0, 1958, 1959, 5, 291, 0, 0, 1959, 1960, 5, 137, 0, 0,
    1960, 1962, 5, 87, 0, 0, 1961, 1963, 3, 236, 118, 0, 1962, 1961, 1, 0, 0, 0, 1962,
    1963, 1, 0, 0, 0, 1963, 1965, 1, 0, 0, 0, 1964, 1966, 3, 238, 119, 0, 1965, 1964, 1,
    0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 1968, 1, 0, 0, 0, 1967, 1969, 3, 240, 120, 0,
    1968, 1967, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 1971, 1, 0, 0, 0, 1970, 1972,
    3, 242, 121, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1974, 1, 0, 0,
    0, 1973, 1975, 3, 244, 122, 0, 1974, 1973, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975,
    221, 1, 0, 0, 0, 1976, 1979, 3, 220, 110, 0, 1977, 1979, 3, 218, 109, 0, 1978, 1976,
    1, 0, 0, 0, 1978, 1977, 1, 0, 0, 0, 1979, 223, 1, 0, 0, 0, 1980, 1981, 5, 332, 0, 0, 1981,
    1982, 3, 226, 113, 0, 1982, 225, 1, 0, 0, 0, 1983, 1984, 5, 399, 0, 0, 1984, 1985,
    3, 228, 114, 0, 1985, 1986, 5, 400, 0, 0, 1986, 227, 1, 0, 0, 0, 1987, 1997, 3, 232,
    116, 0, 1988, 1993, 5, 426, 0, 0, 1989, 1990, 5, 397, 0, 0, 1990, 1992, 5, 426, 0,
    0, 1991, 1989, 1, 0, 0, 0, 1992, 1995, 1, 0, 0, 0, 1993, 1991, 1, 0, 0, 0, 1993, 1994,
    1, 0, 0, 0, 1994, 1997, 1, 0, 0, 0, 1995, 1993, 1, 0, 0, 0, 1996, 1987, 1, 0, 0, 0, 1996,
    1988, 1, 0, 0, 0, 1997, 229, 1, 0, 0, 0, 1998, 1999, 5, 399, 0, 0, 1999, 2000, 3, 232,
    116, 0, 2000, 2001, 5, 400, 0, 0, 2001, 231, 1, 0, 0, 0, 2002, 2007, 3, 234, 117, 0,
    2003, 2004, 5, 397, 0, 0, 2004, 2006, 3, 234, 117, 0, 2005, 2003, 1, 0, 0, 0, 2006,
    2009, 1, 0, 0, 0, 2007, 2005, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 233, 1, 0, 0,
    0, 2009, 2007, 1, 0, 0, 0, 2010, 2011, 5, 426, 0, 0, 2011, 2012, 5, 405, 0, 0, 2012,
    2013, 5, 426, 0, 0, 2013, 235, 1, 0, 0, 0, 2014, 2015, 5, 127, 0, 0, 2015, 2016, 5,
    334, 0, 0, 2016, 2017, 5, 32, 0, 0, 2017, 2021, 5, 426, 0, 0, 2018, 2019, 5, 110, 0,
    0, 2019, 2020, 5, 32, 0, 0, 2020, 2022, 5, 426, 0, 0, 2021, 2018, 1, 0, 0, 0, 2021,
    2022, 1, 0, 0, 0, 2022, 237, 1, 0, 0, 0, 2023, 2024, 5, 44, 0, 0, 2024, 2025, 5, 169,
    0, 0, 2025, 2026, 5, 334, 0, 0, 2026, 2027, 5, 32, 0, 0, 2027, 2028, 5, 426, 0, 0, 2028,
    239, 1, 0, 0, 0, 2029, 2030, 5, 198, 0, 0, 2030, 2031, 5, 174, 0, 0, 2031, 2032, 5,
    334, 0, 0, 2032, 2033, 5, 32, 0, 0, 2033, 2034, 5, 426, 0, 0, 2034, 241, 1, 0, 0, 0,
    2035, 2036, 5, 186, 0, 0, 2036, 2037, 5, 334, 0, 0, 2037, 2038, 5, 32, 0, 0, 2038,
    2039, 5, 426, 0, 0, 2039, 243, 1, 0, 0, 0, 2040, 2041, 5, 219, 0, 0, 2041, 2042, 5,
    85, 0, 0, 2042, 2043, 5, 17, 0, 0, 2043, 2044, 5, 426, 0, 0, 2044, 245, 1, 0, 0, 0, 2045,
    2046, 5, 321, 0, 0, 2046, 2047, 5, 17, 0, 0, 2047, 2048, 5, 160, 0, 0, 2048, 2049,
    5, 426, 0, 0, 2049, 2050, 5, 233, 0, 0, 2050, 2055, 5, 426, 0, 0, 2051, 2052, 5, 159,
    0, 0, 2052, 2053, 5, 426, 0, 0, 2053, 2054, 5, 232, 0, 0, 2054, 2056, 5, 426, 0, 0,
    2055, 2051, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2087, 1, 0, 0, 0, 2057, 2058,
    5, 321, 0, 0, 2058, 2059, 5, 32, 0, 0, 2059, 2063, 5, 426, 0, 0, 2060, 2061, 5, 387,
    0, 0, 2061, 2062, 5, 302, 0, 0, 2062, 2064, 3, 226, 113, 0, 2063, 2060, 1, 0, 0, 0,
    2063, 2064, 1, 0, 0, 0, 2064, 2068, 1, 0, 0, 0, 2065, 2066, 5, 321, 0, 0, 2066, 2067,
    5, 17, 0, 0, 2067, 2069, 3, 642, 321, 0, 2068, 2065, 1, 0, 0, 0, 2068, 2069, 1, 0, 0,
    0, 2069, 2087, 1, 0, 0, 0, 2070, 2071, 5, 321, 0, 0, 2071, 2072, 5, 32, 0, 0, 2072,
    2076, 3, 642, 321, 0, 2073, 2074, 5, 387, 0, 0, 2074, 2075, 5, 302, 0, 0, 2075, 2077,
    3, 226, 113, 0, 2076, 2073, 1, 0, 0, 0, 2076, 2077, 1, 0, 0, 0, 2077, 2081, 1, 0, 0,
    0, 2078, 2079, 5, 321, 0, 0, 2079, 2080, 5, 17, 0, 0, 2080, 2082, 3, 642, 321, 0, 2081,
    2078, 1, 0, 0, 0, 2081, 2082, 1, 0, 0, 0, 2082, 2087, 1, 0, 0, 0, 2083, 2084, 5, 321,
    0, 0, 2084, 2085, 5, 17, 0, 0, 2085, 2087, 3, 642, 321, 0, 2086, 2045, 1, 0, 0, 0, 2086,
    2057, 1, 0, 0, 0, 2086, 2070, 1, 0, 0, 0, 2086, 2083, 1, 0, 0, 0, 2087, 247, 1, 0, 0,
    0, 2088, 2093, 3, 312, 156, 0, 2089, 2090, 5, 397, 0, 0, 2090, 2092, 3, 312, 156,
    0, 2091, 2089, 1, 0, 0, 0, 2092, 2095, 1, 0, 0, 0, 2093, 2091, 1, 0, 0, 0, 2093, 2094,
    1, 0, 0, 0, 2094, 249, 1, 0, 0, 0, 2095, 2093, 1, 0, 0, 0, 2096, 2101, 3, 314, 157, 0,
    2097, 2098, 5, 397, 0, 0, 2098, 2100, 3, 314, 157, 0, 2099, 2097, 1, 0, 0, 0, 2100,
    2103, 1, 0, 0, 0, 2101, 2099, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 251, 1, 0, 0,
    0, 2103, 2101, 1, 0, 0, 0, 2104, 2109, 3, 342, 171, 0, 2105, 2106, 5, 397, 0, 0, 2106,
    2108, 3, 342, 171, 0, 2107, 2105, 1, 0, 0, 0, 2108, 2111, 1, 0, 0, 0, 2109, 2107, 1,
    0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 253, 1, 0, 0, 0, 2111, 2109, 1, 0, 0, 0, 2112,
    2117, 3, 256, 128, 0, 2113, 2114, 5, 397, 0, 0, 2114, 2116, 3, 256, 128, 0, 2115,
    2113, 1, 0, 0, 0, 2116, 2119, 1, 0, 0, 0, 2117, 2115, 1, 0, 0, 0, 2117, 2118, 1, 0, 0,
    0, 2118, 255, 1, 0, 0, 0, 2119, 2117, 1, 0, 0, 0, 2120, 2123, 3, 686, 343, 0, 2121,
    2123, 4, 128, 0, 0, 2122, 2120, 1, 0, 0, 0, 2122, 2121, 1, 0, 0, 0, 2123, 257, 1, 0,
    0, 0, 2124, 2125, 3, 686, 343, 0, 2125, 259, 1, 0, 0, 0, 2126, 2127, 3, 642, 321, 0,
    2127, 261, 1, 0, 0, 0, 2128, 2138, 3, 256, 128, 0, 2129, 2134, 5, 395, 0, 0, 2130,
    2135, 5, 104, 0, 0, 2131, 2135, 5, 175, 0, 0, 2132, 2135, 5, 375, 0, 0, 2133, 2135,
    3, 642, 321, 0, 2134, 2130, 1, 0, 0, 0, 2134, 2131, 1, 0, 0, 0, 2134, 2132, 1, 0, 0,
    0, 2134, 2133, 1, 0, 0, 0, 2135, 2137, 1, 0, 0, 0, 2136, 2129, 1, 0, 0, 0, 2137, 2140,
    1, 0, 0, 0, 2138, 2136, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 263, 1, 0, 0, 0, 2140,
    2138, 1, 0, 0, 0, 2141, 2146, 3, 304, 152, 0, 2142, 2143, 5, 397, 0, 0, 2143, 2145,
    3, 304, 152, 0, 2144, 2142, 1, 0, 0, 0, 2145, 2148, 1, 0, 0, 0, 2146, 2144, 1, 0, 0,
    0, 2146, 2147, 1, 0, 0, 0, 2147, 265, 1, 0, 0, 0, 2148, 2146, 1, 0, 0, 0, 2149, 2150,
    5, 399, 0, 0, 2150, 2151, 3, 254, 127, 0, 2151, 2152, 5, 400, 0, 0, 2152, 267, 1, 0,
    0, 0, 2153, 2155, 3, 270, 135, 0, 2154, 2156, 3, 272, 136, 0, 2155, 2154, 1, 0, 0,
    0, 2155, 2156, 1, 0, 0, 0, 2156, 2159, 1, 0, 0, 0, 2157, 2159, 3, 274, 137, 0, 2158,
    2153, 1, 0, 0, 0, 2158, 2157, 1, 0, 0, 0, 2159, 269, 1, 0, 0, 0, 2160, 2163, 3, 666,
    333, 0, 2161, 2163, 3, 668, 334, 0, 2162, 2160, 1, 0, 0, 0, 2162, 2161, 1, 0, 0, 0,
    2163, 271, 1, 0, 0, 0, 2164, 2165, 7, 16, 0, 0, 2165, 273, 1, 0, 0, 0, 2166, 2170, 5,
    109, 0, 0, 2167, 2168, 5, 216, 0, 0, 2168, 2170, 5, 109, 0, 0, 2169, 2166, 1, 0, 0,
    0, 2169, 2167, 1, 0, 0, 0, 2170, 275, 1, 0, 0, 0, 2171, 2172, 7, 17, 0, 0, 2172, 277,
    1, 0, 0, 0, 2173, 2174, 5, 55, 0, 0, 2174, 2176, 3, 642, 321, 0, 2175, 2173, 1, 0, 0,
    0, 2175, 2176, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2179, 3, 282, 141, 0, 2178,
    2180, 3, 338, 169, 0, 2179, 2178, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 279, 1,
    0, 0, 0, 2181, 2182, 5, 55, 0, 0, 2182, 2183, 3, 642, 321, 0, 2183, 2185, 3, 282, 141,
    0, 2184, 2186, 3, 340, 170, 0, 2185, 2184, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186,
    281, 1, 0, 0, 0, 2187, 2190, 3, 284, 142, 0, 2188, 2190, 3, 286, 143, 0, 2189, 2187,
    1, 0, 0, 0, 2189, 2188, 1, 0, 0, 0, 2190, 283, 1, 0, 0, 0, 2191, 2192, 3, 336, 168, 0,
    2192, 2193, 3, 266, 133, 0, 2193, 285, 1, 0, 0, 0, 2194, 2195, 5, 40, 0, 0, 2195, 2196,
    5, 399, 0, 0, 2196, 2197, 3, 584, 292, 0, 2197, 2198, 5, 400, 0, 0, 2198, 287, 1, 0,
    0, 0, 2199, 2200, 5, 55, 0, 0, 2200, 2202, 3, 642, 321, 0, 2201, 2199, 1, 0, 0, 0, 2201,
    2202, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2204, 5, 136, 0, 0, 2204, 2205, 5, 173,
    0, 0, 2205, 2206, 3, 266, 133, 0, 2206, 2207, 5, 269, 0, 0, 2207, 2208, 3, 480, 240,
    0, 2208, 2210, 3, 266, 133, 0, 2209, 2211, 3, 338, 169, 0, 2210, 2209, 1, 0, 0, 0,
    2210, 2211, 1, 0, 0, 0, 2211, 289, 1, 0, 0, 0, 2212, 2213, 5, 55, 0, 0, 2213, 2214,
    3, 642, 321, 0, 2214, 2215, 5, 136, 0, 0, 2215, 2216, 5, 173, 0, 0, 2216, 2217, 3,
    266, 133, 0, 2217, 2218, 5, 269, 0, 0, 2218, 2219, 3, 480, 240, 0, 2219, 2221, 3,
    266, 133, 0, 2220, 2222, 3, 340, 170, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0,
    0, 0, 2222, 291, 1, 0, 0, 0, 2223, 2226, 3, 298, 149, 0, 2224, 2226, 3, 294, 147, 0,
    2225, 2223, 1, 0, 0, 0, 2225, 2224, 1, 0, 0, 0, 2226, 293, 1, 0, 0, 0, 2227, 2232, 3,
    296, 148, 0, 2228, 2229, 5, 397, 0, 0, 2229, 2231, 3, 296, 148, 0, 2230, 2228, 1,
    0, 0, 0, 2231, 2234, 1, 0, 0, 0, 2232, 2230, 1, 0, 0, 0, 2232, 2233, 1, 0, 0, 0, 2233,
    295, 1, 0, 0, 0, 2234, 2232, 1, 0, 0, 0, 2235, 2236, 5, 399, 0, 0, 2236, 2237, 3, 298,
    149, 0, 2237, 2238, 5, 400, 0, 0, 2238, 297, 1, 0, 0, 0, 2239, 2244, 3, 576, 288, 0,
    2240, 2241, 5, 397, 0, 0, 2241, 2243, 3, 576, 288, 0, 2242, 2240, 1, 0, 0, 0, 2243,
    2246, 1, 0, 0, 0, 2244, 2242, 1, 0, 0, 0, 2244, 2245, 1, 0, 0, 0, 2245, 299, 1, 0, 0,
    0, 2246, 2244, 1, 0, 0, 0, 2247, 2248, 7, 18, 0, 0, 2248, 301, 1, 0, 0, 0, 2249, 2250,
    5, 220, 0, 0, 2250, 2251, 7, 19, 0, 0, 2251, 303, 1, 0, 0, 0, 2252, 2254, 3, 256, 128,
    0, 2253, 2255, 3, 300, 150, 0, 2254, 2253, 1, 0, 0, 0, 2254, 2255, 1, 0, 0, 0, 2255,
    2257, 1, 0, 0, 0, 2256, 2258, 3, 302, 151, 0, 2257, 2256, 1, 0, 0, 0, 2257, 2258, 1,
    0, 0, 0, 2258, 305, 1, 0, 0, 0, 2259, 2264, 3, 308, 154, 0, 2260, 2261, 5, 397, 0, 0,
    2261, 2263, 3, 308, 154, 0, 2262, 2260, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262,
    1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 307, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267,
    2270, 3, 260, 130, 0, 2268, 2269, 5, 47, 0, 0, 2269, 2271, 5, 426, 0, 0, 2270, 2268,
    1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 309, 1, 0, 0, 0, 2272, 2275, 3, 256, 128, 0,
    2273, 2275, 3, 584, 292, 0, 2274, 2272, 1, 0, 0, 0, 2274, 2273, 1, 0, 0, 0, 2275, 2277,
    1, 0, 0, 0, 2276, 2278, 3, 300, 150, 0, 2277, 2276, 1, 0, 0, 0, 2277, 2278, 1, 0, 0,
    0, 2278, 2280, 1, 0, 0, 0, 2279, 2281, 3, 302, 151, 0, 2280, 2279, 1, 0, 0, 0, 2280,
    2281, 1, 0, 0, 0, 2281, 311, 1, 0, 0, 0, 2282, 2283, 3, 260, 130, 0, 2283, 2286, 3,
    344, 172, 0, 2284, 2285, 5, 47, 0, 0, 2285, 2287, 5, 426, 0, 0, 2286, 2284, 1, 0, 0,
    0, 2286, 2287, 1, 0, 0, 0, 2287, 313, 1, 0, 0, 0, 2288, 2291, 3, 316, 158, 0, 2289,
    2291, 3, 318, 159, 0, 2290, 2288, 1, 0, 0, 0, 2290, 2289, 1, 0, 0, 0, 2291, 315, 1,
    0, 0, 0, 2292, 2295, 3, 288, 144, 0, 2293, 2295, 3, 278, 139, 0, 2294, 2292, 1, 0,
    0, 0, 2294, 2293, 1, 0, 0, 0, 2295, 317, 1, 0, 0, 0, 2296, 2297, 3, 260, 130, 0, 2297,
    2299, 3, 344, 172, 0, 2298, 2300, 3, 320, 160, 0, 2299, 2298, 1, 0, 0, 0, 2299, 2300,
    1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2302, 5, 47, 0, 0, 2302, 2304, 5, 426, 0, 0,
    2303, 2301, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 319, 1, 0, 0, 0, 2305, 2308, 3,
    322, 161, 0, 2306, 2308, 3, 324, 162, 0, 2307, 2305, 1, 0, 0, 0, 2307, 2306, 1, 0,
    0, 0, 2308, 321, 1, 0, 0, 0, 2309, 2310, 5, 55, 0, 0, 2310, 2312, 3, 642, 321, 0, 2311,
    2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2314, 5, 269,
    0, 0, 2314, 2315, 3, 480, 240, 0, 2315, 2316, 5, 399, 0, 0, 2316, 2317, 3, 256, 128,
    0, 2317, 2319, 5, 400, 0, 0, 2318, 2320, 3, 338, 169, 0, 2319, 2318, 1, 0, 0, 0, 2319,
    2320, 1, 0, 0, 0, 2320, 323, 1, 0, 0, 0, 2321, 2322, 5, 55, 0, 0, 2322, 2324, 3, 642,
    321, 0, 2323, 2321, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325,
    2327, 3, 332, 166, 0, 2326, 2328, 3, 338, 169, 0, 2327, 2326, 1, 0, 0, 0, 2327, 2328,
    1, 0, 0, 0, 2328, 325, 1, 0, 0, 0, 2329, 2332, 3, 328, 164, 0, 2330, 2332, 3, 330, 165,
    0, 2331, 2329, 1, 0, 0, 0, 2331, 2330, 1, 0, 0, 0, 2332, 327, 1, 0, 0, 0, 2333, 2334,
    5, 55, 0, 0, 2334, 2336, 3, 642, 321, 0, 2335, 2333, 1, 0, 0, 0, 2335, 2336, 1, 0, 0,
    0, 2336, 2337, 1, 0, 0, 0, 2337, 2338, 5, 269, 0, 0, 2338, 2339, 3, 480, 240, 0, 2339,
    2340, 5, 399, 0, 0, 2340, 2341, 3, 256, 128, 0, 2341, 2343, 5, 400, 0, 0, 2342, 2344,
    3, 340, 170, 0, 2343, 2342, 1, 0, 0, 0, 2343, 2344, 1, 0, 0, 0, 2344, 329, 1, 0, 0, 0,
    2345, 2346, 5, 55, 0, 0, 2346, 2348, 3, 642, 321, 0, 2347, 2345, 1, 0, 0, 0, 2347,
    2348, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2351, 3, 332, 166, 0, 2350, 2352, 3,
    340, 170, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 331, 1, 0, 0, 0, 2353,
    2354, 5, 216, 0, 0, 2354, 2360, 5, 219, 0, 0, 2355, 2356, 5, 83, 0, 0, 2356, 2360,
    3, 334, 167, 0, 2357, 2360, 3, 286, 143, 0, 2358, 2360, 3, 336, 168, 0, 2359, 2353,
    1, 0, 0, 0, 2359, 2355, 1, 0, 0, 0, 2359, 2357, 1, 0, 0, 0, 2359, 2358, 1, 0, 0, 0, 2360,
    333, 1, 0, 0, 0, 2361, 2365, 3, 576, 288, 0, 2362, 2365, 3, 554, 277, 0, 2363, 2365,
    3, 564, 282, 0, 2364, 2361, 1, 0, 0, 0, 2364, 2362, 1, 0, 0, 0, 2364, 2363, 1, 0, 0,
    0, 2365, 335, 1, 0, 0, 0, 2366, 2367, 5, 251, 0, 0, 2367, 2370, 5, 173, 0, 0, 2368,
    2370, 5, 358, 0, 0, 2369, 2366, 1, 0, 0, 0, 2369, 2368, 1, 0, 0, 0, 2370, 337, 1, 0,
    0, 0, 2371, 2373, 3, 268, 134, 0, 2372, 2374, 3, 276, 138, 0, 2373, 2372, 1, 0, 0,
    0, 2373, 2374, 1, 0, 0, 0, 2374, 339, 1, 0, 0, 0, 2375, 2377, 3, 268, 134, 0, 2376,
    2378, 3, 276, 138, 0, 2377, 2376, 1, 0, 0, 0, 2377, 2378, 1, 0, 0, 0, 2378, 341, 1,
    0, 0, 0, 2379, 2380, 3, 260, 130, 0, 2380, 2381, 5, 396, 0, 0, 2381, 2384, 3, 344,
    172, 0, 2382, 2383, 5, 47, 0, 0, 2383, 2385, 5, 426, 0, 0, 2384, 2382, 1, 0, 0, 0, 2384,
    2385, 1, 0, 0, 0, 2385, 343, 1, 0, 0, 0, 2386, 2387, 3, 348, 174, 0, 2387, 345, 1, 0,
    0, 0, 2388, 2393, 3, 344, 172, 0, 2389, 2390, 5, 397, 0, 0, 2390, 2392, 3, 344, 172,
    0, 2391, 2389, 1, 0, 0, 0, 2392, 2395, 1, 0, 0, 0, 2393, 2391, 1, 0, 0, 0, 2393, 2394,
    1, 0, 0, 0, 2394, 347, 1, 0, 0, 0, 2395, 2393, 1, 0, 0, 0, 2396, 2402, 3, 350, 175, 0,
    2397, 2402, 3, 352, 176, 0, 2398, 2402, 3, 354, 177, 0, 2399, 2402, 3, 356, 178,
    0, 2400, 2402, 3, 358, 179, 0, 2401, 2396, 1, 0, 0, 0, 2401, 2397, 1, 0, 0, 0, 2401,
    2398, 1, 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2401, 2400, 1, 0, 0, 0, 2402, 349, 1, 0, 0,
    0, 2403, 2441, 5, 340, 0, 0, 2404, 2441, 5, 311, 0, 0, 2405, 2441, 5, 162, 0, 0, 2406,
    2441, 5, 163, 0, 0, 2407, 2441, 5, 26, 0, 0, 2408, 2441, 5, 28, 0, 0, 2409, 2441, 5,
    131, 0, 0, 2410, 2441, 5, 264, 0, 0, 2411, 2413, 5, 100, 0, 0, 2412, 2414, 5, 248,
    0, 0, 2413, 2412, 1, 0, 0, 0, 2413, 2414, 1, 0, 0, 0, 2414, 2441, 1, 0, 0, 0, 2415, 2441,
    5, 71, 0, 0, 2416, 2441, 5, 72, 0, 0, 2417, 2441, 5, 337, 0, 0, 2418, 2441, 5, 338,
    0, 0, 2419, 2420, 5, 337, 0, 0, 2420, 2421, 5, 387, 0, 0, 2421, 2422, 5, 188, 0, 0,
    2422, 2423, 5, 336, 0, 0, 2423, 2441, 5, 394, 0, 0, 2424, 2441, 5, 323, 0, 0, 2425,
    2441, 5, 27, 0, 0, 2426, 2434, 3, 684, 342, 0, 2427, 2428, 5, 399, 0, 0, 2428, 2431,
    5, 431, 0, 0, 2429, 2430, 5, 397, 0, 0, 2430, 2432, 5, 431, 0, 0, 2431, 2429, 1, 0,
    0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2435, 5, 400, 0, 0, 2434,
    2427, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2441, 1, 0, 0, 0, 2436, 2437, 7, 20,
    0, 0, 2437, 2438, 5, 399, 0, 0, 2438, 2439, 5, 431, 0, 0, 2439, 2441, 5, 400, 0, 0,
    2440, 2403, 1, 0, 0, 0, 2440, 2404, 1, 0, 0, 0, 2440, 2405, 1, 0, 0, 0, 2440, 2406,
    1, 0, 0, 0, 2440, 2407, 1, 0, 0, 0, 2440, 2408, 1, 0, 0, 0, 2440, 2409, 1, 0, 0, 0, 2440,
    2410, 1, 0, 0, 0, 2440, 2411, 1, 0, 0, 0, 2440, 2415, 1, 0, 0, 0, 2440, 2416, 1, 0, 0,
    0, 2440, 2417, 1, 0, 0, 0, 2440, 2418, 1, 0, 0, 0, 2440, 2419, 1, 0, 0, 0, 2440, 2424,
    1, 0, 0, 0, 2440, 2425, 1, 0, 0, 0, 2440, 2426, 1, 0, 0, 0, 2440, 2436, 1, 0, 0, 0, 2441,
    351, 1, 0, 0, 0, 2442, 2443, 5, 16, 0, 0, 2443, 2444, 5, 409, 0, 0, 2444, 2445, 3, 348,
    174, 0, 2445, 2446, 5, 411, 0, 0, 2446, 353, 1, 0, 0, 0, 2447, 2448, 5, 324, 0, 0, 2448,
    2449, 5, 409, 0, 0, 2449, 2450, 3, 252, 126, 0, 2450, 2451, 5, 411, 0, 0, 2451, 355,
    1, 0, 0, 0, 2452, 2453, 5, 198, 0, 0, 2453, 2454, 5, 409, 0, 0, 2454, 2455, 3, 350,
    175, 0, 2455, 2456, 5, 397, 0, 0, 2456, 2457, 3, 348, 174, 0, 2457, 2458, 5, 411,
    0, 0, 2458, 357, 1, 0, 0, 0, 2459, 2460, 5, 357, 0, 0, 2460, 2461, 5, 409, 0, 0, 2461,
    2462, 3, 346, 173, 0, 2462, 2463, 5, 411, 0, 0, 2463, 359, 1, 0, 0, 0, 2464, 2466,
    7, 21, 0, 0, 2465, 2467, 7, 22, 0, 0, 2466, 2465, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0,
    2467, 361, 1, 0, 0, 0, 2468, 2470, 3, 366, 183, 0, 2469, 2468, 1, 0, 0, 0, 2469, 2470,
    1, 0, 0, 0, 2470, 2471, 1, 0, 0, 0, 2471, 2472, 3, 364, 182, 0, 2472, 363, 1, 0, 0, 0,
    2473, 2476, 3, 370, 185, 0, 2474, 2476, 3, 374, 187, 0, 2475, 2473, 1, 0, 0, 0, 2475,
    2474, 1, 0, 0, 0, 2476, 365, 1, 0, 0, 0, 2477, 2478, 5, 387, 0, 0, 2478, 2483, 3, 368,
    184, 0, 2479, 2480, 5, 397, 0, 0, 2480, 2482, 3, 368, 184, 0, 2481, 2479, 1, 0, 0,
    0, 2482, 2485, 1, 0, 0, 0, 2483, 2481, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 367,
    1, 0, 0, 0, 2485, 2483, 1, 0, 0, 0, 2486, 2491, 3, 642, 321, 0, 2487, 2488, 5, 399,
    0, 0, 2488, 2489, 3, 254, 127, 0, 2489, 2490, 5, 400, 0, 0, 2490, 2492, 1, 0, 0, 0,
    2491, 2487, 1, 0, 0, 0, 2491, 2492, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 2494,
    5, 17, 0, 0, 2494, 2495, 5, 399, 0, 0, 2495, 2496, 3, 362, 181, 0, 2496, 2497, 5, 400,
    0, 0, 2497, 369, 1, 0, 0, 0, 2498, 2504, 3, 372, 186, 0, 2499, 2500, 3, 360, 180, 0,
    2500, 2501, 3, 372, 186, 0, 2501, 2503, 1, 0, 0, 0, 2502, 2499, 1, 0, 0, 0, 2503, 2506,
    1, 0, 0, 0, 2504, 2502, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 371, 1, 0, 0, 0, 2506,
    2504, 1, 0, 0, 0, 2507, 2508, 3, 450, 225, 0, 2508, 2509, 3, 384, 192, 0, 2509, 2511,
    3, 502, 251, 0, 2510, 2512, 3, 464, 232, 0, 2511, 2510, 1, 0, 0, 0, 2511, 2512, 1,
    0, 0, 0, 2512, 2514, 1, 0, 0, 0, 2513, 2515, 3, 496, 248, 0, 2514, 2513, 1, 0, 0, 0,
    2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2518, 3, 522, 261, 0, 2517, 2516,
    1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2520, 1, 0, 0, 0, 2519, 2521, 3, 530, 265,
    0, 2520, 2519, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2523, 1, 0, 0, 0, 2522, 2524,
    3, 514, 257, 0, 2523, 2522, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 2526, 1, 0, 0,
    0, 2525, 2527, 3, 532, 266, 0, 2526, 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527,
    2529, 1, 0, 0, 0, 2528, 2530, 3, 544, 272, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1,
    0, 0, 0, 2530, 2532, 1, 0, 0, 0, 2531, 2533, 3, 548, 274, 0, 2532, 2531, 1, 0, 0, 0,
    2532, 2533, 1, 0, 0, 0, 2533, 2535, 1, 0, 0, 0, 2534, 2536, 3, 550, 275, 0, 2535, 2534,
    1, 0, 0, 0, 2535, 2536, 1, 0, 0, 0, 2536, 2538, 1, 0, 0, 0, 2537, 2539, 3, 552, 276,
    0, 2538, 2537, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2541, 1, 0, 0, 0, 2540, 2542,
    3, 388, 194, 0, 2541, 2540, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 2579, 1, 0, 0,
    0, 2543, 2544, 3, 450, 225, 0, 2544, 2546, 3, 502, 251, 0, 2545, 2547, 3, 464, 232,
    0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2549, 1, 0, 0, 0, 2548, 2550,
    3, 496, 248, 0, 2549, 2548, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2552, 1, 0, 0,
    0, 2551, 2553, 3, 522, 261, 0, 2552, 2551, 1, 0, 0, 0, 2552, 2553, 1, 0, 0, 0, 2553,
    2555, 1, 0, 0, 0, 2554, 2556, 3, 530, 265, 0, 2555, 2554, 1, 0, 0, 0, 2555, 2556, 1,
    0, 0, 0, 2556, 2558, 1, 0, 0, 0, 2557, 2559, 3, 514, 257, 0, 2558, 2557, 1, 0, 0, 0,
    2558, 2559, 1, 0, 0, 0, 2559, 2561, 1, 0, 0, 0, 2560, 2562, 3, 532, 266, 0, 2561, 2560,
    1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2564, 1, 0, 0, 0, 2563, 2565, 3, 544, 272,
    0, 2564, 2563, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 1, 0, 0, 0, 2566, 2568,
    3, 548, 274, 0, 2567, 2566, 1, 0, 0, 0, 2567, 2568, 1, 0, 0, 0, 2568, 2570, 1, 0, 0,
    0, 2569, 2571, 3, 550, 275, 0, 2570, 2569, 1, 0, 0, 0, 2570, 2571, 1, 0, 0, 0, 2571,
    2573, 1, 0, 0, 0, 2572, 2574, 3, 552, 276, 0, 2573, 2572, 1, 0, 0, 0, 2573, 2574, 1,
    0, 0, 0, 2574, 2576, 1, 0, 0, 0, 2575, 2577, 3, 388, 194, 0, 2576, 2575, 1, 0, 0, 0,
    2576, 2577, 1, 0, 0, 0, 2577, 2579, 1, 0, 0, 0, 2578, 2507, 1, 0, 0, 0, 2578, 2543,
    1, 0, 0, 0, 2579, 373, 1, 0, 0, 0, 2580, 2581, 3, 384, 192, 0, 2581, 2582, 3, 378, 189,
    0, 2582, 2585, 1, 0, 0, 0, 2583, 2585, 3, 378, 189, 0, 2584, 2580, 1, 0, 0, 0, 2584,
    2583, 1, 0, 0, 0, 2585, 375, 1, 0, 0, 0, 2586, 2588, 3, 502, 251, 0, 2587, 2589, 3,
    450, 225, 0, 2588, 2587, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2591, 1, 0, 0, 0,
    2590, 2592, 3, 496, 248, 0, 2591, 2590, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2594,
    1, 0, 0, 0, 2593, 2595, 3, 522, 261, 0, 2594, 2593, 1, 0, 0, 0, 2594, 2595, 1, 0, 0,
    0, 2595, 2597, 1, 0, 0, 0, 2596, 2598, 3, 530, 265, 0, 2597, 2596, 1, 0, 0, 0, 2597,
    2598, 1, 0, 0, 0, 2598, 2600, 1, 0, 0, 0, 2599, 2601, 3, 514, 257, 0, 2600, 2599, 1,
    0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2603, 1, 0, 0, 0, 2602, 2604, 3, 532, 266, 0,
    2603, 2602, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2611, 1, 0, 0, 0, 2605, 2606,
    5, 399, 0, 0, 2606, 2607, 3, 378, 189, 0, 2607, 2608, 5, 400, 0, 0, 2608, 2611, 1,
    0, 0, 0, 2609, 2611, 3, 498, 249, 0, 2610, 2586, 1, 0, 0, 0, 2610, 2605, 1, 0, 0, 0,
    2610, 2609, 1, 0, 0, 0, 2611, 377, 1, 0, 0, 0, 2612, 2614, 3, 376, 188, 0, 2613, 2615,
    3, 380, 190, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2617, 1, 0, 0,
    0, 2616, 2618, 3, 544, 272, 0, 2617, 2616, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618,
    2620, 1, 0, 0, 0, 2619, 2621, 3, 548, 274, 0, 2620, 2619, 1, 0, 0, 0, 2620, 2621, 1,
    0, 0, 0, 2621, 2623, 1, 0, 0, 0, 2622, 2624, 3, 550, 275, 0, 2623, 2622, 1, 0, 0, 0,
    2623, 2624, 1, 0, 0, 0, 2624, 2626, 1, 0, 0, 0, 2625, 2627, 3, 552, 276, 0, 2626, 2625,
    1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2629, 1, 0, 0, 0, 2628, 2630, 3, 388, 194,
    0, 2629, 2628, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 379, 1, 0, 0, 0, 2631, 2632,
    3, 360, 180, 0, 2632, 2633, 3, 376, 188, 0, 2633, 2635, 1, 0, 0, 0, 2634, 2631, 1,
    0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2634, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637,
    381, 1, 0, 0, 0, 2638, 2640, 3, 366, 183, 0, 2639, 2638, 1, 0, 0, 0, 2639, 2640, 1,
    0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 3, 378, 189, 0, 2642, 383, 1, 0, 0, 0, 2643,
    2660, 5, 161, 0, 0, 2644, 2645, 5, 235, 0, 0, 2645, 2647, 3, 386, 193, 0, 2646, 2648,
    3, 32, 16, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 2661, 1, 0, 0, 0,
    2649, 2651, 5, 166, 0, 0, 2650, 2652, 5, 329, 0, 0, 2651, 2650, 1, 0, 0, 0, 2651, 2652,
    1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2658, 3, 628, 314, 0, 2654, 2655, 5, 399,
    0, 0, 2655, 2656, 3, 254, 127, 0, 2656, 2657, 5, 400, 0, 0, 2657, 2659, 1, 0, 0, 0,
    2658, 2654, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 2661, 1, 0, 0, 0, 2660, 2644,
    1, 0, 0, 0, 2660, 2649, 1, 0, 0, 0, 2661, 385, 1, 0, 0, 0, 2662, 2664, 5, 188, 0, 0, 2663,
    2662, 1, 0, 0, 0, 2663, 2664, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 2666, 5, 93,
    0, 0, 2666, 2668, 5, 426, 0, 0, 2667, 2669, 3, 222, 111, 0, 2668, 2667, 1, 0, 0, 0,
    2668, 2669, 1, 0, 0, 0, 2669, 2671, 1, 0, 0, 0, 2670, 2672, 3, 246, 123, 0, 2671, 2670,
    1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2676, 1, 0, 0, 0, 2673, 2674, 5, 329, 0, 0,
    2674, 2676, 3, 628, 314, 0, 2675, 2663, 1, 0, 0, 0, 2675, 2673, 1, 0, 0, 0, 2676, 387,
    1, 0, 0, 0, 2677, 2686, 5, 185, 0, 0, 2678, 2679, 5, 431, 0, 0, 2679, 2681, 5, 397,
    0, 0, 2680, 2678, 1, 0, 0, 0, 2680, 2681, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2687,
    5, 431, 0, 0, 2683, 2684, 5, 431, 0, 0, 2684, 2685, 5, 223, 0, 0, 2685, 2687, 5, 431,
    0, 0, 2686, 2680, 1, 0, 0, 0, 2686, 2683, 1, 0, 0, 0, 2687, 389, 1, 0, 0, 0, 2688, 2689,
    3, 256, 128, 0, 2689, 2690, 5, 405, 0, 0, 2690, 2691, 3, 392, 196, 0, 2691, 391, 1,
    0, 0, 0, 2692, 2695, 5, 83, 0, 0, 2693, 2695, 3, 594, 297, 0, 2694, 2692, 1, 0, 0, 0,
    2694, 2693, 1, 0, 0, 0, 2695, 393, 1, 0, 0, 0, 2696, 2697, 5, 304, 0, 0, 2697, 2702,
    3, 390, 195, 0, 2698, 2699, 5, 397, 0, 0, 2699, 2701, 3, 390, 195, 0, 2700, 2698,
    1, 0, 0, 0, 2701, 2704, 1, 0, 0, 0, 2702, 2700, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703,
    395, 1, 0, 0, 0, 2704, 2702, 1, 0, 0, 0, 2705, 2706, 5, 318, 0, 0, 2706, 2715, 5, 344,
    0, 0, 2707, 2712, 3, 398, 199, 0, 2708, 2709, 5, 397, 0, 0, 2709, 2711, 3, 398, 199,
    0, 2710, 2708, 1, 0, 0, 0, 2711, 2714, 1, 0, 0, 0, 2712, 2710, 1, 0, 0, 0, 2712, 2713,
    1, 0, 0, 0, 2713, 2716, 1, 0, 0, 0, 2714, 2712, 1, 0, 0, 0, 2715, 2707, 1, 0, 0, 0, 2715,
    2716, 1, 0, 0, 0, 2716, 2729, 1, 0, 0, 0, 2717, 2719, 5, 48, 0, 0, 2718, 2720, 5, 389,
    0, 0, 2719, 2718, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 2729, 1, 0, 0, 0, 2721, 2723,
    5, 289, 0, 0, 2722, 2724, 5, 389, 0, 0, 2723, 2722, 1, 0, 0, 0, 2723, 2724, 1, 0, 0,
    0, 2724, 2729, 1, 0, 0, 0, 2725, 2726, 5, 304, 0, 0, 2726, 2727, 5, 22, 0, 0, 2727,
    2729, 7, 23, 0, 0, 2728, 2705, 1, 0, 0, 0, 2728, 2717, 1, 0, 0, 0, 2728, 2721, 1, 0,
    0, 0, 2728, 2725, 1, 0, 0, 0, 2729, 397, 1, 0, 0, 0, 2730, 2731, 5, 168, 0, 0, 2731,
    2732, 5, 182, 0, 0, 2732, 2736, 5, 312, 0, 0, 2733, 2734, 5, 261, 0, 0, 2734, 2736,
    7, 24, 0, 0, 2735, 2730, 1, 0, 0, 0, 2735, 2733, 1, 0, 0, 0, 2736, 399, 1, 0, 0, 0, 2737,
    2740, 3, 404, 202, 0, 2738, 2740, 3, 406, 203, 0, 2739, 2737, 1, 0, 0, 0, 2739, 2738,
    1, 0, 0, 0, 2740, 2743, 1, 0, 0, 0, 2741, 2739, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742,
    2745, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2744, 2746, 3, 402, 201, 0, 2745, 2744, 1,
    0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 401, 1, 0, 0, 0, 2747, 2748, 5, 383, 0, 0, 2748,
    2749, 5, 216, 0, 0, 2749, 2752, 5, 201, 0, 0, 2750, 2751, 5, 11, 0, 0, 2751, 2753,
    3, 584, 292, 0, 2752, 2750, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2754, 1, 0, 0,
    0, 2754, 2755, 5, 335, 0, 0, 2755, 2757, 5, 161, 0, 0, 2756, 2758, 3, 266, 133, 0,
    2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2760,
    5, 374, 0, 0, 2760, 2761, 3, 540, 270, 0, 2761, 403, 1, 0, 0, 0, 2762, 2763, 5, 383,
    0, 0, 2763, 2764, 5, 201, 0, 0, 2764, 2765, 5, 11, 0, 0, 2765, 2766, 3, 584, 292, 0,
    2766, 2770, 5, 335, 0, 0, 2767, 2768, 5, 365, 0, 0, 2768, 2771, 3, 394, 197, 0, 2769,
    2771, 5, 86, 0, 0, 2770, 2767, 1, 0, 0, 0, 2770, 2769, 1, 0, 0, 0, 2771, 405, 1, 0, 0,
    0, 2772, 2773, 5, 383, 0, 0, 2773, 2774, 5, 201, 0, 0, 2774, 2778, 5, 335, 0, 0, 2775,
    2776, 5, 365, 0, 0, 2776, 2779, 3, 394, 197, 0, 2777, 2779, 5, 86, 0, 0, 2778, 2775,
    1, 0, 0, 0, 2778, 2777, 1, 0, 0, 0, 2779, 407, 1, 0, 0, 0, 2780, 2781, 5, 246, 0, 0, 2781,
    2782, 5, 426, 0, 0, 2782, 409, 1, 0, 0, 0, 2783, 2784, 5, 352, 0, 0, 2784, 2785, 5,
    426, 0, 0, 2785, 411, 1, 0, 0, 0, 2786, 2787, 5, 320, 0, 0, 2787, 2788, 5, 426, 0, 0,
    2788, 413, 1, 0, 0, 0, 2789, 2820, 5, 9, 0, 0, 2790, 2791, 5, 329, 0, 0, 2791, 2792,
    3, 480, 240, 0, 2792, 2793, 3, 416, 208, 0, 2793, 2821, 1, 0, 0, 0, 2794, 2795, 5,
    378, 0, 0, 2795, 2797, 3, 484, 242, 0, 2796, 2798, 5, 17, 0, 0, 2797, 2796, 1, 0, 0,
    0, 2797, 2798, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2800, 3, 420, 210, 0, 2800,
    2821, 1, 0, 0, 0, 2801, 2802, 5, 202, 0, 0, 2802, 2803, 5, 378, 0, 0, 2803, 2807, 3,
    484, 242, 0, 2804, 2808, 3, 36, 18, 0, 2805, 2808, 3, 38, 19, 0, 2806, 2808, 5, 265,
    0, 0, 2807, 2804, 1, 0, 0, 0, 2807, 2805, 1, 0, 0, 0, 2807, 2806, 1, 0, 0, 0, 2808, 2821,
    1, 0, 0, 0, 2809, 2810, 3, 70, 35, 0, 2810, 2811, 3, 422, 211, 0, 2811, 2821, 1, 0,
    0, 0, 2812, 2813, 5, 69, 0, 0, 2813, 2821, 3, 424, 212, 0, 2814, 2815, 5, 155, 0, 0,
    2815, 2816, 3, 642, 321, 0, 2816, 2817, 5, 224, 0, 0, 2817, 2818, 3, 628, 314, 0,
    2818, 2819, 5, 265, 0, 0, 2819, 2821, 1, 0, 0, 0, 2820, 2790, 1, 0, 0, 0, 2820, 2794,
    1, 0, 0, 0, 2820, 2801, 1, 0, 0, 0, 2820, 2809, 1, 0, 0, 0, 2820, 2812, 1, 0, 0, 0, 2820,
    2814, 1, 0, 0, 0, 2821, 415, 1, 0, 0, 0, 2822, 2823, 5, 274, 0, 0, 2823, 2824, 5, 341,
    0, 0, 2824, 2912, 3, 482, 241, 0, 2825, 2826, 5, 102, 0, 0, 2826, 2912, 5, 239, 0,
    0, 2827, 2912, 3, 428, 214, 0, 2828, 2830, 5, 4, 0, 0, 2829, 2831, 3, 32, 16, 0, 2830,
    2829, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2836, 1, 0, 0, 0, 2832, 2834, 3, 630,
    315, 0, 2833, 2835, 3, 426, 213, 0, 2834, 2833, 1, 0, 0, 0, 2834, 2835, 1, 0, 0, 0,
    2835, 2837, 1, 0, 0, 0, 2836, 2832, 1, 0, 0, 0, 2837, 2838, 1, 0, 0, 0, 2838, 2836,
    1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2912, 1, 0, 0, 0, 2840, 2844, 5, 342, 0, 0,
    2841, 2843, 3, 630, 315, 0, 2842, 2841, 1, 0, 0, 0, 2843, 2846, 1, 0, 0, 0, 2844, 2842,
    1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2912, 1, 0, 0, 0, 2846, 2844, 1, 0, 0, 0, 2847,
    2851, 5, 15, 0, 0, 2848, 2850, 3, 630, 315, 0, 2849, 2848, 1, 0, 0, 0, 2850, 2853,
    1, 0, 0, 0, 2851, 2849, 1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2912, 1, 0, 0, 0, 2853,
    2851, 1, 0, 0, 0, 2854, 2858, 5, 353, 0, 0, 2855, 2857, 3, 630, 315, 0, 2856, 2855,
    1, 0, 0, 0, 2857, 2860, 1, 0, 0, 0, 2858, 2856, 1, 0, 0, 0, 2858, 2859, 1, 0, 0, 0, 2859,
    2912, 1, 0, 0, 0, 2860, 2858, 1, 0, 0, 0, 2861, 2862, 5, 304, 0, 0, 2862, 2863, 5, 332,
    0, 0, 2863, 2912, 3, 226, 113, 0, 2864, 2865, 5, 363, 0, 0, 2865, 2867, 5, 332, 0,
    0, 2866, 2868, 3, 30, 15, 0, 2867, 2866, 1, 0, 0, 0, 2867, 2868, 1, 0, 0, 0, 2868, 2869,
    1, 0, 0, 0, 2869, 2912, 3, 226, 113, 0, 2870, 2912, 3, 210, 105, 0, 2871, 2874, 5,
    216, 0, 0, 2872, 2875, 5, 310, 0, 0, 2873, 2875, 3, 40, 20, 0, 2874, 2872, 1, 0, 0,
    0, 2874, 2873, 1, 0, 0, 0, 2875, 2912, 1, 0, 0, 0, 2876, 2877, 5, 113, 0, 0, 2877, 2878,
    3, 630, 315, 0, 2878, 2879, 5, 387, 0, 0, 2879, 2880, 5, 329, 0, 0, 2880, 2881, 3,
    480, 240, 0, 2881, 2912, 1, 0, 0, 0, 2882, 2883, 5, 237, 0, 0, 2883, 2884, 5, 45, 0,
    0, 2884, 2885, 5, 399, 0, 0, 2885, 2886, 3, 312, 156, 0, 2886, 2887, 5, 400, 0, 0,
    2887, 2912, 1, 0, 0, 0, 2888, 2889, 5, 101, 0, 0, 2889, 2890, 5, 55, 0, 0, 2890, 2912,
    3, 642, 321, 0, 2891, 2894, 5, 4, 0, 0, 2892, 2895, 3, 290, 145, 0, 2893, 2895, 3,
    280, 140, 0, 2894, 2892, 1, 0, 0, 0, 2894, 2893, 1, 0, 0, 0, 2895, 2912, 1, 0, 0, 0,
    2896, 2898, 3, 630, 315, 0, 2897, 2896, 1, 0, 0, 0, 2897, 2898, 1, 0, 0, 0, 2898, 2899,
    1, 0, 0, 0, 2899, 2912, 3, 418, 209, 0, 2900, 2901, 5, 304, 0, 0, 2901, 2902, 5, 236,
    0, 0, 2902, 2912, 3, 126, 63, 0, 2903, 2904, 5, 304, 0, 0, 2904, 2905, 5, 237, 0, 0,
    2905, 2906, 5, 316, 0, 0, 2906, 2907, 5, 399, 0, 0, 2907, 2908, 3, 204, 102, 0, 2908,
    2909, 5, 400, 0, 0, 2909, 2912, 1, 0, 0, 0, 2910, 2912, 3, 432, 216, 0, 2911, 2822,
    1, 0, 0, 0, 2911, 2825, 1, 0, 0, 0, 2911, 2827, 1, 0, 0, 0, 2911, 2828, 1, 0, 0, 0, 2911,
    2840, 1, 0, 0, 0, 2911, 2847, 1, 0, 0, 0, 2911, 2854, 1, 0, 0, 0, 2911, 2861, 1, 0, 0,
    0, 2911, 2864, 1, 0, 0, 0, 2911, 2870, 1, 0, 0, 0, 2911, 2871, 1, 0, 0, 0, 2911, 2876,
    1, 0, 0, 0, 2911, 2882, 1, 0, 0, 0, 2911, 2888, 1, 0, 0, 0, 2911, 2891, 1, 0, 0, 0, 2911,
    2897, 1, 0, 0, 0, 2911, 2900, 1, 0, 0, 0, 2911, 2903, 1, 0, 0, 0, 2911, 2910, 1, 0, 0,
    0, 2912, 417, 1, 0, 0, 0, 2913, 2914, 5, 304, 0, 0, 2914, 2915, 5, 129, 0, 0, 2915,
    3046, 3, 434, 217, 0, 2916, 2917, 5, 304, 0, 0, 2917, 2918, 5, 189, 0, 0, 2918, 3046,
    5, 426, 0, 0, 2919, 3046, 5, 53, 0, 0, 2920, 2930, 5, 304, 0, 0, 2921, 2922, 5, 301,
    0, 0, 2922, 2926, 5, 426, 0, 0, 2923, 2924, 5, 387, 0, 0, 2924, 2925, 5, 302, 0, 0,
    2925, 2927, 3, 226, 113, 0, 2926, 2923, 1, 0, 0, 0, 2926, 2927, 1, 0, 0, 0, 2927, 2931,
    1, 0, 0, 0, 2928, 2929, 5, 302, 0, 0, 2929, 2931, 3, 226, 113, 0, 2930, 2921, 1, 0,
    0, 0, 2930, 2928, 1, 0, 0, 0, 2931, 3046, 1, 0, 0, 0, 2932, 2933, 5, 363, 0, 0, 2933,
    2934, 5, 302, 0, 0, 2934, 3046, 3, 226, 113, 0, 2935, 2936, 5, 274, 0, 0, 2936, 2937,
    5, 341, 0, 0, 2937, 3046, 3, 630, 315, 0, 2938, 2939, 5, 166, 0, 0, 2939, 2940, 5,
    431, 0, 0, 2940, 3046, 5, 31, 0, 0, 2941, 2942, 5, 304, 0, 0, 2942, 2943, 5, 310, 0,
    0, 2943, 2944, 5, 189, 0, 0, 2944, 2945, 5, 399, 0, 0, 2945, 2950, 3, 430, 215, 0,
    2946, 2947, 5, 397, 0, 0, 2947, 2949, 3, 430, 215, 0, 2948, 2946, 1, 0, 0, 0, 2949,
    2952, 1, 0, 0, 0, 2950, 2948, 1, 0, 0, 0, 2950, 2951, 1, 0, 0, 0, 2951, 2953, 1, 0, 0,
    0, 2952, 2950, 1, 0, 0, 0, 2953, 2954, 5, 400, 0, 0, 2954, 3046, 1, 0, 0, 0, 2955, 2956,
    5, 216, 0, 0, 2956, 3046, 7, 25, 0, 0, 2957, 3046, 3, 208, 104, 0, 2958, 2959, 5, 49,
    0, 0, 2959, 2962, 5, 426, 0, 0, 2960, 2961, 5, 11, 0, 0, 2961, 2963, 5, 380, 0, 0, 2962,
    2960, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2968, 1, 0, 0, 0, 2964, 2965, 5, 42,
    0, 0, 2965, 2966, 5, 166, 0, 0, 2966, 2967, 5, 431, 0, 0, 2967, 2969, 5, 31, 0, 0, 2968,
    2964, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2971, 1, 0, 0, 0, 2970, 2972, 3, 544,
    272, 0, 2971, 2970, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 2974, 1, 0, 0, 0, 2973,
    2975, 3, 408, 204, 0, 2974, 2973, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 2980, 1,
    0, 0, 0, 2976, 2977, 5, 387, 0, 0, 2977, 2978, 5, 235, 0, 0, 2978, 2979, 5, 332, 0,
    0, 2979, 2981, 3, 226, 113, 0, 2980, 2976, 1, 0, 0, 0, 2980, 2981, 1, 0, 0, 0, 2981,
    3046, 1, 0, 0, 0, 2982, 2983, 5, 365, 0, 0, 2983, 2984, 5, 319, 0, 0, 2984, 2986, 5,
    134, 0, 0, 2985, 2987, 5, 45, 0, 0, 2986, 2985, 1, 0, 0, 0, 2986, 2987, 1, 0, 0, 0, 2987,
    2988, 1, 0, 0, 0, 2988, 2989, 3, 256, 128, 0, 2989, 2990, 5, 304, 0, 0, 2990, 2993,
    3, 226, 113, 0, 2991, 2992, 5, 47, 0, 0, 2992, 2994, 5, 426, 0, 0, 2993, 2991, 1, 0,
    0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 3046, 1, 0, 0, 0, 2995, 2996, 5, 365, 0, 0, 2996,
    2997, 5, 319, 0, 0, 2997, 2998, 5, 304, 0, 0, 2998, 3046, 3, 226, 113, 0, 2999, 3001,
    5, 38, 0, 0, 3000, 3002, 5, 45, 0, 0, 3001, 3000, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0,
    3002, 3003, 1, 0, 0, 0, 3003, 3004, 3, 256, 128, 0, 3004, 3005, 3, 260, 130, 0, 3005,
    3007, 3, 344, 172, 0, 3006, 3008, 3, 326, 163, 0, 3007, 3006, 1, 0, 0, 0, 3007, 3008,
    1, 0, 0, 0, 3008, 3011, 1, 0, 0, 0, 3009, 3010, 5, 47, 0, 0, 3010, 3012, 5, 426, 0, 0,
    3011, 3009, 1, 0, 0, 0, 3011, 3012, 1, 0, 0, 0, 3012, 3016, 1, 0, 0, 0, 3013, 3017,
    5, 130, 0, 0, 3014, 3015, 5, 6, 0, 0, 3015, 3017, 3, 642, 321, 0, 3016, 3013, 1, 0,
    0, 0, 3016, 3014, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3019, 1, 0, 0, 0, 3018, 3020,
    3, 34, 17, 0, 3019, 3018, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3046, 1, 0, 0, 0,
    3021, 3024, 5, 4, 0, 0, 3022, 3024, 5, 278, 0, 0, 3023, 3021, 1, 0, 0, 0, 3023, 3022,
    1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3026, 5, 46, 0, 0, 3026, 3027, 5, 399, 0, 0,
    3027, 3028, 3, 248, 124, 0, 3028, 3030, 5, 400, 0, 0, 3029, 3031, 3, 34, 17, 0, 3030,
    3029, 1, 0, 0, 0, 3030, 3031, 1, 0, 0, 0, 3031, 3046, 1, 0, 0, 0, 3032, 3033, 5, 365,
    0, 0, 3033, 3035, 5, 46, 0, 0, 3034, 3036, 3, 34, 17, 0, 3035, 3034, 1, 0, 0, 0, 3035,
    3036, 1, 0, 0, 0, 3036, 3046, 1, 0, 0, 0, 3037, 3043, 3, 270, 135, 0, 3038, 3040, 5,
    218, 0, 0, 3039, 3041, 5, 34, 0, 0, 3040, 3039, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041,
    3044, 1, 0, 0, 0, 3042, 3044, 5, 222, 0, 0, 3043, 3038, 1, 0, 0, 0, 3043, 3042, 1, 0,
    0, 0, 3044, 3046, 1, 0, 0, 0, 3045, 2913, 1, 0, 0, 0, 3045, 2916, 1, 0, 0, 0, 3045, 2919,
    1, 0, 0, 0, 3045, 2920, 1, 0, 0, 0, 3045, 2932, 1, 0, 0, 0, 3045, 2935, 1, 0, 0, 0, 3045,
    2938, 1, 0, 0, 0, 3045, 2941, 1, 0, 0, 0, 3045, 2955, 1, 0, 0, 0, 3045, 2957, 1, 0, 0,
    0, 3045, 2958, 1, 0, 0, 0, 3045, 2982, 1, 0, 0, 0, 3045, 2995, 1, 0, 0, 0, 3045, 2999,
    1, 0, 0, 0, 3045, 3023, 1, 0, 0, 0, 3045, 3032, 1, 0, 0, 0, 3045, 3037, 1, 0, 0, 0, 3046,
    419, 1, 0, 0, 0, 3047, 3048, 5, 304, 0, 0, 3048, 3049, 5, 332, 0, 0, 3049, 3074, 3,
    226, 113, 0, 3050, 3051, 5, 363, 0, 0, 3051, 3053, 5, 332, 0, 0, 3052, 3054, 3, 30,
    15, 0, 3053, 3052, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055,
    3074, 3, 226, 113, 0, 3056, 3057, 5, 274, 0, 0, 3057, 3058, 5, 341, 0, 0, 3058, 3074,
    3, 482, 241, 0, 3059, 3061, 5, 4, 0, 0, 3060, 3062, 3, 32, 16, 0, 3061, 3060, 1, 0,
    0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3067, 1, 0, 0, 0, 3063, 3065, 3, 630, 315, 0, 3064,
    3066, 3, 426, 213, 0, 3065, 3064, 1, 0, 0, 0, 3065, 3066, 1, 0, 0, 0, 3066, 3068, 1,
    0, 0, 0, 3067, 3063, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3067, 1, 0, 0, 0, 3069,
    3070, 1, 0, 0, 0, 3070, 3074, 1, 0, 0, 0, 3071, 3074, 3, 428, 214, 0, 3072, 3074, 3,
    382, 191, 0, 3073, 3047, 1, 0, 0, 0, 3073, 3050, 1, 0, 0, 0, 3073, 3056, 1, 0, 0, 0,
    3073, 3059, 1, 0, 0, 0, 3073, 3071, 1, 0, 0, 0, 3073, 3072, 1, 0, 0, 0, 3074, 421, 1,
    0, 0, 0, 3075, 3076, 3, 474, 237, 0, 3076, 3077, 5, 304, 0, 0, 3077, 3078, 5, 76, 0,
    0, 3078, 3079, 3, 230, 115, 0, 3079, 3091, 1, 0, 0, 0, 3080, 3081, 3, 474, 237, 0,
    3081, 3082, 5, 304, 0, 0, 3082, 3083, 5, 236, 0, 0, 3083, 3084, 3, 128, 64, 0, 3084,
    3091, 1, 0, 0, 0, 3085, 3086, 3, 474, 237, 0, 3086, 3087, 5, 304, 0, 0, 3087, 3088,
    7, 26, 0, 0, 3088, 3089, 5, 426, 0, 0, 3089, 3091, 1, 0, 0, 0, 3090, 3075, 1, 0, 0, 0,
    3090, 3080, 1, 0, 0, 0, 3090, 3085, 1, 0, 0, 0, 3091, 423, 1, 0, 0, 0, 3092, 3093, 3,
    474, 237, 0, 3093, 3094, 5, 304, 0, 0, 3094, 3095, 5, 77, 0, 0, 3095, 3096, 3, 230,
    115, 0, 3096, 3108, 1, 0, 0, 0, 3097, 3098, 3, 474, 237, 0, 3098, 3099, 5, 304, 0,
    0, 3099, 3100, 5, 236, 0, 0, 3100, 3101, 3, 128, 64, 0, 3101, 3108, 1, 0, 0, 0, 3102,
    3103, 3, 474, 237, 0, 3103, 3104, 5, 304, 0, 0, 3104, 3105, 5, 367, 0, 0, 3105, 3106,
    5, 426, 0, 0, 3106, 3108, 1, 0, 0, 0, 3107, 3092, 1, 0, 0, 0, 3107, 3097, 1, 0, 0, 0,
    3107, 3102, 1, 0, 0, 0, 3108, 425, 1, 0, 0, 0, 3109, 3110, 5, 189, 0, 0, 3110, 3111,
    5, 426, 0, 0, 3111, 427, 1, 0, 0, 0, 3112, 3114, 5, 101, 0, 0, 3113, 3115, 3, 30, 15,
    0, 3114, 3113, 1, 0, 0, 0, 3114, 3115, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3117,
    5, 237, 0, 0, 3117, 3123, 3, 634, 317, 0, 3118, 3119, 5, 397, 0, 0, 3119, 3120, 5,
    237, 0, 0, 3120, 3122, 3, 634, 317, 0, 3121, 3118, 1, 0, 0, 0, 3122, 3125, 1, 0, 0,
    0, 3123, 3121, 1, 0, 0, 0, 3123, 3124, 1, 0, 0, 0, 3124, 3128, 1, 0, 0, 0, 3125, 3123,
    1, 0, 0, 0, 3126, 3127, 5, 152, 0, 0, 3127, 3129, 5, 254, 0, 0, 3128, 3126, 1, 0, 0,
    0, 3128, 3129, 1, 0, 0, 0, 3129, 3131, 1, 0, 0, 0, 3130, 3132, 5, 255, 0, 0, 3131, 3130,
    1, 0, 0, 0, 3131, 3132, 1, 0, 0, 0, 3132, 3134, 1, 0, 0, 0, 3133, 3135, 3, 14, 7, 0, 3134,
    3133, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 429, 1, 0, 0, 0, 3136, 3139, 3, 576,
    288, 0, 3137, 3139, 3, 296, 148, 0, 3138, 3136, 1, 0, 0, 0, 3138, 3137, 1, 0, 0, 0,
    3139, 3140, 1, 0, 0, 0, 3140, 3141, 5, 405, 0, 0, 3141, 3142, 5, 426, 0, 0, 3142, 431,
    1, 0, 0, 0, 3143, 3153, 5, 115, 0, 0, 3144, 3145, 5, 289, 0, 0, 3145, 3146, 5, 399,
    0, 0, 3146, 3154, 7, 27, 0, 0, 3147, 3148, 5, 118, 0, 0, 3148, 3149, 5, 399, 0, 0, 3149,
    3154, 5, 426, 0, 0, 3150, 3151, 5, 306, 0, 0, 3151, 3152, 5, 399, 0, 0, 3152, 3154,
    5, 431, 0, 0, 3153, 3144, 1, 0, 0, 0, 3153, 3147, 1, 0, 0, 0, 3153, 3150, 1, 0, 0, 0,
    3154, 3155, 1, 0, 0, 0, 3155, 3156, 5, 400, 0, 0, 3156, 433, 1, 0, 0, 0, 3157, 3158,
    5, 160, 0, 0, 3158, 3159, 5, 426, 0, 0, 3159, 3160, 5, 233, 0, 0, 3160, 3161, 5, 426,
    0, 0, 3161, 3162, 5, 301, 0, 0, 3162, 3167, 5, 426, 0, 0, 3163, 3164, 5, 159, 0, 0,
    3164, 3165, 5, 426, 0, 0, 3165, 3166, 5, 232, 0, 0, 3166, 3168, 5, 426, 0, 0, 3167,
    3163, 1, 0, 0, 0, 3167, 3168, 1, 0, 0, 0, 3168, 3171, 1, 0, 0, 0, 3169, 3171, 3, 642,
    321, 0, 3170, 3157, 1, 0, 0, 0, 3170, 3169, 1, 0, 0, 0, 3171, 435, 1, 0, 0, 0, 3172,
    3173, 5, 184, 0, 0, 3173, 3182, 5, 128, 0, 0, 3174, 3175, 5, 184, 0, 0, 3175, 3176,
    5, 128, 0, 0, 3176, 3177, 3, 642, 321, 0, 3177, 3178, 5, 426, 0, 0, 3178, 3182, 1,
    0, 0, 0, 3179, 3180, 5, 184, 0, 0, 3180, 3182, 3, 480, 240, 0, 3181, 3172, 1, 0, 0,
    0, 3181, 3174, 1, 0, 0, 0, 3181, 3179, 1, 0, 0, 0, 3182, 437, 1, 0, 0, 0, 3183, 3185,
    5, 58, 0, 0, 3184, 3186, 5, 333, 0, 0, 3185, 3184, 1, 0, 0, 0, 3185, 3186, 1, 0, 0, 0,
    3186, 3188, 1, 0, 0, 0, 3187, 3189, 5, 345, 0, 0, 3188, 3187, 1, 0, 0, 0, 3188, 3189,
    1, 0, 0, 0, 3189, 3191, 1, 0, 0, 0, 3190, 3192, 5, 123, 0, 0, 3191, 3190, 1, 0, 0, 0,
    3191, 3192, 1, 0, 0, 0, 3192, 3193, 1, 0, 0, 0, 3193, 3195, 5, 329, 0, 0, 3194, 3196,
    3, 32, 16, 0, 3195, 3194, 1, 0, 0, 0, 3195, 3196, 1, 0, 0, 0, 3196, 3197, 1, 0, 0, 0,
    3197, 3254, 3, 482, 241, 0, 3198, 3200, 3, 436, 218, 0, 3199, 3201, 3, 200, 100,
    0, 3200, 3199, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3203, 1, 0, 0, 0, 3202, 3204,
    3, 222, 111, 0, 3203, 3202, 1, 0, 0, 0, 3203, 3204, 1, 0, 0, 0, 3204, 3206, 1, 0, 0,
    0, 3205, 3207, 3, 246, 123, 0, 3206, 3205, 1, 0, 0, 0, 3206, 3207, 1, 0, 0, 0, 3207,
    3209, 1, 0, 0, 0, 3208, 3210, 3, 426, 213, 0, 3209, 3208, 1, 0, 0, 0, 3209, 3210, 1,
    0, 0, 0, 3210, 3212, 1, 0, 0, 0, 3211, 3213, 3, 224, 112, 0, 3212, 3211, 1, 0, 0, 0,
    3212, 3213, 1, 0, 0, 0, 3213, 3215, 1, 0, 0, 0, 3214, 3216, 3, 198, 99, 0, 3215, 3214,
    1, 0, 0, 0, 3215, 3216, 1, 0, 0, 0, 3216, 3255, 1, 0, 0, 0, 3217, 3218, 5, 399, 0, 0,
    3218, 3219, 3, 250, 125, 0, 3219, 3220, 5, 400, 0, 0, 3220, 3222, 1, 0, 0, 0, 3221,
    3217, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3224, 1, 0, 0, 0, 3223, 3225, 3, 196,
    98, 0, 3224, 3223, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3227, 1, 0, 0, 0, 3226,
    3228, 3, 200, 100, 0, 3227, 3226, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3230, 1,
    0, 0, 0, 3229, 3231, 3, 208, 104, 0, 3230, 3229, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0,
    3231, 3233, 1, 0, 0, 0, 3232, 3234, 3, 210, 105, 0, 3233, 3232, 1, 0, 0, 0, 3233, 3234,
    1, 0, 0, 0, 3234, 3236, 1, 0, 0, 0, 3235, 3237, 3, 222, 111, 0, 3236, 3235, 1, 0, 0,
    0, 3236, 3237, 1, 0, 0, 0, 3237, 3239, 1, 0, 0, 0, 3238, 3240, 3, 246, 123, 0, 3239,
    3238, 1, 0, 0, 0, 3239, 3240, 1, 0, 0, 0, 3240, 3242, 1, 0, 0, 0, 3241, 3243, 3, 426,
    213, 0, 3242, 3241, 1, 0, 0, 0, 3242, 3243, 1, 0, 0, 0, 3243, 3245, 1, 0, 0, 0, 3244,
    3246, 3, 224, 112, 0, 3245, 3244, 1, 0, 0, 0, 3245, 3246, 1, 0, 0, 0, 3246, 3248, 1,
    0, 0, 0, 3247, 3249, 3, 198, 99, 0, 3248, 3247, 1, 0, 0, 0, 3248, 3249, 1, 0, 0, 0, 3249,
    3252, 1, 0, 0, 0, 3250, 3251, 5, 17, 0, 0, 3251, 3253, 3, 382, 191, 0, 3252, 3250,
    1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3255, 1, 0, 0, 0, 3254, 3198, 1, 0, 0, 0, 3254,
    3221, 1, 0, 0, 0, 3255, 3319, 1, 0, 0, 0, 3256, 3257, 5, 58, 0, 0, 3257, 3258, 5, 195,
    0, 0, 3258, 3260, 5, 329, 0, 0, 3259, 3261, 3, 32, 16, 0, 3260, 3259, 1, 0, 0, 0, 3260,
    3261, 1, 0, 0, 0, 3261, 3262, 1, 0, 0, 0, 3262, 3316, 3, 482, 241, 0, 3263, 3265, 3,
    436, 218, 0, 3264, 3266, 3, 222, 111, 0, 3265, 3264, 1, 0, 0, 0, 3265, 3266, 1, 0,
    0, 0, 3266, 3268, 1, 0, 0, 0, 3267, 3269, 3, 246, 123, 0, 3268, 3267, 1, 0, 0, 0, 3268,
    3269, 1, 0, 0, 0, 3269, 3271, 1, 0, 0, 0, 3270, 3272, 3, 426, 213, 0, 3271, 3270, 1,
    0, 0, 0, 3271, 3272, 1, 0, 0, 0, 3272, 3274, 1, 0, 0, 0, 3273, 3275, 3, 224, 112, 0,
    3274, 3273, 1, 0, 0, 0, 3274, 3275, 1, 0, 0, 0, 3275, 3277, 1, 0, 0, 0, 3276, 3278,
    3, 198, 99, 0, 3277, 3276, 1, 0, 0, 0, 3277, 3278, 1, 0, 0, 0, 3278, 3317, 1, 0, 0, 0,
    3279, 3280, 5, 399, 0, 0, 3280, 3281, 3, 250, 125, 0, 3281, 3282, 5, 400, 0, 0, 3282,
    3284, 1, 0, 0, 0, 3283, 3279, 1, 0, 0, 0, 3283, 3284, 1, 0, 0, 0, 3284, 3286, 1, 0, 0,
    0, 3285, 3287, 3, 196, 98, 0, 3286, 3285, 1, 0, 0, 0, 3286, 3287, 1, 0, 0, 0, 3287,
    3289, 1, 0, 0, 0, 3288, 3290, 3, 200, 100, 0, 3289, 3288, 1, 0, 0, 0, 3289, 3290, 1,
    0, 0, 0, 3290, 3292, 1, 0, 0, 0, 3291, 3293, 3, 208, 104, 0, 3292, 3291, 1, 0, 0, 0,
    3292, 3293, 1, 0, 0, 0, 3293, 3295, 1, 0, 0, 0, 3294, 3296, 3, 210, 105, 0, 3295, 3294,
    1, 0, 0, 0, 3295, 3296, 1, 0, 0, 0, 3296, 3298, 1, 0, 0, 0, 3297, 3299, 3, 222, 111,
    0, 3298, 3297, 1, 0, 0, 0, 3298, 3299, 1, 0, 0, 0, 3299, 3301, 1, 0, 0, 0, 3300, 3302,
    3, 246, 123, 0, 3301, 3300, 1, 0, 0, 0, 3301, 3302, 1, 0, 0, 0, 3302, 3304, 1, 0, 0,
    0, 3303, 3305, 3, 426, 213, 0, 3304, 3303, 1, 0, 0, 0, 3304, 3305, 1, 0, 0, 0, 3305,
    3307, 1, 0, 0, 0, 3306, 3308, 3, 224, 112, 0, 3307, 3306, 1, 0, 0, 0, 3307, 3308, 1,
    0, 0, 0, 3308, 3310, 1, 0, 0, 0, 3309, 3311, 3, 198, 99, 0, 3310, 3309, 1, 0, 0, 0, 3310,
    3311, 1, 0, 0, 0, 3311, 3314, 1, 0, 0, 0, 3312, 3313, 5, 17, 0, 0, 3313, 3315, 3, 382,
    191, 0, 3314, 3312, 1, 0, 0, 0, 3314, 3315, 1, 0, 0, 0, 3315, 3317, 1, 0, 0, 0, 3316,
    3263, 1, 0, 0, 0, 3316, 3283, 1, 0, 0, 0, 3317, 3319, 1, 0, 0, 0, 3318, 3183, 1, 0, 0,
    0, 3318, 3256, 1, 0, 0, 0, 3319, 439, 1, 0, 0, 0, 3320, 3321, 5, 58, 0, 0, 3321, 3323,
    5, 69, 0, 0, 3322, 3324, 3, 32, 16, 0, 3323, 3322, 1, 0, 0, 0, 3323, 3324, 1, 0, 0, 0,
    3324, 3325, 1, 0, 0, 0, 3325, 3328, 3, 642, 321, 0, 3326, 3327, 5, 352, 0, 0, 3327,
    3329, 5, 426, 0, 0, 3328, 3326, 1, 0, 0, 0, 3328, 3329, 1, 0, 0, 0, 3329, 3332, 1, 0,
    0, 0, 3330, 3331, 5, 367, 0, 0, 3331, 3333, 5, 426, 0, 0, 3332, 3330, 1, 0, 0, 0, 3332,
    3333, 1, 0, 0, 0, 3333, 3336, 1, 0, 0, 0, 3334, 3335, 5, 47, 0, 0, 3335, 3337, 5, 426,
    0, 0, 3336, 3334, 1, 0, 0, 0, 3336, 3337, 1, 0, 0, 0, 3337, 3341, 1, 0, 0, 0, 3338, 3339,
    5, 387, 0, 0, 3339, 3340, 5, 77, 0, 0, 3340, 3342, 3, 230, 115, 0, 3341, 3338, 1, 0,
    0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 441, 1, 0, 0, 0, 3343, 3344, 5, 101, 0, 0, 3344,
    3346, 5, 69, 0, 0, 3345, 3347, 3, 30, 15, 0, 3346, 3345, 1, 0, 0, 0, 3346, 3347, 1,
    0, 0, 0, 3347, 3348, 1, 0, 0, 0, 3348, 3349, 3, 642, 321, 0, 3349, 443, 1, 0, 0, 0, 3350,
    3351, 3, 642, 321, 0, 3351, 3352, 5, 395, 0, 0, 3352, 3354, 1, 0, 0, 0, 3353, 3350,
    1, 0, 0, 0, 3354, 3357, 1, 0, 0, 0, 3355, 3353, 1, 0, 0, 0, 3355, 3356, 1, 0, 0, 0, 3356,
    3358, 1, 0, 0, 0, 3357, 3355, 1, 0, 0, 0, 3358, 3359, 5, 415, 0, 0, 3359, 445, 1, 0,
    0, 0, 3360, 3365, 3, 584, 292, 0, 3361, 3362, 5, 397, 0, 0, 3362, 3364, 3, 584, 292,
    0, 3363, 3361, 1, 0, 0, 0, 3364, 3367, 1, 0, 0, 0, 3365, 3363, 1, 0, 0, 0, 3365, 3366,
    1, 0, 0, 0, 3366, 447, 1, 0, 0, 0, 3367, 3365, 1, 0, 0, 0, 3368, 3373, 3, 642, 321, 0,
    3369, 3370, 5, 397, 0, 0, 3370, 3372, 3, 642, 321, 0, 3371, 3369, 1, 0, 0, 0, 3372,
    3375, 1, 0, 0, 0, 3373, 3371, 1, 0, 0, 0, 3373, 3374, 1, 0, 0, 0, 3374, 449, 1, 0, 0,
    0, 3375, 3373, 1, 0, 0, 0, 3376, 3377, 5, 139, 0, 0, 3377, 3378, 3, 452, 226, 0, 3378,
    451, 1, 0, 0, 0, 3379, 3380, 5, 359, 0, 0, 3380, 3383, 3, 460, 230, 0, 3381, 3382,
    5, 397, 0, 0, 3382, 3384, 3, 460, 230, 0, 3383, 3381, 1, 0, 0, 0, 3384, 3385, 1, 0,
    0, 0, 3385, 3383, 1, 0, 0, 0, 3385, 3386, 1, 0, 0, 0, 3386, 3389, 1, 0, 0, 0, 3387, 3389,
    3, 456, 228, 0, 3388, 3379, 1, 0, 0, 0, 3388, 3387, 1, 0, 0, 0, 3389, 453, 1, 0, 0, 0,
    3390, 3394, 3, 470, 235, 0, 3391, 3393, 3, 464, 232, 0, 3392, 3391, 1, 0, 0, 0, 3393,
    3396, 1, 0, 0, 0, 3394, 3392, 1, 0, 0, 0, 3394, 3395, 1, 0, 0, 0, 3395, 3423, 1, 0, 0,
    0, 3396, 3394, 1, 0, 0, 0, 3397, 3401, 3, 500, 250, 0, 3398, 3400, 3, 464, 232, 0,
    3399, 3398, 1, 0, 0, 0, 3400, 3403, 1, 0, 0, 0, 3401, 3399, 1, 0, 0, 0, 3401, 3402,
    1, 0, 0, 0, 3402, 3423, 1, 0, 0, 0, 3403, 3401, 1, 0, 0, 0, 3404, 3408, 3, 488, 244,
    0, 3405, 3407, 3, 464, 232, 0, 3406, 3405, 1, 0, 0, 0, 3407, 3410, 1, 0, 0, 0, 3408,
    3406, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3423, 1, 0, 0, 0, 3410, 3408, 1, 0, 0,
    0, 3411, 3415, 3, 494, 247, 0, 3412, 3414, 3, 464, 232, 0, 3413, 3412, 1, 0, 0, 0,
    3414, 3417, 1, 0, 0, 0, 3415, 3413, 1, 0, 0, 0, 3415, 3416, 1, 0, 0, 0, 3416, 3423,
    1, 0, 0, 0, 3417, 3415, 1, 0, 0, 0, 3418, 3419, 5, 399, 0, 0, 3419, 3420, 3, 456, 228,
    0, 3420, 3421, 5, 400, 0, 0, 3421, 3423, 1, 0, 0, 0, 3422, 3390, 1, 0, 0, 0, 3422, 3397,
    1, 0, 0, 0, 3422, 3404, 1, 0, 0, 0, 3422, 3411, 1, 0, 0, 0, 3422, 3418, 1, 0, 0, 0, 3423,
    455, 1, 0, 0, 0, 3424, 3435, 3, 454, 227, 0, 3425, 3426, 3, 462, 231, 0, 3426, 3431,
    3, 458, 229, 0, 3427, 3428, 5, 224, 0, 0, 3428, 3432, 3, 584, 292, 0, 3429, 3430,
    5, 370, 0, 0, 3430, 3432, 3, 266, 133, 0, 3431, 3427, 1, 0, 0, 0, 3431, 3429, 1, 0,
    0, 0, 3431, 3432, 1, 0, 0, 0, 3432, 3434, 1, 0, 0, 0, 3433, 3425, 1, 0, 0, 0, 3434, 3437,
    1, 0, 0, 0, 3435, 3433, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 457, 1, 0, 0, 0, 3437,
    3435, 1, 0, 0, 0, 3438, 3443, 3, 470, 235, 0, 3439, 3443, 3, 500, 250, 0, 3440, 3443,
    3, 488, 244, 0, 3441, 3443, 3, 494, 247, 0, 3442, 3438, 1, 0, 0, 0, 3442, 3439, 1,
    0, 0, 0, 3442, 3440, 1, 0, 0, 0, 3442, 3441, 1, 0, 0, 0, 3443, 3447, 1, 0, 0, 0, 3444,
    3446, 3, 464, 232, 0, 3445, 3444, 1, 0, 0, 0, 3446, 3449, 1, 0, 0, 0, 3447, 3445, 1,
    0, 0, 0, 3447, 3448, 1, 0, 0, 0, 3448, 459, 1, 0, 0, 0, 3449, 3447, 1, 0, 0, 0, 3450,
    3452, 5, 250, 0, 0, 3451, 3450, 1, 0, 0, 0, 3451, 3452, 1, 0, 0, 0, 3452, 3453, 1, 0,
    0, 0, 3453, 3455, 3, 478, 239, 0, 3454, 3456, 3, 468, 234, 0, 3455, 3454, 1, 0, 0,
    0, 3455, 3456, 1, 0, 0, 0, 3456, 3461, 1, 0, 0, 0, 3457, 3459, 5, 17, 0, 0, 3458, 3457,
    1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 3462, 3, 642, 321,
    0, 3461, 3458, 1, 0, 0, 0, 3461, 3462, 1, 0, 0, 0, 3462, 3463, 1, 0, 0, 0, 3463, 3464,
    5, 399, 0, 0, 3464, 3465, 3, 446, 223, 0, 3465, 3466, 5, 400, 0, 0, 3466, 461, 1, 0,
    0, 0, 3467, 3482, 5, 397, 0, 0, 3468, 3479, 5, 157, 0, 0, 3469, 3479, 5, 60, 0, 0, 3470,
    3472, 7, 28, 0, 0, 3471, 3473, 5, 231, 0, 0, 3472, 3471, 1, 0, 0, 0, 3472, 3473, 1,
    0, 0, 0, 3473, 3479, 1, 0, 0, 0, 3474, 3476, 5, 180, 0, 0, 3475, 3477, 7, 29, 0, 0, 3476,
    3475, 1, 0, 0, 0, 3476, 3477, 1, 0, 0, 0, 3477, 3479, 1, 0, 0, 0, 3478, 3468, 1, 0, 0,
    0, 3478, 3469, 1, 0, 0, 0, 3478, 3470, 1, 0, 0, 0, 3478, 3474, 1, 0, 0, 0, 3478, 3479,
    1, 0, 0, 0, 3479, 3480, 1, 0, 0, 0, 3480, 3482, 5, 171, 0, 0, 3481, 3467, 1, 0, 0, 0,
    3481, 3478, 1, 0, 0, 0, 3482, 463, 1, 0, 0, 0, 3483, 3484, 5, 178, 0, 0, 3484, 3485,
    5, 378, 0, 0, 3485, 3486, 5, 231, 0, 0, 3486, 3487, 3, 554, 277, 0, 3487, 3497, 3,
    466, 233, 0, 3488, 3489, 5, 17, 0, 0, 3489, 3494, 3, 642, 321, 0, 3490, 3491, 5, 397,
    0, 0, 3491, 3493, 3, 642, 321, 0, 3492, 3490, 1, 0, 0, 0, 3493, 3496, 1, 0, 0, 0, 3494,
    3492, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3498, 1, 0, 0, 0, 3496, 3494, 1, 0, 0,
    0, 3497, 3488, 1, 0, 0, 0, 3497, 3498, 1, 0, 0, 0, 3498, 3541, 1, 0, 0, 0, 3499, 3501,
    5, 397, 0, 0, 3500, 3499, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 3502, 1, 0, 0, 0,
    3502, 3538, 5, 178, 0, 0, 3503, 3504, 5, 378, 0, 0, 3504, 3505, 3, 554, 277, 0, 3505,
    3515, 3, 466, 233, 0, 3506, 3507, 5, 17, 0, 0, 3507, 3512, 3, 642, 321, 0, 3508, 3509,
    5, 397, 0, 0, 3509, 3511, 3, 642, 321, 0, 3510, 3508, 1, 0, 0, 0, 3511, 3514, 1, 0,
    0, 0, 3512, 3510, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3516, 1, 0, 0, 0, 3514, 3512,
    1, 0, 0, 0, 3515, 3506, 1, 0, 0, 0, 3515, 3516, 1, 0, 0, 0, 3516, 3539, 1, 0, 0, 0, 3517,
    3518, 5, 329, 0, 0, 3518, 3519, 5, 399, 0, 0, 3519, 3520, 3, 498, 249, 0, 3520, 3522,
    5, 400, 0, 0, 3521, 3523, 5, 17, 0, 0, 3522, 3521, 1, 0, 0, 0, 3522, 3523, 1, 0, 0, 0,
    3523, 3524, 1, 0, 0, 0, 3524, 3536, 3, 466, 233, 0, 3525, 3526, 5, 399, 0, 0, 3526,
    3531, 3, 642, 321, 0, 3527, 3528, 5, 397, 0, 0, 3528, 3530, 3, 642, 321, 0, 3529,
    3527, 1, 0, 0, 0, 3530, 3533, 1, 0, 0, 0, 3531, 3529, 1, 0, 0, 0, 3531, 3532, 1, 0, 0,
    0, 3532, 3534, 1, 0, 0, 0, 3533, 3531, 1, 0, 0, 0, 3534, 3535, 5, 400, 0, 0, 3535, 3537,
    1, 0, 0, 0, 3536, 3525, 1, 0, 0, 0, 3536, 3537, 1, 0, 0, 0, 3537, 3539, 1, 0, 0, 0, 3538,
    3503, 1, 0, 0, 0, 3538, 3517, 1, 0, 0, 0, 3539, 3541, 1, 0, 0, 0, 3540, 3483, 1, 0, 0,
    0, 3540, 3500, 1, 0, 0, 0, 3541, 465, 1, 0, 0, 0, 3542, 3543, 3, 642, 321, 0, 3543,
    467, 1, 0, 0, 0, 3544, 3545, 5, 331, 0, 0, 3545, 3546, 5, 399, 0, 0, 3546, 3547, 5,
    30, 0, 0, 3547, 3548, 5, 431, 0, 0, 3548, 3549, 5, 230, 0, 0, 3549, 3550, 5, 221, 0,
    0, 3550, 3560, 5, 431, 0, 0, 3551, 3552, 5, 224, 0, 0, 3552, 3557, 3, 584, 292, 0,
    3553, 3554, 5, 397, 0, 0, 3554, 3556, 3, 584, 292, 0, 3555, 3553, 1, 0, 0, 0, 3556,
    3559, 1, 0, 0, 0, 3557, 3555, 1, 0, 0, 0, 3557, 3558, 1, 0, 0, 0, 3558, 3561, 1, 0, 0,
    0, 3559, 3557, 1, 0, 0, 0, 3560, 3551, 1, 0, 0, 0, 3560, 3561, 1, 0, 0, 0, 3561, 3562,
    1, 0, 0, 0, 3562, 3572, 5, 400, 0, 0, 3563, 3564, 5, 331, 0, 0, 3564, 3568, 5, 399,
    0, 0, 3565, 3566, 5, 431, 0, 0, 3566, 3569, 7, 30, 0, 0, 3567, 3569, 5, 430, 0, 0, 3568,
    3565, 1, 0, 0, 0, 3568, 3567, 1, 0, 0, 0, 3569, 3570, 1, 0, 0, 0, 3570, 3572, 5, 400,
    0, 0, 3571, 3544, 1, 0, 0, 0, 3571, 3563, 1, 0, 0, 0, 3572, 469, 1, 0, 0, 0, 3573, 3575,
    3, 478, 239, 0, 3574, 3576, 3, 226, 113, 0, 3575, 3574, 1, 0, 0, 0, 3575, 3576, 1,
    0, 0, 0, 3576, 3578, 1, 0, 0, 0, 3577, 3579, 3, 468, 234, 0, 3578, 3577, 1, 0, 0, 0,
    3578, 3579, 1, 0, 0, 0, 3579, 3581, 1, 0, 0, 0, 3580, 3582, 3, 472, 236, 0, 3581, 3580,
    1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3587, 1, 0, 0, 0, 3583, 3585, 5, 17, 0, 0, 3584,
    3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3586, 1, 0, 0, 0, 3586, 3588, 3, 642,
    321, 0, 3587, 3584, 1, 0, 0, 0, 3587, 3588, 1, 0, 0, 0, 3588, 471, 1, 0, 0, 0, 3589,
    3599, 5, 134, 0, 0, 3590, 3591, 5, 327, 0, 0, 3591, 3592, 5, 17, 0, 0, 3592, 3593,
    5, 221, 0, 0, 3593, 3600, 3, 584, 292, 0, 3594, 3595, 5, 134, 0, 0, 3595, 3596, 5,
    328, 0, 0, 3596, 3597, 5, 17, 0, 0, 3597, 3598, 5, 221, 0, 0, 3598, 3600, 5, 431, 0,
    0, 3599, 3590, 1, 0, 0, 0, 3599, 3594, 1, 0, 0, 0, 3600, 473, 1, 0, 0, 0, 3601, 3602,
    3, 642, 321, 0, 3602, 475, 1, 0, 0, 0, 3603, 3604, 3, 642, 321, 0, 3604, 477, 1, 0,
    0, 0, 3605, 3608, 3, 480, 240, 0, 3606, 3608, 3, 484, 242, 0, 3607, 3605, 1, 0, 0,
    0, 3607, 3606, 1, 0, 0, 0, 3608, 479, 1, 0, 0, 0, 3609, 3610, 3, 642, 321, 0, 3610,
    3611, 5, 395, 0, 0, 3611, 3614, 3, 642, 321, 0, 3612, 3613, 5, 395, 0, 0, 3613, 3615,
    3, 642, 321, 0, 3614, 3612, 1, 0, 0, 0, 3614, 3615, 1, 0, 0, 0, 3615, 3618, 1, 0, 0,
    0, 3616, 3618, 3, 642, 321, 0, 3617, 3609, 1, 0, 0, 0, 3617, 3616, 1, 0, 0, 0, 3618,
    481, 1, 0, 0, 0, 3619, 3620, 3, 642, 321, 0, 3620, 3621, 5, 395, 0, 0, 3621, 3624,
    3, 642, 321, 0, 3622, 3623, 5, 395, 0, 0, 3623, 3625, 3, 642, 321, 0, 3624, 3622,
    1, 0, 0, 0, 3624, 3625, 1, 0, 0, 0, 3625, 3628, 1, 0, 0, 0, 3626, 3628, 3, 642, 321,
    0, 3627, 3619, 1, 0, 0, 0, 3627, 3626, 1, 0, 0, 0, 3628, 483, 1, 0, 0, 0, 3629, 3630,
    3, 642, 321, 0, 3630, 3631, 5, 395, 0, 0, 3631, 3633, 1, 0, 0, 0, 3632, 3629, 1, 0,
    0, 0, 3632, 3633, 1, 0, 0, 0, 3633, 3634, 1, 0, 0, 0, 3634, 3635, 3, 642, 321, 0, 3635,
    485, 1, 0, 0, 0, 3636, 3637, 3, 642, 321, 0, 3637, 3638, 5, 395, 0, 0, 3638, 3640,
    1, 0, 0, 0, 3639, 3636, 1, 0, 0, 0, 3639, 3640, 1, 0, 0, 0, 3640, 3641, 1, 0, 0, 0, 3641,
    3642, 3, 642, 321, 0, 3642, 487, 1, 0, 0, 0, 3643, 3644, 5, 399, 0, 0, 3644, 3645,
    3, 362, 181, 0, 3645, 3647, 5, 400, 0, 0, 3646, 3648, 5, 17, 0, 0, 3647, 3646, 1, 0,
    0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3649, 1, 0, 0, 0, 3649, 3650, 3, 642, 321, 0, 3650,
    489, 1, 0, 0, 0, 3651, 3653, 3, 546, 273, 0, 3652, 3654, 3, 544, 272, 0, 3653, 3652,
    1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3663, 1, 0, 0, 0, 3655, 3663, 3, 544, 272,
    0, 3656, 3658, 3, 550, 275, 0, 3657, 3659, 3, 552, 276, 0, 3658, 3657, 1, 0, 0, 0,
    3658, 3659, 1, 0, 0, 0, 3659, 3663, 1, 0, 0, 0, 3660, 3663, 3, 552, 276, 0, 3661, 3663,
    3, 548, 274, 0, 3662, 3651, 1, 0, 0, 0, 3662, 3655, 1, 0, 0, 0, 3662, 3656, 1, 0, 0,
    0, 3662, 3660, 1, 0, 0, 0, 3662, 3661, 1, 0, 0, 0, 3663, 491, 1, 0, 0, 0, 3664, 3668,
    3, 488, 244, 0, 3665, 3668, 3, 470, 235, 0, 3666, 3668, 3, 494, 247, 0, 3667, 3664,
    1, 0, 0, 0, 3667, 3665, 1, 0, 0, 0, 3667, 3666, 1, 0, 0, 0, 3668, 493, 1, 0, 0, 0, 3669,
    3670, 3, 642, 321, 0, 3670, 3671, 5, 399, 0, 0, 3671, 3672, 5, 224, 0, 0, 3672, 3674,
    3, 492, 246, 0, 3673, 3675, 3, 490, 245, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1,
    0, 0, 0, 3675, 3691, 1, 0, 0, 0, 3676, 3677, 5, 432, 0, 0, 3677, 3678, 5, 399, 0, 0,
    3678, 3679, 3, 584, 292, 0, 3679, 3688, 5, 400, 0, 0, 3680, 3681, 5, 397, 0, 0, 3681,
    3682, 5, 432, 0, 0, 3682, 3683, 5, 399, 0, 0, 3683, 3684, 3, 584, 292, 0, 3684, 3685,
    5, 400, 0, 0, 3685, 3687, 1, 0, 0, 0, 3686, 3680, 1, 0, 0, 0, 3687, 3690, 1, 0, 0, 0,
    3688, 3686, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 3692, 1, 0, 0, 0, 3690, 3688,
    1, 0, 0, 0, 3691, 3676, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693,
    3695, 5, 400, 0, 0, 3694, 3696, 3, 642, 321, 0, 3695, 3694, 1, 0, 0, 0, 3695, 3696,
    1, 0, 0, 0, 3696, 495, 1, 0, 0, 0, 3697, 3698, 5, 384, 0, 0, 3698, 3699, 3, 584, 292,
    0, 3699, 497, 1, 0, 0, 0, 3700, 3719, 5, 374, 0, 0, 3701, 3706, 3, 540, 270, 0, 3702,
    3703, 5, 397, 0, 0, 3703, 3705, 3, 540, 270, 0, 3704, 3702, 1, 0, 0, 0, 3705, 3708,
    1, 0, 0, 0, 3706, 3704, 1, 0, 0, 0, 3706, 3707, 1, 0, 0, 0, 3707, 3720, 1, 0, 0, 0, 3708,
    3706, 1, 0, 0, 0, 3709, 3710, 5, 399, 0, 0, 3710, 3711, 3, 536, 268, 0, 3711, 3716,
    5, 400, 0, 0, 3712, 3713, 5, 397, 0, 0, 3713, 3715, 3, 540, 270, 0, 3714, 3712, 1,
    0, 0, 0, 3715, 3718, 1, 0, 0, 0, 3716, 3714, 1, 0, 0, 0, 3716, 3717, 1, 0, 0, 0, 3717,
    3720, 1, 0, 0, 0, 3718, 3716, 1, 0, 0, 0, 3719, 3701, 1, 0, 0, 0, 3719, 3709, 1, 0, 0,
    0, 3720, 499, 1, 0, 0, 0, 3721, 3722, 5, 329, 0, 0, 3722, 3723, 5, 399, 0, 0, 3723,
    3724, 3, 498, 249, 0, 3724, 3726, 5, 400, 0, 0, 3725, 3727, 5, 17, 0, 0, 3726, 3725,
    1, 0, 0, 0, 3726, 3727, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3738, 3, 466, 233,
    0, 3729, 3730, 5, 399, 0, 0, 3730, 3735, 3, 642, 321, 0, 3731, 3732, 5, 397, 0, 0,
    3732, 3734, 3, 642, 321, 0, 3733, 3731, 1, 0, 0, 0, 3734, 3737, 1, 0, 0, 0, 3735, 3733,
    1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3739, 1, 0, 0, 0, 3737, 3735, 1, 0, 0, 0, 3738,
    3729, 1, 0, 0, 0, 3738, 3739, 1, 0, 0, 0, 3739, 3740, 1, 0, 0, 0, 3740, 3741, 5, 400,
    0, 0, 3741, 501, 1, 0, 0, 0, 3742, 3744, 5, 299, 0, 0, 3743, 3745, 5, 436, 0, 0, 3744,
    3743, 1, 0, 0, 0, 3744, 3745, 1, 0, 0, 0, 3745, 3759, 1, 0, 0, 0, 3746, 3748, 7, 22,
    0, 0, 3747, 3746, 1, 0, 0, 0, 3747, 3748, 1, 0, 0, 0, 3748, 3749, 1, 0, 0, 0, 3749, 3754,
    3, 506, 253, 0, 3750, 3751, 5, 397, 0, 0, 3751, 3753, 3, 506, 253, 0, 3752, 3750,
    1, 0, 0, 0, 3753, 3756, 1, 0, 0, 0, 3754, 3752, 1, 0, 0, 0, 3754, 3755, 1, 0, 0, 0, 3755,
    3760, 1, 0, 0, 0, 3756, 3754, 1, 0, 0, 0, 3757, 3758, 5, 347, 0, 0, 3758, 3760, 3, 504,
    252, 0, 3759, 3747, 1, 0, 0, 0, 3759, 3757, 1, 0, 0, 0, 3760, 3763, 1, 0, 0, 0, 3761,
    3763, 3, 508, 254, 0, 3762, 3742, 1, 0, 0, 0, 3762, 3761, 1, 0, 0, 0, 3763, 503, 1,
    0, 0, 0, 3764, 3765, 5, 399, 0, 0, 3765, 3766, 3, 512, 256, 0, 3766, 3767, 5, 400,
    0, 0, 3767, 3768, 3, 212, 106, 0, 3768, 3769, 3, 216, 108, 0, 3769, 3770, 5, 370,
    0, 0, 3770, 3783, 5, 426, 0, 0, 3771, 3781, 5, 17, 0, 0, 3772, 3775, 5, 399, 0, 0, 3773,
    3776, 3, 448, 224, 0, 3774, 3776, 3, 248, 124, 0, 3775, 3773, 1, 0, 0, 0, 3775, 3774,
    1, 0, 0, 0, 3776, 3777, 1, 0, 0, 0, 3777, 3778, 5, 400, 0, 0, 3778, 3782, 1, 0, 0, 0,
    3779, 3782, 3, 448, 224, 0, 3780, 3782, 3, 248, 124, 0, 3781, 3772, 1, 0, 0, 0, 3781,
    3779, 1, 0, 0, 0, 3781, 3780, 1, 0, 0, 0, 3782, 3784, 1, 0, 0, 0, 3783, 3771, 1, 0, 0,
    0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3786, 3, 212, 106, 0, 3786,
    3787, 3, 214, 107, 0, 3787, 505, 1, 0, 0, 0, 3788, 3812, 3, 444, 222, 0, 3789, 3792,
    3, 256, 128, 0, 3790, 3792, 3, 584, 292, 0, 3791, 3789, 1, 0, 0, 0, 3791, 3790, 1,
    0, 0, 0, 3792, 3809, 1, 0, 0, 0, 3793, 3795, 5, 17, 0, 0, 3794, 3793, 1, 0, 0, 0, 3794,
    3795, 1, 0, 0, 0, 3795, 3796, 1, 0, 0, 0, 3796, 3810, 3, 642, 321, 0, 3797, 3798, 5,
    17, 0, 0, 3798, 3799, 5, 399, 0, 0, 3799, 3804, 3, 642, 321, 0, 3800, 3801, 5, 397,
    0, 0, 3801, 3803, 3, 642, 321, 0, 3802, 3800, 1, 0, 0, 0, 3803, 3806, 1, 0, 0, 0, 3804,
    3802, 1, 0, 0, 0, 3804, 3805, 1, 0, 0, 0, 3805, 3807, 1, 0, 0, 0, 3806, 3804, 1, 0, 0,
    0, 3807, 3808, 5, 400, 0, 0, 3808, 3810, 1, 0, 0, 0, 3809, 3794, 1, 0, 0, 0, 3809, 3797,
    1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3812, 1, 0, 0, 0, 3811, 3788, 1, 0, 0, 0, 3811,
    3791, 1, 0, 0, 0, 3812, 507, 1, 0, 0, 0, 3813, 3814, 7, 31, 0, 0, 3814, 3815, 3, 512,
    256, 0, 3815, 3816, 3, 212, 106, 0, 3816, 3817, 3, 216, 108, 0, 3817, 3818, 5, 370,
    0, 0, 3818, 3831, 5, 426, 0, 0, 3819, 3829, 5, 17, 0, 0, 3820, 3823, 5, 399, 0, 0, 3821,
    3824, 3, 448, 224, 0, 3822, 3824, 3, 248, 124, 0, 3823, 3821, 1, 0, 0, 0, 3823, 3822,
    1, 0, 0, 0, 3824, 3825, 1, 0, 0, 0, 3825, 3826, 5, 400, 0, 0, 3826, 3830, 1, 0, 0, 0,
    3827, 3830, 3, 448, 224, 0, 3828, 3830, 3, 248, 124, 0, 3829, 3820, 1, 0, 0, 0, 3829,
    3827, 1, 0, 0, 0, 3829, 3828, 1, 0, 0, 0, 3830, 3832, 1, 0, 0, 0, 3831, 3819, 1, 0, 0,
    0, 3831, 3832, 1, 0, 0, 0, 3832, 3833, 1, 0, 0, 0, 3833, 3834, 3, 212, 106, 0, 3834,
    3835, 3, 214, 107, 0, 3835, 509, 1, 0, 0, 0, 3836, 3839, 3, 444, 222, 0, 3837, 3839,
    3, 584, 292, 0, 3838, 3836, 1, 0, 0, 0, 3838, 3837, 1, 0, 0, 0, 3839, 511, 1, 0, 0, 0,
    3840, 3845, 3, 510, 255, 0, 3841, 3842, 5, 397, 0, 0, 3842, 3844, 3, 510, 255, 0,
    3843, 3841, 1, 0, 0, 0, 3844, 3847, 1, 0, 0, 0, 3845, 3843, 1, 0, 0, 0, 3845, 3846,
    1, 0, 0, 0, 3846, 513, 1, 0, 0, 0, 3847, 3845, 1, 0, 0, 0, 3848, 3849, 5, 386, 0, 0, 3849,
    3850, 3, 642, 321, 0, 3850, 3851, 5, 17, 0, 0, 3851, 3859, 3, 516, 258, 0, 3852, 3853,
    5, 397, 0, 0, 3853, 3854, 3, 642, 321, 0, 3854, 3855, 5, 17, 0, 0, 3855, 3856, 3, 516,
    258, 0, 3856, 3858, 1, 0, 0, 0, 3857, 3852, 1, 0, 0, 0, 3858, 3861, 1, 0, 0, 0, 3859,
    3857, 1, 0, 0, 0, 3859, 3860, 1, 0, 0, 0, 3860, 515, 1, 0, 0, 0, 3861, 3859, 1, 0, 0,
    0, 3862, 3875, 3, 642, 321, 0, 3863, 3865, 5, 399, 0, 0, 3864, 3866, 3, 642, 321,
    0, 3865, 3864, 1, 0, 0, 0, 3865, 3866, 1, 0, 0, 0, 3866, 3868, 1, 0, 0, 0, 3867, 3869,
    3, 490, 245, 0, 3868, 3867, 1, 0, 0, 0, 3868, 3869, 1, 0, 0, 0, 3869, 3871, 1, 0, 0,
    0, 3870, 3872, 3, 518, 259, 0, 3871, 3870, 1, 0, 0, 0, 3871, 3872, 1, 0, 0, 0, 3872,
    3873, 1, 0, 0, 0, 3873, 3875, 5, 400, 0, 0, 3874, 3862, 1, 0, 0, 0, 3874, 3863, 1, 0,
    0, 0, 3875, 517, 1, 0, 0, 0, 3876, 3890, 7, 32, 0, 0, 3877, 3878, 5, 354, 0, 0, 3878,
    3884, 5, 247, 0, 0, 3879, 3880, 5, 62, 0, 0, 3880, 3884, 5, 291, 0, 0, 3881, 3882,
    5, 431, 0, 0, 3882, 3884, 5, 247, 0, 0, 3883, 3877, 1, 0, 0, 0, 3883, 3879, 1, 0, 0,
    0, 3883, 3881, 1, 0, 0, 0, 3884, 3891, 1, 0, 0, 0, 3885, 3886, 5, 25, 0, 0, 3886, 3887,
    3, 520, 260, 0, 3887, 3888, 5, 11, 0, 0, 3888, 3889, 3, 520, 260, 0, 3889, 3891, 1,
    0, 0, 0, 3890, 3883, 1, 0, 0, 0, 3890, 3885, 1, 0, 0, 0, 3891, 519, 1, 0, 0, 0, 3892,
    3893, 7, 33, 0, 0, 3893, 3897, 7, 34, 0, 0, 3894, 3895, 5, 62, 0, 0, 3895, 3897, 5,
    291, 0, 0, 3896, 3892, 1, 0, 0, 0, 3896, 3894, 1, 0, 0, 0, 3897, 521, 1, 0, 0, 0, 3898,
    3899, 5, 144, 0, 0, 3899, 3905, 5, 32, 0, 0, 3900, 3906, 3, 256, 128, 0, 3901, 3906,
    3, 524, 262, 0, 3902, 3906, 3, 526, 263, 0, 3903, 3904, 5, 399, 0, 0, 3904, 3906,
    5, 400, 0, 0, 3905, 3900, 1, 0, 0, 0, 3905, 3901, 1, 0, 0, 0, 3905, 3902, 1, 0, 0, 0,
    3905, 3903, 1, 0, 0, 0, 3906, 523, 1, 0, 0, 0, 3907, 3910, 5, 290, 0, 0, 3908, 3910,
    5, 61, 0, 0, 3909, 3907, 1, 0, 0, 0, 3909, 3908, 1, 0, 0, 0, 3910, 3911, 1, 0, 0, 0, 3911,
    3912, 5, 399, 0, 0, 3912, 3917, 3, 584, 292, 0, 3913, 3914, 5, 397, 0, 0, 3914, 3916,
    3, 584, 292, 0, 3915, 3913, 1, 0, 0, 0, 3916, 3919, 1, 0, 0, 0, 3917, 3915, 1, 0, 0,
    0, 3917, 3918, 1, 0, 0, 0, 3918, 3920, 1, 0, 0, 0, 3919, 3917, 1, 0, 0, 0, 3920, 3921,
    5, 400, 0, 0, 3921, 525, 1, 0, 0, 0, 3922, 3927, 3, 542, 271, 0, 3923, 3924, 5, 387,
    0, 0, 3924, 3928, 5, 290, 0, 0, 3925, 3926, 5, 387, 0, 0, 3926, 3928, 5, 61, 0, 0, 3927,
    3923, 1, 0, 0, 0, 3927, 3925, 1, 0, 0, 0, 3927, 3928, 1, 0, 0, 0, 3928, 3942, 1, 0, 0,
    0, 3929, 3930, 5, 145, 0, 0, 3930, 3931, 5, 305, 0, 0, 3931, 3932, 5, 399, 0, 0, 3932,
    3937, 3, 528, 264, 0, 3933, 3934, 5, 397, 0, 0, 3934, 3936, 3, 528, 264, 0, 3935,
    3933, 1, 0, 0, 0, 3936, 3939, 1, 0, 0, 0, 3937, 3935, 1, 0, 0, 0, 3937, 3938, 1, 0, 0,
    0, 3938, 3940, 1, 0, 0, 0, 3939, 3937, 1, 0, 0, 0, 3940, 3941, 5, 400, 0, 0, 3941, 3943,
    1, 0, 0, 0, 3942, 3929, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 527, 1, 0, 0, 0, 3944,
    3946, 5, 399, 0, 0, 3945, 3947, 3, 584, 292, 0, 3946, 3945, 1, 0, 0, 0, 3946, 3947,
    1, 0, 0, 0, 3947, 3952, 1, 0, 0, 0, 3948, 3949, 5, 397, 0, 0, 3949, 3951, 3, 584, 292,
    0, 3950, 3948, 1, 0, 0, 0, 3951, 3954, 1, 0, 0, 0, 3952, 3950, 1, 0, 0, 0, 3952, 3953,
    1, 0, 0, 0, 3953, 3955, 1, 0, 0, 0, 3954, 3952, 1, 0, 0, 0, 3955, 3958, 5, 400, 0, 0,
    3956, 3958, 3, 584, 292, 0, 3957, 3944, 1, 0, 0, 0, 3957, 3956, 1, 0, 0, 0, 3958, 529,
    1, 0, 0, 0, 3959, 3960, 5, 146, 0, 0, 3960, 3961, 3, 584, 292, 0, 3961, 531, 1, 0, 0,
    0, 3962, 3963, 5, 256, 0, 0, 3963, 3964, 3, 584, 292, 0, 3964, 533, 1, 0, 0, 0, 3965,
    3968, 5, 83, 0, 0, 3966, 3968, 3, 584, 292, 0, 3967, 3965, 1, 0, 0, 0, 3967, 3966,
    1, 0, 0, 0, 3968, 535, 1, 0, 0, 0, 3969, 3971, 3, 584, 292, 0, 3970, 3972, 5, 17, 0,
    0, 3971, 3970, 1, 0, 0, 0, 3971, 3972, 1, 0, 0, 0, 3972, 3974, 1, 0, 0, 0, 3973, 3975,
    3, 642, 321, 0, 3974, 3973, 1, 0, 0, 0, 3974, 3975, 1, 0, 0, 0, 3975, 3986, 1, 0, 0,
    0, 3976, 3977, 5, 397, 0, 0, 3977, 3979, 3, 584, 292, 0, 3978, 3980, 5, 17, 0, 0, 3979,
    3978, 1, 0, 0, 0, 3979, 3980, 1, 0, 0, 0, 3980, 3982, 1, 0, 0, 0, 3981, 3983, 3, 642,
    321, 0, 3982, 3981, 1, 0, 0, 0, 3982, 3983, 1, 0, 0, 0, 3983, 3985, 1, 0, 0, 0, 3984,
    3976, 1, 0, 0, 0, 3985, 3988, 1, 0, 0, 0, 3986, 3984, 1, 0, 0, 0, 3986, 3987, 1, 0, 0,
    0, 3987, 537, 1, 0, 0, 0, 3988, 3986, 1, 0, 0, 0, 3989, 3992, 3, 540, 270, 0, 3990,
    3992, 3, 542, 271, 0, 3991, 3989, 1, 0, 0, 0, 3991, 3990, 1, 0, 0, 0, 3992, 539, 1,
    0, 0, 0, 3993, 3994, 5, 399, 0, 0, 3994, 3995, 3, 542, 271, 0, 3995, 3996, 5, 400,
    0, 0, 3996, 541, 1, 0, 0, 0, 3997, 4004, 3, 534, 267, 0, 3998, 3999, 5, 397, 0, 0, 3999,
    4001, 3, 534, 267, 0, 4000, 3998, 1, 0, 0, 0, 4001, 4002, 1, 0, 0, 0, 4002, 4000, 1,
    0, 0, 0, 4002, 4003, 1, 0, 0, 0, 4003, 4005, 1, 0, 0, 0, 4004, 4000, 1, 0, 0, 0, 4004,
    4005, 1, 0, 0, 0, 4005, 543, 1, 0, 0, 0, 4006, 4007, 5, 229, 0, 0, 4007, 4008, 5, 32,
    0, 0, 4008, 4013, 3, 310, 155, 0, 4009, 4010, 5, 397, 0, 0, 4010, 4012, 3, 310, 155,
    0, 4011, 4009, 1, 0, 0, 0, 4012, 4015, 1, 0, 0, 0, 4013, 4011, 1, 0, 0, 0, 4013, 4014,
    1, 0, 0, 0, 4014, 545, 1, 0, 0, 0, 4015, 4013, 1, 0, 0, 0, 4016, 4017, 5, 237, 0, 0, 4017,
    4018, 5, 32, 0, 0, 4018, 4019, 3, 538, 269, 0, 4019, 547, 1, 0, 0, 0, 4020, 4021, 5,
    41, 0, 0, 4021, 4022, 5, 32, 0, 0, 4022, 4023, 3, 538, 269, 0, 4023, 549, 1, 0, 0, 0,
    4024, 4025, 5, 97, 0, 0, 4025, 4026, 5, 32, 0, 0, 4026, 4027, 3, 538, 269, 0, 4027,
    551, 1, 0, 0, 0, 4028, 4029, 5, 314, 0, 0, 4029, 4049, 5, 32, 0, 0, 4030, 4031, 5, 399,
    0, 0, 4031, 4036, 3, 310, 155, 0, 4032, 4033, 5, 397, 0, 0, 4033, 4035, 3, 310, 155,
    0, 4034, 4032, 1, 0, 0, 0, 4035, 4038, 1, 0, 0, 0, 4036, 4034, 1, 0, 0, 0, 4036, 4037,
    1, 0, 0, 0, 4037, 4039, 1, 0, 0, 0, 4038, 4036, 1, 0, 0, 0, 4039, 4040, 5, 400, 0, 0,
    4040, 4050, 1, 0, 0, 0, 4041, 4046, 3, 310, 155, 0, 4042, 4043, 5, 397, 0, 0, 4043,
    4045, 3, 310, 155, 0, 4044, 4042, 1, 0, 0, 0, 4045, 4048, 1, 0, 0, 0, 4046, 4044, 1,
    0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4050, 1, 0, 0, 0, 4048, 4046, 1, 0, 0, 0, 4049,
    4030, 1, 0, 0, 0, 4049, 4041, 1, 0, 0, 0, 4050, 553, 1, 0, 0, 0, 4051, 4052, 5, 349,
    0, 0, 4052, 4056, 5, 399, 0, 0, 4053, 4057, 5, 179, 0, 0, 4054, 4057, 5, 343, 0, 0,
    4055, 4057, 5, 29, 0, 0, 4056, 4053, 1, 0, 0, 0, 4056, 4054, 1, 0, 0, 0, 4056, 4055,
    1, 0, 0, 0, 4056, 4057, 1, 0, 0, 0, 4057, 4059, 1, 0, 0, 0, 4058, 4060, 3, 510, 255,
    0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4062,
    5, 139, 0, 0, 4062, 4063, 3, 510, 255, 0, 4063, 4064, 5, 400, 0, 0, 4064, 4105, 1,
    0, 0, 0, 4065, 4066, 3, 562, 281, 0, 4066, 4081, 5, 399, 0, 0, 4067, 4082, 5, 415,
    0, 0, 4068, 4070, 7, 22, 0, 0, 4069, 4068, 1, 0, 0, 0, 4069, 4070, 1, 0, 0, 0, 4070,
    4079, 1, 0, 0, 0, 4071, 4076, 3, 510, 255, 0, 4072, 4073, 5, 397, 0, 0, 4073, 4075,
    3, 510, 255, 0, 4074, 4072, 1, 0, 0, 0, 4075, 4078, 1, 0, 0, 0, 4076, 4074, 1, 0, 0,
    0, 4076, 4077, 1, 0, 0, 0, 4077, 4080, 1, 0, 0, 0, 4078, 4076, 1, 0, 0, 0, 4079, 4071,
    1, 0, 0, 0, 4079, 4080, 1, 0, 0, 0, 4080, 4082, 1, 0, 0, 0, 4081, 4067, 1, 0, 0, 0, 4081,
    4069, 1, 0, 0, 0, 4082, 4102, 1, 0, 0, 0, 4083, 4084, 5, 400, 0, 0, 4084, 4085, 5, 388,
    0, 0, 4085, 4086, 5, 144, 0, 0, 4086, 4087, 5, 399, 0, 0, 4087, 4088, 3, 544, 272,
    0, 4088, 4089, 5, 400, 0, 0, 4089, 4103, 1, 0, 0, 0, 4090, 4092, 5, 400, 0, 0, 4091,
    4093, 3, 556, 278, 0, 4092, 4091, 1, 0, 0, 0, 4092, 4093, 1, 0, 0, 0, 4093, 4094, 1,
    0, 0, 0, 4094, 4095, 5, 234, 0, 0, 4095, 4103, 3, 516, 258, 0, 4096, 4097, 3, 556,
    278, 0, 4097, 4098, 5, 400, 0, 0, 4098, 4099, 5, 234, 0, 0, 4099, 4100, 3, 516, 258,
    0, 4100, 4103, 1, 0, 0, 0, 4101, 4103, 5, 400, 0, 0, 4102, 4083, 1, 0, 0, 0, 4102, 4090,
    1, 0, 0, 0, 4102, 4096, 1, 0, 0, 0, 4102, 4101, 1, 0, 0, 0, 4103, 4105, 1, 0, 0, 0, 4104,
    4051, 1, 0, 0, 0, 4104, 4065, 1, 0, 0, 0, 4105, 555, 1, 0, 0, 0, 4106, 4107, 7, 35, 0,
    0, 4107, 4108, 5, 220, 0, 0, 4108, 557, 1, 0, 0, 0, 4109, 4110, 3, 644, 322, 0, 4110,
    559, 1, 0, 0, 0, 4111, 4114, 3, 644, 322, 0, 4112, 4114, 5, 426, 0, 0, 4113, 4111,
    1, 0, 0, 0, 4113, 4112, 1, 0, 0, 0, 4114, 561, 1, 0, 0, 0, 4115, 4119, 3, 644, 322, 0,
    4116, 4119, 3, 650, 325, 0, 4117, 4119, 3, 640, 320, 0, 4118, 4115, 1, 0, 0, 0, 4118,
    4116, 1, 0, 0, 0, 4118, 4117, 1, 0, 0, 0, 4119, 563, 1, 0, 0, 0, 4120, 4121, 5, 36, 0,
    0, 4121, 4122, 5, 399, 0, 0, 4122, 4123, 3, 584, 292, 0, 4123, 4124, 5, 17, 0, 0, 4124,
    4127, 3, 350, 175, 0, 4125, 4126, 5, 137, 0, 0, 4126, 4128, 5, 426, 0, 0, 4127, 4125,
    1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, 4128, 4129, 1, 0, 0, 0, 4129, 4130, 5, 400, 0, 0,
    4130, 565, 1, 0, 0, 0, 4131, 4132, 5, 35, 0, 0, 4132, 4138, 3, 584, 292, 0, 4133, 4134,
    5, 383, 0, 0, 4134, 4135, 3, 584, 292, 0, 4135, 4136, 5, 335, 0, 0, 4136, 4137, 3,
    584, 292, 0, 4137, 4139, 1, 0, 0, 0, 4138, 4133, 1, 0, 0, 0, 4139, 4140, 1, 0, 0, 0,
    4140, 4138, 1, 0, 0, 0, 4140, 4141, 1, 0, 0, 0, 4141, 4144, 1, 0, 0, 0, 4142, 4143,
    5, 105, 0, 0, 4143, 4145, 3, 584, 292, 0, 4144, 4142, 1, 0, 0, 0, 4144, 4145, 1, 0,
    0, 0, 4145, 4146, 1, 0, 0, 0, 4146, 4147, 5, 108, 0, 0, 4147, 567, 1, 0, 0, 0, 4148,
    4154, 5, 35, 0, 0, 4149, 4150, 5, 383, 0, 0, 4150, 4151, 3, 584, 292, 0, 4151, 4152,
    5, 335, 0, 0, 4152, 4153, 3, 584, 292, 0, 4153, 4155, 1, 0, 0, 0, 4154, 4149, 1, 0,
    0, 0, 4155, 4156, 1, 0, 0, 0, 4156, 4154, 1, 0, 0, 0, 4156, 4157, 1, 0, 0, 0, 4157, 4160,
    1, 0, 0, 0, 4158, 4159, 5, 105, 0, 0, 4159, 4161, 3, 584, 292, 0, 4160, 4158, 1, 0,
    0, 0, 4160, 4161, 1, 0, 0, 0, 4161, 4162, 1, 0, 0, 0, 4162, 4163, 5, 108, 0, 0, 4163,
    569, 1, 0, 0, 0, 4164, 4165, 5, 132, 0, 0, 4165, 4166, 5, 399, 0, 0, 4166, 4169, 3,
    584, 292, 0, 4167, 4168, 5, 341, 0, 0, 4168, 4170, 3, 574, 287, 0, 4169, 4167, 1,
    0, 0, 0, 4169, 4170, 1, 0, 0, 0, 4170, 4171, 1, 0, 0, 0, 4171, 4172, 5, 400, 0, 0, 4172,
    571, 1, 0, 0, 0, 4173, 4174, 5, 124, 0, 0, 4174, 4175, 5, 399, 0, 0, 4175, 4176, 3,
    574, 287, 0, 4176, 4177, 5, 139, 0, 0, 4177, 4178, 3, 584, 292, 0, 4178, 4179, 5,
    400, 0, 0, 4179, 573, 1, 0, 0, 0, 4180, 4189, 3, 670, 335, 0, 4181, 4189, 5, 257, 0,
    0, 4182, 4189, 3, 672, 336, 0, 4183, 4189, 3, 674, 337, 0, 4184, 4189, 3, 676, 338,
    0, 4185, 4189, 3, 678, 339, 0, 4186, 4189, 3, 680, 340, 0, 4187, 4189, 3, 682, 341,
    0, 4188, 4180, 1, 0, 0, 0, 4188, 4181, 1, 0, 0, 0, 4188, 4182, 1, 0, 0, 0, 4188, 4183,
    1, 0, 0, 0, 4188, 4184, 1, 0, 0, 0, 4188, 4185, 1, 0, 0, 0, 4188, 4186, 1, 0, 0, 0, 4188,
    4187, 1, 0, 0, 0, 4189, 575, 1, 0, 0, 0, 4190, 4191, 3, 578, 289, 0, 4191, 4192, 3,
    582, 291, 0, 4192, 4219, 1, 0, 0, 0, 4193, 4219, 5, 431, 0, 0, 4194, 4195, 5, 71, 0,
    0, 4195, 4219, 5, 426, 0, 0, 4196, 4219, 5, 63, 0, 0, 4197, 4198, 5, 337, 0, 0, 4198,
    4219, 5, 426, 0, 0, 4199, 4219, 5, 64, 0, 0, 4200, 4201, 5, 338, 0, 0, 4201, 4219,
    5, 426, 0, 0, 4202, 4206, 5, 426, 0, 0, 4203, 4205, 5, 426, 0, 0, 4204, 4203, 1, 0,
    0, 0, 4205, 4208, 1, 0, 0, 0, 4206, 4204, 1, 0, 0, 0, 4206, 4207, 1, 0, 0, 0, 4207, 4219,
    1, 0, 0, 0, 4208, 4206, 1, 0, 0, 0, 4209, 4219, 5, 428, 0, 0, 4210, 4219, 5, 429, 0,
    0, 4211, 4212, 5, 433, 0, 0, 4212, 4219, 5, 427, 0, 0, 4213, 4219, 5, 350, 0, 0, 4214,
    4219, 5, 125, 0, 0, 4215, 4219, 5, 219, 0, 0, 4216, 4219, 5, 424, 0, 0, 4217, 4219,
    3, 258, 129, 0, 4218, 4190, 1, 0, 0, 0, 4218, 4193, 1, 0, 0, 0, 4218, 4194, 1, 0, 0,
    0, 4218, 4196, 1, 0, 0, 0, 4218, 4197, 1, 0, 0, 0, 4218, 4199, 1, 0, 0, 0, 4218, 4200,
    1, 0, 0, 0, 4218, 4202, 1, 0, 0, 0, 4218, 4209, 1, 0, 0, 0, 4218, 4210, 1, 0, 0, 0, 4218,
    4211, 1, 0, 0, 0, 4218, 4213, 1, 0, 0, 0, 4218, 4214, 1, 0, 0, 0, 4218, 4215, 1, 0, 0,
    0, 4218, 4216, 1, 0, 0, 0, 4218, 4217, 1, 0, 0, 0, 4219, 577, 1, 0, 0, 0, 4220, 4221,
    7, 27, 0, 0, 4221, 579, 1, 0, 0, 0, 4222, 4223, 5, 399, 0, 0, 4223, 4224, 3, 578, 289,
    0, 4224, 4225, 5, 400, 0, 0, 4225, 4226, 3, 582, 291, 0, 4226, 4238, 1, 0, 0, 0, 4227,
    4233, 5, 165, 0, 0, 4228, 4234, 3, 578, 289, 0, 4229, 4230, 5, 399, 0, 0, 4230, 4231,
    3, 584, 292, 0, 4231, 4232, 5, 400, 0, 0, 4232, 4234, 1, 0, 0, 0, 4233, 4228, 1, 0,
    0, 0, 4233, 4229, 1, 0, 0, 0, 4234, 4235, 1, 0, 0, 0, 4235, 4236, 3, 582, 291, 0, 4236,
    4238, 1, 0, 0, 0, 4237, 4222, 1, 0, 0, 0, 4237, 4227, 1, 0, 0, 0, 4238, 581, 1, 0, 0,
    0, 4239, 4240, 3, 670, 335, 0, 4240, 4241, 5, 341, 0, 0, 4241, 4242, 3, 672, 336,
    0, 4242, 4254, 1, 0, 0, 0, 4243, 4244, 3, 676, 338, 0, 4244, 4245, 5, 341, 0, 0, 4245,
    4246, 3, 682, 341, 0, 4246, 4254, 1, 0, 0, 0, 4247, 4254, 3, 670, 335, 0, 4248, 4254,
    3, 672, 336, 0, 4249, 4254, 3, 676, 338, 0, 4250, 4254, 3, 678, 339, 0, 4251, 4254,
    3, 680, 340, 0, 4252, 4254, 3, 682, 341, 0, 4253, 4239, 1, 0, 0, 0, 4253, 4243, 1,
    0, 0, 0, 4253, 4247, 1, 0, 0, 0, 4253, 4248, 1, 0, 0, 0, 4253, 4249, 1, 0, 0, 0, 4253,
    4250, 1, 0, 0, 0, 4253, 4251, 1, 0, 0, 0, 4253, 4252, 1, 0, 0, 0, 4254, 583, 1, 0, 0,
    0, 4255, 4260, 3, 626, 313, 0, 4256, 4257, 5, 228, 0, 0, 4257, 4259, 3, 626, 313,
    0, 4258, 4256, 1, 0, 0, 0, 4259, 4262, 1, 0, 0, 0, 4260, 4258, 1, 0, 0, 0, 4260, 4261,
    1, 0, 0, 0, 4261, 585, 1, 0, 0, 0, 4262, 4260, 1, 0, 0, 0, 4263, 4275, 3, 576, 288, 0,
    4264, 4275, 3, 580, 290, 0, 4265, 4275, 3, 564, 282, 0, 4266, 4275, 3, 572, 286,
    0, 4267, 4275, 3, 570, 285, 0, 4268, 4275, 3, 566, 283, 0, 4269, 4275, 3, 568, 284,
    0, 4270, 4275, 3, 604, 302, 0, 4271, 4275, 3, 554, 277, 0, 4272, 4275, 3, 540, 270,
    0, 4273, 4275, 3, 642, 321, 0, 4274, 4263, 1, 0, 0, 0, 4274, 4264, 1, 0, 0, 0, 4274,
    4265, 1, 0, 0, 0, 4274, 4266, 1, 0, 0, 0, 4274, 4267, 1, 0, 0, 0, 4274, 4268, 1, 0, 0,
    0, 4274, 4269, 1, 0, 0, 0, 4274, 4270, 1, 0, 0, 0, 4274, 4271, 1, 0, 0, 0, 4274, 4272,
    1, 0, 0, 0, 4274, 4273, 1, 0, 0, 0, 4275, 587, 1, 0, 0, 0, 4276, 4278, 7, 36, 0, 0, 4277,
    4276, 1, 0, 0, 0, 4278, 4281, 1, 0, 0, 0, 4279, 4277, 1, 0, 0, 0, 4279, 4280, 1, 0, 0,
    0, 4280, 4282, 1, 0, 0, 0, 4281, 4279, 1, 0, 0, 0, 4282, 4291, 3, 586, 293, 0, 4283,
    4284, 5, 401, 0, 0, 4284, 4285, 3, 584, 292, 0, 4285, 4286, 5, 402, 0, 0, 4286, 4290,
    1, 0, 0, 0, 4287, 4288, 5, 395, 0, 0, 4288, 4290, 3, 642, 321, 0, 4289, 4283, 1, 0,
    0, 0, 4289, 4287, 1, 0, 0, 0, 4290, 4293, 1, 0, 0, 0, 4291, 4289, 1, 0, 0, 0, 4291, 4292,
    1, 0, 0, 0, 4292, 589, 1, 0, 0, 0, 4293, 4291, 1, 0, 0, 0, 4294, 4299, 3, 588, 294, 0,
    4295, 4296, 5, 423, 0, 0, 4296, 4298, 3, 588, 294, 0, 4297, 4295, 1, 0, 0, 0, 4298,
    4301, 1, 0, 0, 0, 4299, 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 591, 1, 0, 0,
    0, 4301, 4299, 1, 0, 0, 0, 4302, 4307, 3, 590, 295, 0, 4303, 4304, 7, 37, 0, 0, 4304,
    4306, 3, 590, 295, 0, 4305, 4303, 1, 0, 0, 0, 4306, 4309, 1, 0, 0, 0, 4307, 4305, 1,
    0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 593, 1, 0, 0, 0, 4309, 4307, 1, 0, 0, 0, 4310,
    4315, 3, 592, 296, 0, 4311, 4312, 7, 38, 0, 0, 4312, 4314, 3, 592, 296, 0, 4313, 4311,
    1, 0, 0, 0, 4314, 4317, 1, 0, 0, 0, 4315, 4313, 1, 0, 0, 0, 4315, 4316, 1, 0, 0, 0, 4316,
    595, 1, 0, 0, 0, 4317, 4315, 1, 0, 0, 0, 4318, 4323, 3, 594, 297, 0, 4319, 4320, 5,
    422, 0, 0, 4320, 4322, 3, 594, 297, 0, 4321, 4319, 1, 0, 0, 0, 4322, 4325, 1, 0, 0,
    0, 4323, 4321, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 597, 1, 0, 0, 0, 4325, 4323,
    1, 0, 0, 0, 4326, 4331, 3, 596, 298, 0, 4327, 4328, 5, 419, 0, 0, 4328, 4330, 3, 596,
    298, 0, 4329, 4327, 1, 0, 0, 0, 4330, 4333, 1, 0, 0, 0, 4331, 4329, 1, 0, 0, 0, 4331,
    4332, 1, 0, 0, 0, 4332, 599, 1, 0, 0, 0, 4333, 4331, 1, 0, 0, 0, 4334, 4339, 3, 598,
    299, 0, 4335, 4336, 5, 421, 0, 0, 4336, 4338, 3, 598, 299, 0, 4337, 4335, 1, 0, 0,
    0, 4338, 4341, 1, 0, 0, 0, 4339, 4337, 1, 0, 0, 0, 4339, 4340, 1, 0, 0, 0, 4340, 601,
    1, 0, 0, 0, 4341, 4339, 1, 0, 0, 0, 4342, 4343, 7, 39, 0, 0, 4343, 603, 1, 0, 0, 0, 4344,
    4345, 5, 399, 0, 0, 4345, 4346, 3, 378, 189, 0, 4346, 4347, 5, 400, 0, 0, 4347, 605,
    1, 0, 0, 0, 4348, 4350, 3, 600, 300, 0, 4349, 4351, 3, 608, 304, 0, 4350, 4349, 1,
    0, 0, 0, 4350, 4351, 1, 0, 0, 0, 4351, 4355, 1, 0, 0, 0, 4352, 4353, 5, 117, 0, 0, 4353,
    4355, 3, 604, 302, 0, 4354, 4348, 1, 0, 0, 0, 4354, 4352, 1, 0, 0, 0, 4355, 607, 1,
    0, 0, 0, 4356, 4357, 3, 602, 301, 0, 4357, 4358, 3, 600, 300, 0, 4358, 4363, 1, 0,
    0, 0, 4359, 4363, 3, 610, 305, 0, 4360, 4361, 5, 216, 0, 0, 4361, 4363, 3, 614, 307,
    0, 4362, 4356, 1, 0, 0, 0, 4362, 4359, 1, 0, 0, 0, 4362, 4360, 1, 0, 0, 0, 4363, 609,
    1, 0, 0, 0, 4364, 4365, 5, 154, 0, 0, 4365, 4379, 3, 612, 306, 0, 4366, 4367, 5, 25,
    0, 0, 4367, 4368, 3, 600, 300, 0, 4368, 4369, 5, 11, 0, 0, 4369, 4370, 3, 600, 300,
    0, 4370, 4379, 1, 0, 0, 0, 4371, 4372, 5, 184, 0, 0, 4372, 4373, 7, 40, 0, 0, 4373,
    4379, 3, 540, 270, 0, 4374, 4375, 3, 638, 319, 0, 4375, 4376, 7, 41, 0, 0, 4376, 4377,
    3, 604, 302, 0, 4377, 4379, 1, 0, 0, 0, 4378, 4364, 1, 0, 0, 0, 4378, 4366, 1, 0, 0,
    0, 4378, 4371, 1, 0, 0, 0, 4378, 4374, 1, 0, 0, 0, 4379, 611, 1, 0, 0, 0, 4380, 4383,
    3, 604, 302, 0, 4381, 4383, 3, 540, 270, 0, 4382, 4380, 1, 0, 0, 0, 4382, 4381, 1,
    0, 0, 0, 4383, 613, 1, 0, 0, 0, 4384, 4385, 7, 42, 0, 0, 4385, 4388, 3, 600, 300, 0,
    4386, 4388, 3, 610, 305, 0, 4387, 4384, 1, 0, 0, 0, 4387, 4386, 1, 0, 0, 0, 4388, 615,
    1, 0, 0, 0, 4389, 4390, 5, 167, 0, 0, 4390, 4391, 5, 96, 0, 0, 4391, 4392, 5, 139, 0,
    0, 4392, 617, 1, 0, 0, 0, 4393, 4401, 5, 405, 0, 0, 4394, 4401, 5, 406, 0, 0, 4395,
    4401, 5, 407, 0, 0, 4396, 4397, 5, 167, 0, 0, 4397, 4398, 5, 216, 0, 0, 4398, 4399,
    5, 96, 0, 0, 4399, 4401, 5, 139, 0, 0, 4400, 4393, 1, 0, 0, 0, 4400, 4394, 1, 0, 0, 0,
    4400, 4395, 1, 0, 0, 0, 4400, 4396, 1, 0, 0, 0, 4401, 619, 1, 0, 0, 0, 4402, 4411, 3,
    606, 303, 0, 4403, 4404, 3, 618, 309, 0, 4404, 4405, 3, 606, 303, 0, 4405, 4410,
    1, 0, 0, 0, 4406, 4407, 3, 616, 308, 0, 4407, 4408, 3, 606, 303, 0, 4408, 4410, 1,
    0, 0, 0, 4409, 4403, 1, 0, 0, 0, 4409, 4406, 1, 0, 0, 0, 4410, 4413, 1, 0, 0, 0, 4411,
    4409, 1, 0, 0, 0, 4411, 4412, 1, 0, 0, 0, 4412, 621, 1, 0, 0, 0, 4413, 4411, 1, 0, 0,
    0, 4414, 4421, 5, 219, 0, 0, 4415, 4421, 5, 350, 0, 0, 4416, 4421, 5, 125, 0, 0, 4417,
    4421, 5, 360, 0, 0, 4418, 4419, 5, 216, 0, 0, 4419, 4421, 7, 43, 0, 0, 4420, 4414,
    1, 0, 0, 0, 4420, 4415, 1, 0, 0, 0, 4420, 4416, 1, 0, 0, 0, 4420, 4417, 1, 0, 0, 0, 4420,
    4418, 1, 0, 0, 0, 4421, 623, 1, 0, 0, 0, 4422, 4424, 5, 216, 0, 0, 4423, 4422, 1, 0,
    0, 0, 4424, 4427, 1, 0, 0, 0, 4425, 4423, 1, 0, 0, 0, 4425, 4426, 1, 0, 0, 0, 4426, 4428,
    1, 0, 0, 0, 4427, 4425, 1, 0, 0, 0, 4428, 4431, 3, 620, 310, 0, 4429, 4430, 5, 167,
    0, 0, 4430, 4432, 3, 622, 311, 0, 4431, 4429, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432,
    625, 1, 0, 0, 0, 4433, 4438, 3, 624, 312, 0, 4434, 4435, 5, 11, 0, 0, 4435, 4437, 3,
    624, 312, 0, 4436, 4434, 1, 0, 0, 0, 4437, 4440, 1, 0, 0, 0, 4438, 4436, 1, 0, 0, 0,
    4438, 4439, 1, 0, 0, 0, 4439, 627, 1, 0, 0, 0, 4440, 4438, 1, 0, 0, 0, 4441, 4443, 3,
    480, 240, 0, 4442, 4444, 3, 630, 315, 0, 4443, 4442, 1, 0, 0, 0, 4443, 4444, 1, 0,
    0, 0, 4444, 629, 1, 0, 0, 0, 4445, 4446, 5, 237, 0, 0, 4446, 4447, 5, 399, 0, 0, 4447,
    4452, 3, 632, 316, 0, 4448, 4449, 5, 397, 0, 0, 4449, 4451, 3, 632, 316, 0, 4450,
    4448, 1, 0, 0, 0, 4451, 4454, 1, 0, 0, 0, 4452, 4450, 1, 0, 0, 0, 4452, 4453, 1, 0, 0,
    0, 4453, 4455, 1, 0, 0, 0, 4454, 4452, 1, 0, 0, 0, 4455, 4456, 5, 400, 0, 0, 4456, 631,
    1, 0, 0, 0, 4457, 4460, 3, 642, 321, 0, 4458, 4459, 5, 405, 0, 0, 4459, 4461, 3, 576,
    288, 0, 4460, 4458, 1, 0, 0, 0, 4460, 4461, 1, 0, 0, 0, 4461, 633, 1, 0, 0, 0, 4462,
    4463, 5, 399, 0, 0, 4463, 4468, 3, 636, 318, 0, 4464, 4465, 5, 397, 0, 0, 4465, 4467,
    3, 636, 318, 0, 4466, 4464, 1, 0, 0, 0, 4467, 4470, 1, 0, 0, 0, 4468, 4466, 1, 0, 0,
    0, 4468, 4469, 1, 0, 0, 0, 4469, 4471, 1, 0, 0, 0, 4470, 4468, 1, 0, 0, 0, 4471, 4472,
    5, 400, 0, 0, 4472, 635, 1, 0, 0, 0, 4473, 4476, 3, 642, 321, 0, 4474, 4477, 5, 184,
    0, 0, 4475, 4477, 3, 638, 319, 0, 4476, 4474, 1, 0, 0, 0, 4476, 4475, 1, 0, 0, 0, 4477,
    4478, 1, 0, 0, 0, 4478, 4479, 3, 576, 288, 0, 4479, 637, 1, 0, 0, 0, 4480, 4481, 7,
    44, 0, 0, 4481, 639, 1, 0, 0, 0, 4482, 4483, 7, 45, 0, 0, 4483, 641, 1, 0, 0, 0, 4484,
    4487, 5, 432, 0, 0, 4485, 4487, 3, 648, 324, 0, 4486, 4484, 1, 0, 0, 0, 4486, 4485,
    1, 0, 0, 0, 4487, 643, 1, 0, 0, 0, 4488, 4491, 3, 642, 321, 0, 4489, 4490, 5, 395, 0,
    0, 4490, 4492, 3, 642, 321, 0, 4491, 4489, 1, 0, 0, 0, 4491, 4492, 1, 0, 0, 0, 4492,
    645, 1, 0, 0, 0, 4493, 4494, 3, 642, 321, 0, 4494, 647, 1, 0, 0, 0, 4495, 4496, 7, 46,
    0, 0, 4496, 649, 1, 0, 0, 0, 4497, 4498, 7, 47, 0, 0, 4498, 651, 1, 0, 0, 0, 4499, 4551,
    3, 642, 321, 0, 4500, 4551, 5, 299, 0, 0, 4501, 4551, 5, 171, 0, 0, 4502, 4551, 5,
    237, 0, 0, 4503, 4551, 5, 198, 0, 0, 4504, 4551, 5, 268, 0, 0, 4505, 4551, 5, 369,
    0, 0, 4506, 4551, 5, 241, 0, 0, 4507, 4551, 5, 165, 0, 0, 4508, 4551, 5, 292, 0, 0,
    4509, 4551, 5, 356, 0, 0, 4510, 4551, 5, 144, 0, 0, 4511, 4551, 5, 203, 0, 0, 4512,
    4551, 5, 219, 0, 0, 4513, 4551, 5, 126, 0, 0, 4514, 4551, 5, 188, 0, 0, 4515, 4551,
    5, 101, 0, 0, 4516, 4551, 5, 329, 0, 0, 4517, 4551, 5, 224, 0, 0, 4518, 4551, 5, 291,
    0, 0, 4519, 4551, 5, 145, 0, 0, 4520, 4551, 5, 304, 0, 0, 4521, 4551, 5, 135, 0, 0,
    4522, 4551, 5, 318, 0, 0, 4523, 4551, 5, 161, 0, 0, 4524, 4551, 5, 54, 0, 0, 4525,
    4551, 5, 166, 0, 0, 4526, 4551, 5, 358, 0, 0, 4527, 4551, 5, 45, 0, 0, 4528, 4551,
    5, 347, 0, 0, 4529, 4551, 5, 96, 0, 0, 4530, 4551, 5, 154, 0, 0, 4531, 4551, 5, 269,
    0, 0, 4532, 4551, 5, 337, 0, 0, 4533, 4551, 5, 225, 0, 0, 4534, 4551, 5, 108, 0, 0,
    4535, 4551, 5, 141, 0, 0, 4536, 4551, 5, 365, 0, 0, 4537, 4551, 5, 21, 0, 0, 4538,
    4551, 5, 78, 0, 0, 4539, 4551, 5, 374, 0, 0, 4540, 4551, 5, 336, 0, 0, 4541, 4551,
    5, 167, 0, 0, 4542, 4551, 5, 134, 0, 0, 4543, 4551, 5, 216, 0, 0, 4544, 4551, 5, 27,
    0, 0, 4545, 4551, 5, 370, 0, 0, 4546, 4551, 5, 263, 0, 0, 4547, 4551, 5, 25, 0, 0, 4548,
    4551, 5, 62, 0, 0, 4549, 4551, 5, 17, 0, 0, 4550, 4499, 1, 0, 0, 0, 4550, 4500, 1, 0,
    0, 0, 4550, 4501, 1, 0, 0, 0, 4550, 4502, 1, 0, 0, 0, 4550, 4503, 1, 0, 0, 0, 4550, 4504,
    1, 0, 0, 0, 4550, 4505, 1, 0, 0, 0, 4550, 4506, 1, 0, 0, 0, 4550, 4507, 1, 0, 0, 0, 4550,
    4508, 1, 0, 0, 0, 4550, 4509, 1, 0, 0, 0, 4550, 4510, 1, 0, 0, 0, 4550, 4511, 1, 0, 0,
    0, 4550, 4512, 1, 0, 0, 0, 4550, 4513, 1, 0, 0, 0, 4550, 4514, 1, 0, 0, 0, 4550, 4515,
    1, 0, 0, 0, 4550, 4516, 1, 0, 0, 0, 4550, 4517, 1, 0, 0, 0, 4550, 4518, 1, 0, 0, 0, 4550,
    4519, 1, 0, 0, 0, 4550, 4520, 1, 0, 0, 0, 4550, 4521, 1, 0, 0, 0, 4550, 4522, 1, 0, 0,
    0, 4550, 4523, 1, 0, 0, 0, 4550, 4524, 1, 0, 0, 0, 4550, 4525, 1, 0, 0, 0, 4550, 4526,
    1, 0, 0, 0, 4550, 4527, 1, 0, 0, 0, 4550, 4528, 1, 0, 0, 0, 4550, 4529, 1, 0, 0, 0, 4550,
    4530, 1, 0, 0, 0, 4550, 4531, 1, 0, 0, 0, 4550, 4532, 1, 0, 0, 0, 4550, 4533, 1, 0, 0,
    0, 4550, 4534, 1, 0, 0, 0, 4550, 4535, 1, 0, 0, 0, 4550, 4536, 1, 0, 0, 0, 4550, 4537,
    1, 0, 0, 0, 4550, 4538, 1, 0, 0, 0, 4550, 4539, 1, 0, 0, 0, 4550, 4540, 1, 0, 0, 0, 4550,
    4541, 1, 0, 0, 0, 4550, 4542, 1, 0, 0, 0, 4550, 4543, 1, 0, 0, 0, 4550, 4544, 1, 0, 0,
    0, 4550, 4545, 1, 0, 0, 0, 4550, 4546, 1, 0, 0, 0, 4550, 4547, 1, 0, 0, 0, 4550, 4548,
    1, 0, 0, 0, 4550, 4549, 1, 0, 0, 0, 4551, 653, 1, 0, 0, 0, 4552, 4553, 5, 58, 0, 0, 4553,
    4554, 5, 280, 0, 0, 4554, 4556, 5, 243, 0, 0, 4555, 4557, 3, 32, 16, 0, 4556, 4555,
    1, 0, 0, 0, 4556, 4557, 1, 0, 0, 0, 4557, 4567, 1, 0, 0, 0, 4558, 4559, 3, 642, 321,
    0, 4559, 4560, 5, 184, 0, 0, 4560, 4561, 3, 642, 321, 0, 4561, 4568, 1, 0, 0, 0, 4562,
    4565, 3, 642, 321, 0, 4563, 4564, 5, 387, 0, 0, 4564, 4566, 3, 660, 330, 0, 4565,
    4563, 1, 0, 0, 0, 4565, 4566, 1, 0, 0, 0, 4566, 4568, 1, 0, 0, 0, 4567, 4558, 1, 0, 0,
    0, 4567, 4562, 1, 0, 0, 0, 4568, 4718, 1, 0, 0, 0, 4569, 4570, 5, 9, 0, 0, 4570, 4571,
    5, 280, 0, 0, 4571, 4572, 5, 243, 0, 0, 4572, 4597, 3, 642, 321, 0, 4573, 4598, 5,
    373, 0, 0, 4574, 4598, 3, 668, 334, 0, 4575, 4576, 5, 304, 0, 0, 4576, 4598, 3, 660,
    330, 0, 4577, 4578, 5, 363, 0, 0, 4578, 4583, 3, 662, 331, 0, 4579, 4580, 5, 397,
    0, 0, 4580, 4582, 3, 662, 331, 0, 4581, 4579, 1, 0, 0, 0, 4582, 4585, 1, 0, 0, 0, 4583,
    4581, 1, 0, 0, 0, 4583, 4584, 1, 0, 0, 0, 4584, 4598, 1, 0, 0, 0, 4585, 4583, 1, 0, 0,
    0, 4586, 4587, 5, 274, 0, 0, 4587, 4588, 5, 341, 0, 0, 4588, 4598, 3, 642, 321, 0,
    4589, 4591, 3, 664, 332, 0, 4590, 4592, 3, 666, 333, 0, 4591, 4590, 1, 0, 0, 0, 4591,
    4592, 1, 0, 0, 0, 4592, 4598, 1, 0, 0, 0, 4593, 4595, 3, 666, 333, 0, 4594, 4596, 3,
    664, 332, 0, 4595, 4594, 1, 0, 0, 0, 4595, 4596, 1, 0, 0, 0, 4596, 4598, 1, 0, 0, 0,
    4597, 4573, 1, 0, 0, 0, 4597, 4574, 1, 0, 0, 0, 4597, 4575, 1, 0, 0, 0, 4597, 4577,
    1, 0, 0, 0, 4597, 4586, 1, 0, 0, 0, 4597, 4589, 1, 0, 0, 0, 4597, 4593, 1, 0, 0, 0, 4598,
    4718, 1, 0, 0, 0, 4599, 4600, 5, 101, 0, 0, 4600, 4601, 5, 280, 0, 0, 4601, 4603, 5,
    243, 0, 0, 4602, 4604, 3, 30, 15, 0, 4603, 4602, 1, 0, 0, 0, 4603, 4604, 1, 0, 0, 0,
    4604, 4605, 1, 0, 0, 0, 4605, 4718, 3, 642, 321, 0, 4606, 4609, 3, 666, 333, 0, 4607,
    4609, 3, 668, 334, 0, 4608, 4606, 1, 0, 0, 0, 4608, 4607, 1, 0, 0, 0, 4609, 4610, 1,
    0, 0, 0, 4610, 4611, 5, 390, 0, 0, 4611, 4612, 5, 197, 0, 0, 4612, 4718, 1, 0, 0, 0,
    4613, 4625, 5, 278, 0, 0, 4614, 4615, 5, 3, 0, 0, 4615, 4616, 5, 280, 0, 0, 4616, 4617,
    5, 243, 0, 0, 4617, 4618, 5, 387, 0, 0, 4618, 4626, 3, 642, 321, 0, 4619, 4620, 5,
    280, 0, 0, 4620, 4621, 5, 243, 0, 0, 4621, 4622, 3, 642, 321, 0, 4622, 4623, 5, 387,
    0, 0, 4623, 4624, 3, 642, 321, 0, 4624, 4626, 1, 0, 0, 0, 4625, 4614, 1, 0, 0, 0, 4625,
    4619, 1, 0, 0, 0, 4626, 4718, 1, 0, 0, 0, 4627, 4628, 5, 58, 0, 0, 4628, 4629, 5, 348,
    0, 0, 4629, 4630, 3, 642, 321, 0, 4630, 4631, 5, 395, 0, 0, 4631, 4632, 3, 642, 321,
    0, 4632, 4633, 5, 383, 0, 0, 4633, 4634, 3, 688, 344, 0, 4634, 4635, 5, 99, 0, 0, 4635,
    4636, 3, 690, 345, 0, 4636, 4718, 1, 0, 0, 0, 4637, 4638, 5, 9, 0, 0, 4638, 4639, 5,
    348, 0, 0, 4639, 4640, 3, 642, 321, 0, 4640, 4641, 5, 395, 0, 0, 4641, 4658, 3, 642,
    321, 0, 4642, 4643, 5, 383, 0, 0, 4643, 4644, 3, 688, 344, 0, 4644, 4645, 5, 99, 0,
    0, 4645, 4646, 3, 690, 345, 0, 4646, 4659, 1, 0, 0, 0, 4647, 4648, 5, 4, 0, 0, 4648,
    4652, 5, 341, 0, 0, 4649, 4650, 5, 101, 0, 0, 4650, 4652, 5, 139, 0, 0, 4651, 4647,
    1, 0, 0, 0, 4651, 4649, 1, 0, 0, 0, 4652, 4656, 1, 0, 0, 0, 4653, 4654, 5, 246, 0, 0,
    4654, 4657, 3, 686, 343, 0, 4655, 4657, 5, 362, 0, 0, 4656, 4653, 1, 0, 0, 0, 4656,
    4655, 1, 0, 0, 0, 4657, 4659, 1, 0, 0, 0, 4658, 4642, 1, 0, 0, 0, 4658, 4651, 1, 0, 0,
    0, 4659, 4718, 1, 0, 0, 0, 4660, 4661, 5, 101, 0, 0, 4661, 4662, 5, 348, 0, 0, 4662,
    4663, 3, 642, 321, 0, 4663, 4664, 5, 395, 0, 0, 4664, 4665, 3, 642, 321, 0, 4665,
    4718, 1, 0, 0, 0, 4666, 4667, 5, 58, 0, 0, 4667, 4668, 5, 246, 0, 0, 4668, 4669, 3,
    642, 321, 0, 4669, 4670, 5, 395, 0, 0, 4670, 4671, 3, 686, 343, 0, 4671, 4672, 5,
    387, 0, 0, 4672, 4673, 3, 694, 347, 0, 4673, 4718, 1, 0, 0, 0, 4674, 4675, 5, 9, 0,
    0, 4675, 4676, 5, 246, 0, 0, 4676, 4677, 3, 642, 321, 0, 4677, 4678, 5, 395, 0, 0,
    4678, 4686, 3, 686, 343, 0, 4679, 4680, 5, 304, 0, 0, 4680, 4687, 3, 694, 347, 0,
    4681, 4682, 5, 363, 0, 0, 4682, 4687, 5, 294, 0, 0, 4683, 4684, 7, 48, 0, 0, 4684,
    4685, 5, 348, 0, 0, 4685, 4687, 3, 642, 321, 0, 4686, 4679, 1, 0, 0, 0, 4686, 4681,
    1, 0, 0, 0, 4686, 4683, 1, 0, 0, 0, 4687, 4718, 1, 0, 0, 0, 4688, 4689, 5, 101, 0, 0,
    4689, 4690, 5, 246, 0, 0, 4690, 4691, 3, 642, 321, 0, 4691, 4692, 5, 395, 0, 0, 4692,
    4693, 3, 686, 343, 0, 4693, 4718, 1, 0, 0, 0, 4694, 4695, 7, 49, 0, 0, 4695, 4696,
    3, 656, 328, 0, 4696, 4697, 5, 200, 0, 0, 4697, 4698, 5, 426, 0, 0, 4698, 4699, 5,
    154, 0, 0, 4699, 4703, 3, 642, 321, 0, 4700, 4701, 5, 341, 0, 0, 4701, 4704, 3, 686,
    343, 0, 4702, 4704, 5, 362, 0, 0, 4703, 4700, 1, 0, 0, 0, 4703, 4702, 1, 0, 0, 0, 4704,
    4708, 1, 0, 0, 0, 4705, 4706, 5, 387, 0, 0, 4706, 4707, 5, 229, 0, 0, 4707, 4709, 5,
    431, 0, 0, 4708, 4705, 1, 0, 0, 0, 4708, 4709, 1, 0, 0, 0, 4709, 4718, 1, 0, 0, 0, 4710,
    4711, 5, 101, 0, 0, 4711, 4712, 3, 656, 328, 0, 4712, 4713, 5, 200, 0, 0, 4713, 4714,
    5, 426, 0, 0, 4714, 4715, 5, 154, 0, 0, 4715, 4716, 3, 642, 321, 0, 4716, 4718, 1,
    0, 0, 0, 4717, 4552, 1, 0, 0, 0, 4717, 4569, 1, 0, 0, 0, 4717, 4599, 1, 0, 0, 0, 4717,
    4608, 1, 0, 0, 0, 4717, 4613, 1, 0, 0, 0, 4717, 4627, 1, 0, 0, 0, 4717, 4637, 1, 0, 0,
    0, 4717, 4660, 1, 0, 0, 0, 4717, 4666, 1, 0, 0, 0, 4717, 4674, 1, 0, 0, 0, 4717, 4688,
    1, 0, 0, 0, 4717, 4694, 1, 0, 0, 0, 4717, 4710, 1, 0, 0, 0, 4718, 655, 1, 0, 0, 0, 4719,
    4720, 7, 50, 0, 0, 4720, 657, 1, 0, 0, 0, 4721, 4722, 5, 259, 0, 0, 4722, 4723, 5, 405,
    0, 0, 4723, 4729, 5, 431, 0, 0, 4724, 4725, 5, 83, 0, 0, 4725, 4726, 5, 246, 0, 0, 4726,
    4727, 5, 405, 0, 0, 4727, 4729, 3, 686, 343, 0, 4728, 4721, 1, 0, 0, 0, 4728, 4724,
    1, 0, 0, 0, 4729, 659, 1, 0, 0, 0, 4730, 4735, 3, 658, 329, 0, 4731, 4732, 5, 397, 0,
    0, 4732, 4734, 3, 658, 329, 0, 4733, 4731, 1, 0, 0, 0, 4734, 4737, 1, 0, 0, 0, 4735,
    4733, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 661, 1, 0, 0, 0, 4737, 4735, 1, 0, 0,
    0, 4738, 4742, 5, 259, 0, 0, 4739, 4740, 5, 83, 0, 0, 4740, 4742, 5, 246, 0, 0, 4741,
    4738, 1, 0, 0, 0, 4741, 4739, 1, 0, 0, 0, 4742, 663, 1, 0, 0, 0, 4743, 4746, 5, 2, 0,
    0, 4744, 4745, 5, 387, 0, 0, 4745, 4747, 5, 278, 0, 0, 4746, 4744, 1, 0, 0, 0, 4746,
    4747, 1, 0, 0, 0, 4747, 665, 1, 0, 0, 0, 4748, 4749, 7, 51, 0, 0, 4749, 667, 1, 0, 0,
    0, 4750, 4751, 7, 52, 0, 0, 4751, 669, 1, 0, 0, 0, 4752, 4753, 7, 53, 0, 0, 4753, 671,
    1, 0, 0, 0, 4754, 4755, 7, 54, 0, 0, 4755, 673, 1, 0, 0, 0, 4756, 4757, 7, 55, 0, 0, 4757,
    675, 1, 0, 0, 0, 4758, 4759, 7, 56, 0, 0, 4759, 677, 1, 0, 0, 0, 4760, 4761, 7, 57, 0,
    0, 4761, 679, 1, 0, 0, 0, 4762, 4763, 7, 58, 0, 0, 4763, 681, 1, 0, 0, 0, 4764, 4765,
    7, 59, 0, 0, 4765, 683, 1, 0, 0, 0, 4766, 4767, 7, 60, 0, 0, 4767, 685, 1, 0, 0, 0, 4768,
    4773, 3, 642, 321, 0, 4769, 4770, 5, 395, 0, 0, 4770, 4772, 3, 642, 321, 0, 4771,
    4769, 1, 0, 0, 0, 4772, 4775, 1, 0, 0, 0, 4773, 4771, 1, 0, 0, 0, 4773, 4774, 1, 0, 0,
    0, 4774, 687, 1, 0, 0, 0, 4775, 4773, 1, 0, 0, 0, 4776, 4777, 3, 642, 321, 0, 4777,
    4778, 5, 411, 0, 0, 4778, 4779, 7, 27, 0, 0, 4779, 689, 1, 0, 0, 0, 4780, 4785, 5, 176,
    0, 0, 4781, 4782, 5, 211, 0, 0, 4782, 4783, 5, 341, 0, 0, 4783, 4785, 3, 686, 343,
    0, 4784, 4780, 1, 0, 0, 0, 4784, 4781, 1, 0, 0, 0, 4785, 691, 1, 0, 0, 0, 4786, 4787,
    5, 8, 0, 0, 4787, 4788, 5, 405, 0, 0, 4788, 4799, 5, 431, 0, 0, 4789, 4790, 5, 259,
    0, 0, 4790, 4791, 5, 405, 0, 0, 4791, 4799, 5, 431, 0, 0, 4792, 4793, 5, 294, 0, 0,
    4793, 4794, 5, 405, 0, 0, 4794, 4799, 5, 426, 0, 0, 4795, 4796, 5, 240, 0, 0, 4796,
    4797, 5, 405, 0, 0, 4797, 4799, 3, 686, 343, 0, 4798, 4786, 1, 0, 0, 0, 4798, 4789,
    1, 0, 0, 0, 4798, 4792, 1, 0, 0, 0, 4798, 4795, 1, 0, 0, 0, 4799, 693, 1, 0, 0, 0, 4800,
    4805, 3, 692, 346, 0, 4801, 4802, 5, 397, 0, 0, 4802, 4804, 3, 692, 346, 0, 4803,
    4801, 1, 0, 0, 0, 4804, 4807, 1, 0, 0, 0, 4805, 4803, 1, 0, 0, 0, 4805, 4806, 1, 0, 0,
    0, 4806, 695, 1, 0, 0, 0, 4807, 4805, 1, 0, 0, 0, 621, 699, 706, 709, 715, 721, 728,
    738, 741, 745, 760, 767, 773, 778, 783, 786, 810, 817, 820, 825, 830, 836, 840,
    853, 857, 861, 866, 873, 877, 882, 889, 893, 898, 946, 953, 958, 981, 985, 989,
    992, 996, 1001, 1007, 1011, 1017, 1019, 1030, 1034, 1041, 1049, 1052, 1057, 1061,
    1064, 1074, 1082, 1086, 1089, 1093, 1097, 1100, 1105, 1111, 1116, 1121, 1125,
    1136, 1138, 1142, 1152, 1156, 1162, 1165, 1172, 1177, 1185, 1190, 1194, 1202,
    1207, 1213, 1219, 1222, 1225, 1228, 1237, 1245, 1250, 1258, 1265, 1268, 1271,
    1273, 1284, 1286, 1289, 1292, 1295, 1298, 1301, 1303, 1315, 1321, 1329, 1331,
    1341, 1374, 1379, 1383, 1387, 1394, 1401, 1407, 1411, 1414, 1421, 1444, 1449,
    1453, 1461, 1470, 1477, 1483, 1490, 1493, 1499, 1506, 1514, 1523, 1532, 1539,
    1559, 1566, 1568, 1575, 1585, 1593, 1597, 1601, 1614, 1623, 1639, 1643, 1648,
    1653, 1656, 1659, 1662, 1665, 1668, 1673, 1682, 1686, 1693, 1696, 1699, 1702,
    1714, 1720, 1746, 1754, 1758, 1761, 1764, 1767, 1770, 1773, 1776, 1779, 1788,
    1798, 1801, 1821, 1827, 1833, 1836, 1838, 1845, 1852, 1865, 1870, 1879, 1887,
    1895, 1908, 1921, 1937, 1941, 1956, 1962, 1965, 1968, 1971, 1974, 1978, 1993,
    1996, 2007, 2021, 2055, 2063, 2068, 2076, 2081, 2086, 2093, 2101, 2109, 2117,
    2122, 2134, 2138, 2146, 2155, 2158, 2162, 2169, 2175, 2179, 2185, 2189, 2201,
    2210, 2221, 2225, 2232, 2244, 2254, 2257, 2264, 2270, 2274, 2277, 2280, 2286,
    2290, 2294, 2299, 2303, 2307, 2311, 2319, 2323, 2327, 2331, 2335, 2343, 2347,
    2351, 2359, 2364, 2369, 2373, 2377, 2384, 2393, 2401, 2413, 2431, 2434, 2440,
    2466, 2469, 2475, 2483, 2491, 2504, 2511, 2514, 2517, 2520, 2523, 2526, 2529,
    2532, 2535, 2538, 2541, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570,
    2573, 2576, 2578, 2584, 2588, 2591, 2594, 2597, 2600, 2603, 2610, 2614, 2617,
    2620, 2623, 2626, 2629, 2636, 2639, 2647, 2651, 2658, 2660, 2663, 2668, 2671,
    2675, 2680, 2686, 2694, 2702, 2712, 2715, 2719, 2723, 2728, 2735, 2739, 2741,
    2745, 2752, 2757, 2770, 2778, 2797, 2807, 2820, 2830, 2834, 2838, 2844, 2851,
    2858, 2867, 2874, 2894, 2897, 2911, 2926, 2930, 2950, 2962, 2968, 2971, 2974,
    2980, 2986, 2993, 3001, 3007, 3011, 3016, 3019, 3023, 3030, 3035, 3040, 3043,
    3045, 3053, 3061, 3065, 3069, 3073, 3090, 3107, 3114, 3123, 3128, 3131, 3134,
    3138, 3153, 3167, 3170, 3181, 3185, 3188, 3191, 3195, 3200, 3203, 3206, 3209,
    3212, 3215, 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3245, 3248, 3252,
    3254, 3260, 3265, 3268, 3271, 3274, 3277, 3283, 3286, 3289, 3292, 3295, 3298,
    3301, 3304, 3307, 3310, 3314, 3316, 3318, 3323, 3328, 3332, 3336, 3341, 3346,
    3355, 3365, 3373, 3385, 3388, 3394, 3401, 3408, 3415, 3422, 3431, 3435, 3442,
    3447, 3451, 3455, 3458, 3461, 3472, 3476, 3478, 3481, 3494, 3497, 3500, 3512,
    3515, 3522, 3531, 3536, 3538, 3540, 3557, 3560, 3568, 3571, 3575, 3578, 3581,
    3584, 3587, 3599, 3607, 3614, 3617, 3624, 3627, 3632, 3639, 3647, 3653, 3658,
    3662, 3667, 3674, 3688, 3691, 3695, 3706, 3716, 3719, 3726, 3735, 3738, 3744,
    3747, 3754, 3759, 3762, 3775, 3781, 3783, 3791, 3794, 3804, 3809, 3811, 3823,
    3829, 3831, 3838, 3845, 3859, 3865, 3868, 3871, 3874, 3883, 3890, 3896, 3905,
    3909, 3917, 3927, 3937, 3942, 3946, 3952, 3957, 3967, 3971, 3974, 3979, 3982,
    3986, 3991, 4002, 4004, 4013, 4036, 4046, 4049, 4056, 4059, 4069, 4076, 4079,
    4081, 4092, 4102, 4104, 4113, 4118, 4127, 4140, 4144, 4156, 4160, 4169, 4188,
    4206, 4218, 4233, 4237, 4253, 4260, 4274, 4279, 4289, 4291, 4299, 4307, 4315,
    4323, 4331, 4339, 4350, 4354, 4362, 4378, 4382, 4387, 4400, 4409, 4411, 4420,
    4425, 4431, 4438, 4443, 4452, 4460, 4468, 4476, 4486, 4491, 4550, 4556, 4565,
    4567, 4583, 4591, 4595, 4597, 4603, 4608, 4625, 4651, 4656, 4658, 4686, 4703,
    4708, 4717, 4728, 4735, 4741, 4746, 4773, 4784, 4798, 4805
];
HiveSqlParser.vocabulary = new antlr.Vocabulary(HiveSqlParser.literalNames, HiveSqlParser.symbolicNames, []);
HiveSqlParser.decisionsToDFA = HiveSqlParser._ATN.decisionToState.map((ds, index) => new antlr.DFA(ds, index));
export class ProgramContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    EOF() {
        return this.getToken(HiveSqlParser.EOF, 0);
    }
    statement(i) {
        if (i === undefined) {
            return this.getRuleContexts(StatementContext);
        }
        return this.getRuleContext(i, StatementContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_program;
    }
    enterRule(listener) {
        if (listener.enterProgram) {
            listener.enterProgram(this);
        }
    }
    exitRule(listener) {
        if (listener.exitProgram) {
            listener.exitProgram(this);
        }
    }
    accept(visitor) {
        if (visitor.visitProgram) {
            return visitor.visitProgram(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class StatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    explainStatement() {
        return this.getRuleContext(0, ExplainStatementContext);
    }
    execStatement() {
        return this.getRuleContext(0, ExecStatementContext);
    }
    SEMICOLON() {
        return this.getToken(HiveSqlParser.SEMICOLON, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_statement;
    }
    enterRule(listener) {
        if (listener.enterStatement) {
            listener.enterStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitStatement) {
            listener.exitStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitStatement) {
            return visitor.visitStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExplainStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_EXPLAIN() {
        return this.getToken(HiveSqlParser.KW_EXPLAIN, 0);
    }
    execStatement() {
        return this.getRuleContext(0, ExecStatementContext);
    }
    KW_REWRITE() {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0);
    }
    queryStatementExpression() {
        return this.getRuleContext(0, QueryStatementExpressionContext);
    }
    explainOption(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExplainOptionContext);
        }
        return this.getRuleContext(i, ExplainOptionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_explainStatement;
    }
    enterRule(listener) {
        if (listener.enterExplainStatement) {
            listener.enterExplainStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExplainStatement) {
            listener.exitExplainStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExplainStatement) {
            return visitor.visitExplainStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExplainOptionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_EXTENDED() {
        return this.getToken(HiveSqlParser.KW_EXTENDED, 0);
    }
    KW_FORMATTED() {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    KW_DEPENDENCY() {
        return this.getToken(HiveSqlParser.KW_DEPENDENCY, 0);
    }
    KW_CBO() {
        return this.getToken(HiveSqlParser.KW_CBO, 0);
    }
    KW_COST() {
        return this.getToken(HiveSqlParser.KW_COST, 0);
    }
    KW_JOINCOST() {
        return this.getToken(HiveSqlParser.KW_JOINCOST, 0);
    }
    KW_LOGICAL() {
        return this.getToken(HiveSqlParser.KW_LOGICAL, 0);
    }
    KW_AUTHORIZATION() {
        return this.getToken(HiveSqlParser.KW_AUTHORIZATION, 0);
    }
    KW_ANALYZE() {
        return this.getToken(HiveSqlParser.KW_ANALYZE, 0);
    }
    KW_REOPTIMIZATION() {
        return this.getToken(HiveSqlParser.KW_REOPTIMIZATION, 0);
    }
    KW_LOCKS() {
        return this.getToken(HiveSqlParser.KW_LOCKS, 0);
    }
    KW_AST() {
        return this.getToken(HiveSqlParser.KW_AST, 0);
    }
    KW_VECTORIZATION() {
        return this.getToken(HiveSqlParser.KW_VECTORIZATION, 0);
    }
    KW_ONLY() {
        return this.getToken(HiveSqlParser.KW_ONLY, 0);
    }
    vectorizationDetail() {
        return this.getRuleContext(0, VectorizationDetailContext);
    }
    KW_DEBUG() {
        return this.getToken(HiveSqlParser.KW_DEBUG, 0);
    }
    KW_DDL() {
        return this.getToken(HiveSqlParser.KW_DDL, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_explainOption;
    }
    enterRule(listener) {
        if (listener.enterExplainOption) {
            listener.enterExplainOption(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExplainOption) {
            listener.exitExplainOption(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExplainOption) {
            return visitor.visitExplainOption(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class VectorizationDetailContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SUMMARY() {
        return this.getToken(HiveSqlParser.KW_SUMMARY, 0);
    }
    KW_OPERATOR() {
        return this.getToken(HiveSqlParser.KW_OPERATOR, 0);
    }
    KW_EXPRESSION() {
        return this.getToken(HiveSqlParser.KW_EXPRESSION, 0);
    }
    KW_DETAIL() {
        return this.getToken(HiveSqlParser.KW_DETAIL, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_vectorizationDetail;
    }
    enterRule(listener) {
        if (listener.enterVectorizationDetail) {
            listener.enterVectorizationDetail(this);
        }
    }
    exitRule(listener) {
        if (listener.exitVectorizationDetail) {
            listener.exitVectorizationDetail(this);
        }
    }
    accept(visitor) {
        if (visitor.visitVectorizationDetail) {
            return visitor.visitVectorizationDetail(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExecStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    queryStatementExpression() {
        return this.getRuleContext(0, QueryStatementExpressionContext);
    }
    loadStatement() {
        return this.getRuleContext(0, LoadStatementContext);
    }
    exportStatement() {
        return this.getRuleContext(0, ExportStatementContext);
    }
    importStatement() {
        return this.getRuleContext(0, ImportStatementContext);
    }
    replDumpStatement() {
        return this.getRuleContext(0, ReplDumpStatementContext);
    }
    replLoadStatement() {
        return this.getRuleContext(0, ReplLoadStatementContext);
    }
    KW_REPL() {
        return this.getToken(HiveSqlParser.KW_REPL, 0);
    }
    KW_STATUS() {
        return this.getToken(HiveSqlParser.KW_STATUS, 0);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    ddlStatement() {
        return this.getRuleContext(0, DdlStatementContext);
    }
    KW_DELETE() {
        return this.getToken(HiveSqlParser.KW_DELETE, 0);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    whereClause() {
        return this.getRuleContext(0, WhereClauseContext);
    }
    KW_UPDATE() {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    setColumnsClause() {
        return this.getRuleContext(0, SetColumnsClauseContext);
    }
    sqlTransactionStatement() {
        return this.getRuleContext(0, SqlTransactionStatementContext);
    }
    KW_MERGE() {
        return this.getToken(HiveSqlParser.KW_MERGE, 0);
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    KW_USING() {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    joinSourcePart() {
        return this.getRuleContext(0, JoinSourcePartContext);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    whenClauses() {
        return this.getRuleContext(0, WhenClausesContext);
    }
    QUERY_HINT() {
        return this.getToken(HiveSqlParser.QUERY_HINT, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    KW_PREPARE() {
        return this.getToken(HiveSqlParser.KW_PREPARE, 0);
    }
    KW_EXECUTE() {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0);
    }
    constantList() {
        return this.getRuleContext(0, ConstantListContext);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    configPropertiesItem(i) {
        if (i === undefined) {
            return this.getRuleContexts(ConfigPropertiesItemContext);
        }
        return this.getRuleContext(i, ConfigPropertiesItemContext);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    COLON(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COLON);
        }
        else {
            return this.getToken(HiveSqlParser.COLON, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_execStatement;
    }
    enterRule(listener) {
        if (listener.enterExecStatement) {
            listener.enterExecStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExecStatement) {
            listener.exitExecStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExecStatement) {
            return visitor.visitExecStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LoadStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LOAD() {
        return this.getToken(HiveSqlParser.KW_LOAD, 0);
    }
    KW_DATA() {
        return this.getToken(HiveSqlParser.KW_DATA, 0);
    }
    KW_INPATH() {
        return this.getToken(HiveSqlParser.KW_INPATH, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    KW_LOCAL() {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    KW_OVERWRITE() {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    inputFileFormat() {
        return this.getRuleContext(0, InputFileFormatContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_loadStatement;
    }
    enterRule(listener) {
        if (listener.enterLoadStatement) {
            listener.enterLoadStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLoadStatement) {
            listener.exitLoadStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLoadStatement) {
            return visitor.visitLoadStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ReplicationClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FOR() {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    KW_REPLICATION() {
        return this.getToken(HiveSqlParser.KW_REPLICATION, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_METADATA() {
        return this.getToken(HiveSqlParser.KW_METADATA, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_replicationClause;
    }
    enterRule(listener) {
        if (listener.enterReplicationClause) {
            listener.enterReplicationClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitReplicationClause) {
            listener.exitReplicationClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitReplicationClause) {
            return visitor.visitReplicationClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExportStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_EXPORT() {
        return this.getToken(HiveSqlParser.KW_EXPORT, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    replicationClause() {
        return this.getRuleContext(0, ReplicationClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_exportStatement;
    }
    enterRule(listener) {
        if (listener.enterExportStatement) {
            listener.enterExportStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExportStatement) {
            listener.exitExportStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExportStatement) {
            return visitor.visitExportStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ImportStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_IMPORT() {
        return this.getToken(HiveSqlParser.KW_IMPORT, 0);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    locationPath() {
        return this.getRuleContext(0, LocationPathContext);
    }
    KW_EXTERNAL() {
        return this.getToken(HiveSqlParser.KW_EXTERNAL, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_importStatement;
    }
    enterRule(listener) {
        if (listener.enterImportStatement) {
            listener.enterImportStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitImportStatement) {
            listener.exitImportStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitImportStatement) {
            return visitor.visitImportStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ReplDumpStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_REPL() {
        return this.getToken(HiveSqlParser.KW_REPL, 0);
    }
    KW_DUMP() {
        return this.getToken(HiveSqlParser.KW_DUMP, 0);
    }
    replDbPolicy(i) {
        if (i === undefined) {
            return this.getRuleContexts(ReplDbPolicyContext);
        }
        return this.getRuleContext(i, ReplDbPolicyContext);
    }
    KW_REPLACE() {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_replDumpStatement;
    }
    enterRule(listener) {
        if (listener.enterReplDumpStatement) {
            listener.enterReplDumpStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitReplDumpStatement) {
            listener.exitReplDumpStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitReplDumpStatement) {
            return visitor.visitReplDumpStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ReplDbPolicyContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    DOT() {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    replTableLevelPolicy() {
        return this.getRuleContext(0, ReplTableLevelPolicyContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_replDbPolicy;
    }
    enterRule(listener) {
        if (listener.enterReplDbPolicy) {
            listener.enterReplDbPolicy(this);
        }
    }
    exitRule(listener) {
        if (listener.exitReplDbPolicy) {
            listener.exitReplDbPolicy(this);
        }
    }
    accept(visitor) {
        if (visitor.visitReplDbPolicy) {
            return visitor.visitReplDbPolicy(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ReplLoadStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_REPL() {
        return this.getToken(HiveSqlParser.KW_REPL, 0);
    }
    KW_LOAD() {
        return this.getToken(HiveSqlParser.KW_LOAD, 0);
    }
    replDbPolicy() {
        return this.getRuleContext(0, ReplDbPolicyContext);
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_replLoadStatement;
    }
    enterRule(listener) {
        if (listener.enterReplLoadStatement) {
            listener.enterReplLoadStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitReplLoadStatement) {
            listener.exitReplLoadStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitReplLoadStatement) {
            return visitor.visitReplLoadStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ReplTableLevelPolicyContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    DOT() {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_replTableLevelPolicy;
    }
    enterRule(listener) {
        if (listener.enterReplTableLevelPolicy) {
            listener.enterReplTableLevelPolicy(this);
        }
    }
    exitRule(listener) {
        if (listener.exitReplTableLevelPolicy) {
            listener.exitReplTableLevelPolicy(this);
        }
    }
    accept(visitor) {
        if (visitor.visitReplTableLevelPolicy) {
            return visitor.visitReplTableLevelPolicy(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DdlStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    createDatabaseStatement() {
        return this.getRuleContext(0, CreateDatabaseStatementContext);
    }
    switchDatabaseStatement() {
        return this.getRuleContext(0, SwitchDatabaseStatementContext);
    }
    dropDatabaseStatement() {
        return this.getRuleContext(0, DropDatabaseStatementContext);
    }
    createTableStatement() {
        return this.getRuleContext(0, CreateTableStatementContext);
    }
    dropTableStatement() {
        return this.getRuleContext(0, DropTableStatementContext);
    }
    truncateTableStatement() {
        return this.getRuleContext(0, TruncateTableStatementContext);
    }
    alterStatement() {
        return this.getRuleContext(0, AlterStatementContext);
    }
    descStatement() {
        return this.getRuleContext(0, DescStatementContext);
    }
    showStatement() {
        return this.getRuleContext(0, ShowStatementContext);
    }
    metastoreCheck() {
        return this.getRuleContext(0, MetastoreCheckContext);
    }
    createViewStatement() {
        return this.getRuleContext(0, CreateViewStatementContext);
    }
    createMaterializedViewStatement() {
        return this.getRuleContext(0, CreateMaterializedViewStatementContext);
    }
    createScheduledQueryStatement() {
        return this.getRuleContext(0, CreateScheduledQueryStatementContext);
    }
    alterScheduledQueryStatement() {
        return this.getRuleContext(0, AlterScheduledQueryStatementContext);
    }
    dropScheduledQueryStatement() {
        return this.getRuleContext(0, DropScheduledQueryStatementContext);
    }
    dropViewStatement() {
        return this.getRuleContext(0, DropViewStatementContext);
    }
    dropMaterializedViewStatement() {
        return this.getRuleContext(0, DropMaterializedViewStatementContext);
    }
    createFunctionStatement() {
        return this.getRuleContext(0, CreateFunctionStatementContext);
    }
    createMacroStatement() {
        return this.getRuleContext(0, CreateMacroStatementContext);
    }
    dropFunctionStatement() {
        return this.getRuleContext(0, DropFunctionStatementContext);
    }
    reloadFunctionsStatement() {
        return this.getRuleContext(0, ReloadFunctionsStatementContext);
    }
    dropMacroStatement() {
        return this.getRuleContext(0, DropMacroStatementContext);
    }
    createIndexStatement() {
        return this.getRuleContext(0, CreateIndexStatementContext);
    }
    dropIndexStatement() {
        return this.getRuleContext(0, DropIndexStatementContext);
    }
    analyzeStatement() {
        return this.getRuleContext(0, AnalyzeStatementContext);
    }
    lockStatement() {
        return this.getRuleContext(0, LockStatementContext);
    }
    unlockStatement() {
        return this.getRuleContext(0, UnlockStatementContext);
    }
    lockDatabase() {
        return this.getRuleContext(0, LockDatabaseContext);
    }
    unlockDatabase() {
        return this.getRuleContext(0, UnlockDatabaseContext);
    }
    createRoleStatement() {
        return this.getRuleContext(0, CreateRoleStatementContext);
    }
    dropRoleStatement() {
        return this.getRuleContext(0, DropRoleStatementContext);
    }
    grantPrivileges() {
        return this.getRuleContext(0, GrantPrivilegesContext);
    }
    revokePrivileges() {
        return this.getRuleContext(0, RevokePrivilegesContext);
    }
    showGrants() {
        return this.getRuleContext(0, ShowGrantsContext);
    }
    showRoleGrants() {
        return this.getRuleContext(0, ShowRoleGrantsContext);
    }
    showRolePrincipals() {
        return this.getRuleContext(0, ShowRolePrincipalsContext);
    }
    showRoles() {
        return this.getRuleContext(0, ShowRolesContext);
    }
    grantRole() {
        return this.getRuleContext(0, GrantRoleContext);
    }
    revokeRole() {
        return this.getRuleContext(0, RevokeRoleContext);
    }
    setRole() {
        return this.getRuleContext(0, SetRoleContext);
    }
    showCurrentRole() {
        return this.getRuleContext(0, ShowCurrentRoleContext);
    }
    KW_ABORT() {
        return this.getToken(HiveSqlParser.KW_ABORT, 0);
    }
    KW_TRANSACTIONS() {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0);
    }
    KW_COMPACTIONS() {
        return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0);
    }
    Number(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.Number);
        }
        else {
            return this.getToken(HiveSqlParser.Number, i);
        }
    }
    KW_KILL() {
        return this.getToken(HiveSqlParser.KW_KILL, 0);
    }
    KW_QUERY() {
        return this.getToken(HiveSqlParser.KW_QUERY, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    resourcePlanDdlStatements() {
        return this.getRuleContext(0, ResourcePlanDdlStatementsContext);
    }
    createDataConnectorStatement() {
        return this.getRuleContext(0, CreateDataConnectorStatementContext);
    }
    dropDataConnectorStatement() {
        return this.getRuleContext(0, DropDataConnectorStatementContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_ddlStatement;
    }
    enterRule(listener) {
        if (listener.enterDdlStatement) {
            listener.enterDdlStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDdlStatement) {
            listener.exitDdlStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDdlStatement) {
            return visitor.visitDdlStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class IfExistsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_IF() {
        return this.getToken(HiveSqlParser.KW_IF, 0);
    }
    KW_EXISTS() {
        return this.getToken(HiveSqlParser.KW_EXISTS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_ifExists;
    }
    enterRule(listener) {
        if (listener.enterIfExists) {
            listener.enterIfExists(this);
        }
    }
    exitRule(listener) {
        if (listener.exitIfExists) {
            listener.exitIfExists(this);
        }
    }
    accept(visitor) {
        if (visitor.visitIfExists) {
            return visitor.visitIfExists(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class IfNotExistsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_IF() {
        return this.getToken(HiveSqlParser.KW_IF, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_EXISTS() {
        return this.getToken(HiveSqlParser.KW_EXISTS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_ifNotExists;
    }
    enterRule(listener) {
        if (listener.enterIfNotExists) {
            listener.enterIfNotExists(this);
        }
    }
    exitRule(listener) {
        if (listener.exitIfNotExists) {
            listener.exitIfNotExists(this);
        }
    }
    accept(visitor) {
        if (visitor.visitIfNotExists) {
            return visitor.visitIfNotExists(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RestrictOrCascadeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_RESTRICT() {
        return this.getToken(HiveSqlParser.KW_RESTRICT, 0);
    }
    KW_CASCADE() {
        return this.getToken(HiveSqlParser.KW_CASCADE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_restrictOrCascade;
    }
    enterRule(listener) {
        if (listener.enterRestrictOrCascade) {
            listener.enterRestrictOrCascade(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRestrictOrCascade) {
            listener.exitRestrictOrCascade(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRestrictOrCascade) {
            return visitor.visitRestrictOrCascade(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RewriteEnabledContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    enable() {
        return this.getRuleContext(0, EnableContext);
    }
    KW_REWRITE() {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rewriteEnabled;
    }
    enterRule(listener) {
        if (listener.enterRewriteEnabled) {
            listener.enterRewriteEnabled(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRewriteEnabled) {
            listener.exitRewriteEnabled(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRewriteEnabled) {
            return visitor.visitRewriteEnabled(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RewriteDisabledContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    disable() {
        return this.getRuleContext(0, DisableContext);
    }
    KW_REWRITE() {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rewriteDisabled;
    }
    enterRule(listener) {
        if (listener.enterRewriteDisabled) {
            listener.enterRewriteDisabled(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRewriteDisabled) {
            listener.exitRewriteDisabled(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRewriteDisabled) {
            return visitor.visitRewriteDisabled(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class StoredAsDirsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_STORED() {
        return this.getToken(HiveSqlParser.KW_STORED, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    KW_DIRECTORIES() {
        return this.getToken(HiveSqlParser.KW_DIRECTORIES, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_storedAsDirs;
    }
    enterRule(listener) {
        if (listener.enterStoredAsDirs) {
            listener.enterStoredAsDirs(this);
        }
    }
    exitRule(listener) {
        if (listener.exitStoredAsDirs) {
            listener.exitStoredAsDirs(this);
        }
    }
    accept(visitor) {
        if (visitor.visitStoredAsDirs) {
            return visitor.visitStoredAsDirs(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateDatabaseStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    dbSchemaNameCreate() {
        return this.getRuleContext(0, DbSchemaNameCreateContext);
    }
    KW_REMOTE() {
        return this.getToken(HiveSqlParser.KW_REMOTE, 0);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    databaseComment() {
        return this.getRuleContext(0, DatabaseCommentContext);
    }
    locationPath() {
        return this.getRuleContext(0, LocationPathContext);
    }
    KW_MANAGEDLOCATION() {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_DBPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    dbConnectorName() {
        return this.getRuleContext(0, DbConnectorNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createDatabaseStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateDatabaseStatement) {
            listener.enterCreateDatabaseStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateDatabaseStatement) {
            listener.exitCreateDatabaseStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateDatabaseStatement) {
            return visitor.visitCreateDatabaseStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DbConnectorNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_USING() {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dbConnectorName;
    }
    enterRule(listener) {
        if (listener.enterDbConnectorName) {
            listener.enterDbConnectorName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDbConnectorName) {
            listener.exitDbConnectorName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDbConnectorName) {
            return visitor.visitDbConnectorName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SwitchDatabaseStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_USE() {
        return this.getToken(HiveSqlParser.KW_USE, 0);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_switchDatabaseStatement;
    }
    enterRule(listener) {
        if (listener.enterSwitchDatabaseStatement) {
            listener.enterSwitchDatabaseStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSwitchDatabaseStatement) {
            listener.exitSwitchDatabaseStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSwitchDatabaseStatement) {
            return visitor.visitSwitchDatabaseStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropDatabaseStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    restrictOrCascade() {
        return this.getRuleContext(0, RestrictOrCascadeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropDatabaseStatement;
    }
    enterRule(listener) {
        if (listener.enterDropDatabaseStatement) {
            listener.enterDropDatabaseStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropDatabaseStatement) {
            listener.exitDropDatabaseStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropDatabaseStatement) {
            return visitor.visitDropDatabaseStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DatabaseCommentContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_databaseComment;
    }
    enterRule(listener) {
        if (listener.enterDatabaseComment) {
            listener.enterDatabaseComment(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDatabaseComment) {
            listener.exitDatabaseComment(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDatabaseComment) {
            return visitor.visitDatabaseComment(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TruncateTableStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_TRUNCATE() {
        return this.getToken(HiveSqlParser.KW_TRUNCATE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    KW_COLUMNS() {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_FORCE() {
        return this.getToken(HiveSqlParser.KW_FORCE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_truncateTableStatement;
    }
    enterRule(listener) {
        if (listener.enterTruncateTableStatement) {
            listener.enterTruncateTableStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTruncateTableStatement) {
            listener.exitTruncateTableStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTruncateTableStatement) {
            return visitor.visitTruncateTableStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropTableStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    KW_PURGE() {
        return this.getToken(HiveSqlParser.KW_PURGE, 0);
    }
    replicationClause() {
        return this.getRuleContext(0, ReplicationClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropTableStatement;
    }
    enterRule(listener) {
        if (listener.enterDropTableStatement) {
            listener.enterDropTableStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropTableStatement) {
            listener.exitDropTableStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropTableStatement) {
            return visitor.visitDropTableStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class InputFileFormatContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_INPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    KW_SERDE() {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_inputFileFormat;
    }
    enterRule(listener) {
        if (listener.enterInputFileFormat) {
            listener.enterInputFileFormat(this);
        }
    }
    exitRule(listener) {
        if (listener.exitInputFileFormat) {
            listener.exitInputFileFormat(this);
        }
    }
    accept(visitor) {
        if (visitor.visitInputFileFormat) {
            return visitor.visitInputFileFormat(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TabTypeExprContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    KW_ELEM_TYPE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_ELEM_TYPE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_ELEM_TYPE, i);
        }
    }
    KW_KEY_TYPE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_KEY_TYPE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_KEY_TYPE, i);
        }
    }
    KW_VALUE_TYPE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_VALUE_TYPE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_VALUE_TYPE, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tabTypeExpr;
    }
    enterRule(listener) {
        if (listener.enterTabTypeExpr) {
            listener.enterTabTypeExpr(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTabTypeExpr) {
            listener.exitTabTypeExpr(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTabTypeExpr) {
            return visitor.visitTabTypeExpr(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartTypeExprContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tabTypeExpr() {
        return this.getRuleContext(0, TabTypeExprContext);
    }
    partitionSpec() {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partTypeExpr;
    }
    enterRule(listener) {
        if (listener.enterPartTypeExpr) {
            listener.enterPartTypeExpr(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartTypeExpr) {
            listener.exitPartTypeExpr(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartTypeExpr) {
            return visitor.visitPartTypeExpr(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TabPartColTypeExprContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableOrView() {
        return this.getRuleContext(0, TableOrViewContext);
    }
    partitionSpec() {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    extColumnName() {
        return this.getRuleContext(0, ExtColumnNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tabPartColTypeExpr;
    }
    enterRule(listener) {
        if (listener.enterTabPartColTypeExpr) {
            listener.enterTabPartColTypeExpr(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTabPartColTypeExpr) {
            listener.exitTabPartColTypeExpr(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTabPartColTypeExpr) {
            return visitor.visitTabPartColTypeExpr(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DescStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DESCRIBE() {
        return this.getToken(HiveSqlParser.KW_DESCRIBE, 0);
    }
    KW_DESC() {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    KW_DATACONNECTOR() {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0);
    }
    KW_FUNCTION() {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    functionNameForDDL() {
        return this.getRuleContext(0, FunctionNameForDDLContext);
    }
    tabPartColTypeExpr() {
        return this.getRuleContext(0, TabPartColTypeExprContext);
    }
    KW_EXTENDED() {
        return this.getToken(HiveSqlParser.KW_EXTENDED, 0);
    }
    KW_FORMATTED() {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_descStatement;
    }
    enterRule(listener) {
        if (listener.enterDescStatement) {
            listener.enterDescStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDescStatement) {
            listener.exitDescStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDescStatement) {
            return visitor.visitDescStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AnalyzeStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ANALYZE() {
        return this.getToken(HiveSqlParser.KW_ANALYZE, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    KW_COMPUTE() {
        return this.getToken(HiveSqlParser.KW_COMPUTE, 0);
    }
    KW_STATISTICS() {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0);
    }
    KW_CACHE() {
        return this.getToken(HiveSqlParser.KW_CACHE, 0);
    }
    KW_METADATA() {
        return this.getToken(HiveSqlParser.KW_METADATA, 0);
    }
    KW_FOR() {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    KW_COLUMNS() {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    KW_NOSCAN() {
        return this.getToken(HiveSqlParser.KW_NOSCAN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_analyzeStatement;
    }
    enterRule(listener) {
        if (listener.enterAnalyzeStatement) {
            listener.enterAnalyzeStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAnalyzeStatement) {
            listener.exitAnalyzeStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAnalyzeStatement) {
            return visitor.visitAnalyzeStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class From_inContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    KW_IN() {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_from_in;
    }
    enterRule(listener) {
        if (listener.enterFrom_in) {
            listener.enterFrom_in(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFrom_in) {
            listener.exitFrom_in(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFrom_in) {
            return visitor.visitFrom_in(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Db_schemaContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DATABASE() {
        return this.getToken(HiveSqlParser.KW_DATABASE, 0);
    }
    KW_SCHEMA() {
        return this.getToken(HiveSqlParser.KW_SCHEMA, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_db_schema;
    }
    enterRule(listener) {
        if (listener.enterDb_schema) {
            listener.enterDb_schema(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDb_schema) {
            listener.exitDb_schema(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDb_schema) {
            return visitor.visitDb_schema(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_DATABASES() {
        return this.getToken(HiveSqlParser.KW_DATABASES, 0);
    }
    KW_SCHEMAS() {
        return this.getToken(HiveSqlParser.KW_SCHEMAS, 0);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    showStmtIdentifier() {
        return this.getRuleContext(0, ShowStmtIdentifierContext);
    }
    KW_TABLES() {
        return this.getToken(HiveSqlParser.KW_TABLES, 0);
    }
    from_in(i) {
        if (i === undefined) {
            return this.getRuleContexts(From_inContext);
        }
        return this.getRuleContext(i, From_inContext);
    }
    KW_EXTENDED() {
        return this.getToken(HiveSqlParser.KW_EXTENDED, 0);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    showTablesFilterExpr() {
        return this.getRuleContext(0, ShowTablesFilterExprContext);
    }
    KW_VIEWS() {
        return this.getToken(HiveSqlParser.KW_VIEWS, 0);
    }
    KW_MATERIALIZED() {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    KW_COLUMNS() {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    tableOrView() {
        return this.getRuleContext(0, TableOrViewContext);
    }
    KW_SORTED() {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    KW_FUNCTIONS() {
        return this.getToken(HiveSqlParser.KW_FUNCTIONS, 0);
    }
    functionNameForDDL() {
        return this.getRuleContext(0, FunctionNameForDDLContext);
    }
    KW_PARTITIONS() {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    partitionSpec() {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    whereClause() {
        return this.getRuleContext(0, WhereClauseContext);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    limitClause() {
        return this.getRuleContext(0, LimitClauseContext);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    KW_TBLPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_LOCKS() {
        return this.getToken(HiveSqlParser.KW_LOCKS, 0);
    }
    partTypeExpr() {
        return this.getRuleContext(0, PartTypeExprContext);
    }
    KW_COMPACTIONS() {
        return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0);
    }
    KW_COMPACT_ID() {
        return this.getToken(HiveSqlParser.KW_COMPACT_ID, 0);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    compactionPool() {
        return this.getRuleContext(0, CompactionPoolContext);
    }
    compactionType() {
        return this.getRuleContext(0, CompactionTypeContext);
    }
    compactionStatus() {
        return this.getRuleContext(0, CompactionStatusContext);
    }
    KW_TRANSACTIONS() {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0);
    }
    KW_CONF() {
        return this.getToken(HiveSqlParser.KW_CONF, 0);
    }
    KW_RESOURCE() {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0);
    }
    KW_PLAN() {
        return this.getToken(HiveSqlParser.KW_PLAN, 0);
    }
    KW_PLANS() {
        return this.getToken(HiveSqlParser.KW_PLANS, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_DATACONNECTORS() {
        return this.getToken(HiveSqlParser.KW_DATACONNECTORS, 0);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    KW_INDEX() {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    KW_INDEXES() {
        return this.getToken(HiveSqlParser.KW_INDEXES, 0);
    }
    KW_FORMATTED() {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showStatement;
    }
    enterRule(listener) {
        if (listener.enterShowStatement) {
            listener.enterShowStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowStatement) {
            listener.exitShowStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowStatement) {
            return visitor.visitShowStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowTablesFilterExprContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WHERE() {
        return this.getToken(HiveSqlParser.KW_WHERE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    showStmtIdentifier() {
        return this.getRuleContext(0, ShowStmtIdentifierContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showTablesFilterExpr;
    }
    enterRule(listener) {
        if (listener.enterShowTablesFilterExpr) {
            listener.enterShowTablesFilterExpr(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowTablesFilterExpr) {
            listener.exitShowTablesFilterExpr(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowTablesFilterExpr) {
            return visitor.visitShowTablesFilterExpr(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LockStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LOCK() {
        return this.getToken(HiveSqlParser.KW_LOCK, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    lockMode() {
        return this.getRuleContext(0, LockModeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_lockStatement;
    }
    enterRule(listener) {
        if (listener.enterLockStatement) {
            listener.enterLockStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLockStatement) {
            listener.exitLockStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLockStatement) {
            return visitor.visitLockStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LockDatabaseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LOCK() {
        return this.getToken(HiveSqlParser.KW_LOCK, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    lockMode() {
        return this.getRuleContext(0, LockModeContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_lockDatabase;
    }
    enterRule(listener) {
        if (listener.enterLockDatabase) {
            listener.enterLockDatabase(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLockDatabase) {
            listener.exitLockDatabase(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLockDatabase) {
            return visitor.visitLockDatabase(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LockModeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHARED() {
        return this.getToken(HiveSqlParser.KW_SHARED, 0);
    }
    KW_EXCLUSIVE() {
        return this.getToken(HiveSqlParser.KW_EXCLUSIVE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_lockMode;
    }
    enterRule(listener) {
        if (listener.enterLockMode) {
            listener.enterLockMode(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLockMode) {
            listener.exitLockMode(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLockMode) {
            return visitor.visitLockMode(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class UnlockStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_UNLOCK() {
        return this.getToken(HiveSqlParser.KW_UNLOCK, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_unlockStatement;
    }
    enterRule(listener) {
        if (listener.enterUnlockStatement) {
            listener.enterUnlockStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitUnlockStatement) {
            listener.exitUnlockStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitUnlockStatement) {
            return visitor.visitUnlockStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class UnlockDatabaseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_UNLOCK() {
        return this.getToken(HiveSqlParser.KW_UNLOCK, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_unlockDatabase;
    }
    enterRule(listener) {
        if (listener.enterUnlockDatabase) {
            listener.enterUnlockDatabase(this);
        }
    }
    exitRule(listener) {
        if (listener.exitUnlockDatabase) {
            listener.exitUnlockDatabase(this);
        }
    }
    accept(visitor) {
        if (visitor.visitUnlockDatabase) {
            return visitor.visitUnlockDatabase(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateRoleStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createRoleStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateRoleStatement) {
            listener.enterCreateRoleStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateRoleStatement) {
            listener.exitCreateRoleStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateRoleStatement) {
            return visitor.visitCreateRoleStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropRoleStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropRoleStatement;
    }
    enterRule(listener) {
        if (listener.enterDropRoleStatement) {
            listener.enterDropRoleStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropRoleStatement) {
            listener.exitDropRoleStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropRoleStatement) {
            return visitor.visitDropRoleStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class GrantPrivilegesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_GRANT() {
        return this.getToken(HiveSqlParser.KW_GRANT, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    principalSpecification() {
        return this.getRuleContext(0, PrincipalSpecificationContext);
    }
    privilegeList() {
        return this.getRuleContext(0, PrivilegeListContext);
    }
    privilegeObject() {
        return this.getRuleContext(0, PrivilegeObjectContext);
    }
    withGrantOption() {
        return this.getRuleContext(0, WithGrantOptionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_grantPrivileges;
    }
    enterRule(listener) {
        if (listener.enterGrantPrivileges) {
            listener.enterGrantPrivileges(this);
        }
    }
    exitRule(listener) {
        if (listener.exitGrantPrivileges) {
            listener.exitGrantPrivileges(this);
        }
    }
    accept(visitor) {
        if (visitor.visitGrantPrivileges) {
            return visitor.visitGrantPrivileges(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RevokePrivilegesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_REVOKE() {
        return this.getToken(HiveSqlParser.KW_REVOKE, 0);
    }
    privilegeList() {
        return this.getRuleContext(0, PrivilegeListContext);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    principalSpecification() {
        return this.getRuleContext(0, PrincipalSpecificationContext);
    }
    grantOptionFor() {
        return this.getRuleContext(0, GrantOptionForContext);
    }
    privilegeObject() {
        return this.getRuleContext(0, PrivilegeObjectContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_revokePrivileges;
    }
    enterRule(listener) {
        if (listener.enterRevokePrivileges) {
            listener.enterRevokePrivileges(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRevokePrivileges) {
            listener.exitRevokePrivileges(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRevokePrivileges) {
            return visitor.visitRevokePrivileges(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class GrantRoleContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_GRANT() {
        return this.getToken(HiveSqlParser.KW_GRANT, 0);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    principalSpecification() {
        return this.getRuleContext(0, PrincipalSpecificationContext);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    withAdminOption() {
        return this.getRuleContext(0, WithAdminOptionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_grantRole;
    }
    enterRule(listener) {
        if (listener.enterGrantRole) {
            listener.enterGrantRole(this);
        }
    }
    exitRule(listener) {
        if (listener.exitGrantRole) {
            listener.exitGrantRole(this);
        }
    }
    accept(visitor) {
        if (visitor.visitGrantRole) {
            return visitor.visitGrantRole(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RevokeRoleContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_REVOKE() {
        return this.getToken(HiveSqlParser.KW_REVOKE, 0);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    principalSpecification() {
        return this.getRuleContext(0, PrincipalSpecificationContext);
    }
    adminOptionFor() {
        return this.getRuleContext(0, AdminOptionForContext);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_revokeRole;
    }
    enterRule(listener) {
        if (listener.enterRevokeRole) {
            listener.enterRevokeRole(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRevokeRole) {
            listener.exitRevokeRole(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRevokeRole) {
            return visitor.visitRevokeRole(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowRoleGrantsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    KW_GRANT() {
        return this.getToken(HiveSqlParser.KW_GRANT, 0);
    }
    principalName() {
        return this.getRuleContext(0, PrincipalNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showRoleGrants;
    }
    enterRule(listener) {
        if (listener.enterShowRoleGrants) {
            listener.enterShowRoleGrants(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowRoleGrants) {
            listener.exitShowRoleGrants(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowRoleGrants) {
            return visitor.visitShowRoleGrants(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowRolesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_ROLES() {
        return this.getToken(HiveSqlParser.KW_ROLES, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showRoles;
    }
    enterRule(listener) {
        if (listener.enterShowRoles) {
            listener.enterShowRoles(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowRoles) {
            listener.exitShowRoles(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowRoles) {
            return visitor.visitShowRoles(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowCurrentRoleContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_CURRENT() {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0);
    }
    KW_ROLES() {
        return this.getToken(HiveSqlParser.KW_ROLES, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showCurrentRole;
    }
    enterRule(listener) {
        if (listener.enterShowCurrentRole) {
            listener.enterShowCurrentRole(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowCurrentRole) {
            listener.exitShowCurrentRole(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowCurrentRole) {
            return visitor.visitShowCurrentRole(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SetRoleContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    KW_NONE() {
        return this.getToken(HiveSqlParser.KW_NONE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_setRole;
    }
    enterRule(listener) {
        if (listener.enterSetRole) {
            listener.enterSetRole(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSetRole) {
            listener.exitSetRole(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSetRole) {
            return visitor.visitSetRole(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowGrantsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_GRANT() {
        return this.getToken(HiveSqlParser.KW_GRANT, 0);
    }
    principalName() {
        return this.getRuleContext(0, PrincipalNameContext);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    privilegeIncludeColObject() {
        return this.getRuleContext(0, PrivilegeIncludeColObjectContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showGrants;
    }
    enterRule(listener) {
        if (listener.enterShowGrants) {
            listener.enterShowGrants(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowGrants) {
            listener.exitShowGrants(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowGrants) {
            return visitor.visitShowGrants(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowRolePrincipalsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_PRINCIPALS() {
        return this.getToken(HiveSqlParser.KW_PRINCIPALS, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showRolePrincipals;
    }
    enterRule(listener) {
        if (listener.enterShowRolePrincipals) {
            listener.enterShowRolePrincipals(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowRolePrincipals) {
            listener.exitShowRolePrincipals(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowRolePrincipals) {
            return visitor.visitShowRolePrincipals(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivilegeIncludeColObjectContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    privObjectCols() {
        return this.getRuleContext(0, PrivObjectColsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privilegeIncludeColObject;
    }
    enterRule(listener) {
        if (listener.enterPrivilegeIncludeColObject) {
            listener.enterPrivilegeIncludeColObject(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivilegeIncludeColObject) {
            listener.exitPrivilegeIncludeColObject(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivilegeIncludeColObject) {
            return visitor.visitPrivilegeIncludeColObject(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivilegeObjectContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    privObject() {
        return this.getRuleContext(0, PrivObjectContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privilegeObject;
    }
    enterRule(listener) {
        if (listener.enterPrivilegeObject) {
            listener.enterPrivilegeObject(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivilegeObject) {
            listener.exitPrivilegeObject(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivilegeObject) {
            return visitor.visitPrivilegeObject(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivObjectContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    KW_URI() {
        return this.getToken(HiveSqlParser.KW_URI, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_SERVER() {
        return this.getToken(HiveSqlParser.KW_SERVER, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privObject;
    }
    enterRule(listener) {
        if (listener.enterPrivObject) {
            listener.enterPrivObject(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivObject) {
            listener.exitPrivObject(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivObject) {
            return visitor.visitPrivObject(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivObjectColsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    partitionSpec() {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    KW_URI() {
        return this.getToken(HiveSqlParser.KW_URI, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_SERVER() {
        return this.getToken(HiveSqlParser.KW_SERVER, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privObjectCols;
    }
    enterRule(listener) {
        if (listener.enterPrivObjectCols) {
            listener.enterPrivObjectCols(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivObjectCols) {
            listener.exitPrivObjectCols(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivObjectCols) {
            return visitor.visitPrivObjectCols(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivilegeListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    privilegeDef(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrivilegeDefContext);
        }
        return this.getRuleContext(i, PrivilegeDefContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privilegeList;
    }
    enterRule(listener) {
        if (listener.enterPrivilegeList) {
            listener.enterPrivilegeList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivilegeList) {
            listener.exitPrivilegeList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivilegeList) {
            return visitor.visitPrivilegeList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivilegeDefContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    privilegeType() {
        return this.getRuleContext(0, PrivilegeTypeContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privilegeDef;
    }
    enterRule(listener) {
        if (listener.enterPrivilegeDef) {
            listener.enterPrivilegeDef(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivilegeDef) {
            listener.exitPrivilegeDef(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivilegeDef) {
            return visitor.visitPrivilegeDef(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrivilegeTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    KW_ALTER() {
        return this.getToken(HiveSqlParser.KW_ALTER, 0);
    }
    KW_UPDATE() {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_INDEX() {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    KW_LOCK() {
        return this.getToken(HiveSqlParser.KW_LOCK, 0);
    }
    KW_SELECT() {
        return this.getToken(HiveSqlParser.KW_SELECT, 0);
    }
    KW_SHOW_DATABASE() {
        return this.getToken(HiveSqlParser.KW_SHOW_DATABASE, 0);
    }
    KW_INSERT() {
        return this.getToken(HiveSqlParser.KW_INSERT, 0);
    }
    KW_DELETE() {
        return this.getToken(HiveSqlParser.KW_DELETE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_privilegeType;
    }
    enterRule(listener) {
        if (listener.enterPrivilegeType) {
            listener.enterPrivilegeType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrivilegeType) {
            listener.exitPrivilegeType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrivilegeType) {
            return visitor.visitPrivilegeType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrincipalSpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    principalName(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrincipalNameContext);
        }
        return this.getRuleContext(i, PrincipalNameContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_principalSpecification;
    }
    enterRule(listener) {
        if (listener.enterPrincipalSpecification) {
            listener.enterPrincipalSpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrincipalSpecification) {
            listener.exitPrincipalSpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrincipalSpecification) {
            return visitor.visitPrincipalSpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrincipalNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_USER() {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    principalIdentifier() {
        return this.getRuleContext(0, PrincipalIdentifierContext);
    }
    KW_GROUP() {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_principalName;
    }
    enterRule(listener) {
        if (listener.enterPrincipalName) {
            listener.enterPrincipalName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrincipalName) {
            listener.exitPrincipalName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrincipalName) {
            return visitor.visitPrincipalName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrincipalAlterNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_USER() {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    principalIdentifier() {
        return this.getRuleContext(0, PrincipalIdentifierContext);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_principalAlterName;
    }
    enterRule(listener) {
        if (listener.enterPrincipalAlterName) {
            listener.enterPrincipalAlterName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrincipalAlterName) {
            listener.exitPrincipalAlterName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrincipalAlterName) {
            return visitor.visitPrincipalAlterName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WithGrantOptionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_GRANT() {
        return this.getToken(HiveSqlParser.KW_GRANT, 0);
    }
    KW_OPTION() {
        return this.getToken(HiveSqlParser.KW_OPTION, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_withGrantOption;
    }
    enterRule(listener) {
        if (listener.enterWithGrantOption) {
            listener.enterWithGrantOption(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWithGrantOption) {
            listener.exitWithGrantOption(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWithGrantOption) {
            return visitor.visitWithGrantOption(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class GrantOptionForContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_GRANT() {
        return this.getToken(HiveSqlParser.KW_GRANT, 0);
    }
    KW_OPTION() {
        return this.getToken(HiveSqlParser.KW_OPTION, 0);
    }
    KW_FOR() {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_grantOptionFor;
    }
    enterRule(listener) {
        if (listener.enterGrantOptionFor) {
            listener.enterGrantOptionFor(this);
        }
    }
    exitRule(listener) {
        if (listener.exitGrantOptionFor) {
            listener.exitGrantOptionFor(this);
        }
    }
    accept(visitor) {
        if (visitor.visitGrantOptionFor) {
            return visitor.visitGrantOptionFor(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AdminOptionForContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ADMIN() {
        return this.getToken(HiveSqlParser.KW_ADMIN, 0);
    }
    KW_OPTION() {
        return this.getToken(HiveSqlParser.KW_OPTION, 0);
    }
    KW_FOR() {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_adminOptionFor;
    }
    enterRule(listener) {
        if (listener.enterAdminOptionFor) {
            listener.enterAdminOptionFor(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAdminOptionFor) {
            listener.exitAdminOptionFor(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAdminOptionFor) {
            return visitor.visitAdminOptionFor(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WithAdminOptionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_ADMIN() {
        return this.getToken(HiveSqlParser.KW_ADMIN, 0);
    }
    KW_OPTION() {
        return this.getToken(HiveSqlParser.KW_OPTION, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_withAdminOption;
    }
    enterRule(listener) {
        if (listener.enterWithAdminOption) {
            listener.enterWithAdminOption(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWithAdminOption) {
            listener.exitWithAdminOption(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWithAdminOption) {
            return visitor.visitWithAdminOption(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class MetastoreCheckContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_MSCK() {
        return this.getToken(HiveSqlParser.KW_MSCK, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    KW_REPAIR() {
        return this.getToken(HiveSqlParser.KW_REPAIR, 0);
    }
    KW_PARTITIONS() {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    KW_ADD() {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_SYNC() {
        return this.getToken(HiveSqlParser.KW_SYNC, 0);
    }
    partitionSelectorSpec() {
        return this.getRuleContext(0, PartitionSelectorSpecContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_metastoreCheck;
    }
    enterRule(listener) {
        if (listener.enterMetastoreCheck) {
            listener.enterMetastoreCheck(this);
        }
    }
    exitRule(listener) {
        if (listener.exitMetastoreCheck) {
            listener.exitMetastoreCheck(this);
        }
    }
    accept(visitor) {
        if (visitor.visitMetastoreCheck) {
            return visitor.visitMetastoreCheck(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ResourceListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    resource(i) {
        if (i === undefined) {
            return this.getRuleContexts(ResourceContext);
        }
        return this.getRuleContext(i, ResourceContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_resourceList;
    }
    enterRule(listener) {
        if (listener.enterResourceList) {
            listener.enterResourceList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitResourceList) {
            listener.exitResourceList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitResourceList) {
            return visitor.visitResourceList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ResourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    resourceType() {
        return this.getRuleContext(0, ResourceTypeContext);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_resource;
    }
    enterRule(listener) {
        if (listener.enterResource) {
            listener.enterResource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitResource) {
            listener.exitResource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitResource) {
            return visitor.visitResource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ResourceTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_JAR() {
        return this.getToken(HiveSqlParser.KW_JAR, 0);
    }
    KW_FILE() {
        return this.getToken(HiveSqlParser.KW_FILE, 0);
    }
    KW_ARCHIVE() {
        return this.getToken(HiveSqlParser.KW_ARCHIVE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_resourceType;
    }
    enterRule(listener) {
        if (listener.enterResourceType) {
            listener.enterResourceType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitResourceType) {
            listener.exitResourceType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitResourceType) {
            return visitor.visitResourceType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateFunctionStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_FUNCTION() {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    functionNameCreate() {
        return this.getRuleContext(0, FunctionNameCreateContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_USING() {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    KW_TEMPORARY() {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    resourceList() {
        return this.getRuleContext(0, ResourceListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createFunctionStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateFunctionStatement) {
            listener.enterCreateFunctionStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateFunctionStatement) {
            listener.exitCreateFunctionStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateFunctionStatement) {
            return visitor.visitCreateFunctionStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropFunctionStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_FUNCTION() {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    functionNameForDDL() {
        return this.getRuleContext(0, FunctionNameForDDLContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    KW_TEMPORARY() {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropFunctionStatement;
    }
    enterRule(listener) {
        if (listener.enterDropFunctionStatement) {
            listener.enterDropFunctionStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropFunctionStatement) {
            listener.exitDropFunctionStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropFunctionStatement) {
            return visitor.visitDropFunctionStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ReloadFunctionsStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_RELOAD() {
        return this.getToken(HiveSqlParser.KW_RELOAD, 0);
    }
    KW_FUNCTIONS() {
        return this.getToken(HiveSqlParser.KW_FUNCTIONS, 0);
    }
    KW_FUNCTION() {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_reloadFunctionsStatement;
    }
    enterRule(listener) {
        if (listener.enterReloadFunctionsStatement) {
            listener.enterReloadFunctionsStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitReloadFunctionsStatement) {
            listener.exitReloadFunctionsStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitReloadFunctionsStatement) {
            return visitor.visitReloadFunctionsStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateMacroStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_TEMPORARY() {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    KW_MACRO() {
        return this.getToken(HiveSqlParser.KW_MACRO, 0);
    }
    Identifier() {
        return this.getToken(HiveSqlParser.Identifier, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    columnNameTypeList() {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createMacroStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateMacroStatement) {
            listener.enterCreateMacroStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateMacroStatement) {
            listener.exitCreateMacroStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateMacroStatement) {
            return visitor.visitCreateMacroStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropMacroStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_TEMPORARY() {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    KW_MACRO() {
        return this.getToken(HiveSqlParser.KW_MACRO, 0);
    }
    Identifier() {
        return this.getToken(HiveSqlParser.Identifier, 0);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropMacroStatement;
    }
    enterRule(listener) {
        if (listener.enterDropMacroStatement) {
            listener.enterDropMacroStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropMacroStatement) {
            listener.exitDropMacroStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropMacroStatement) {
            return visitor.visitDropMacroStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateIndexStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_INDEX() {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    KW_TABLE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_TABLE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_TABLE, i);
        }
    }
    tableName(i) {
        if (i === undefined) {
            return this.getRuleContexts(TableNameContext);
        }
        return this.getRuleContext(i, TableNameContext);
    }
    columnParenthesesList(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }
        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_DEFERRED() {
        return this.getToken(HiveSqlParser.KW_DEFERRED, 0);
    }
    KW_REBUILD() {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0);
    }
    KW_IDXPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_IDXPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    KW_IN() {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    KW_PARTITIONED() {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    tableFileFormat() {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    locationPath() {
        return this.getRuleContext(0, LocationPathContext);
    }
    tablePropertiesPrefixed() {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    tableComment() {
        return this.getRuleContext(0, TableCommentContext);
    }
    tableRowFormat() {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createIndexStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateIndexStatement) {
            listener.enterCreateIndexStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateIndexStatement) {
            listener.exitCreateIndexStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateIndexStatement) {
            return visitor.visitCreateIndexStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropIndexStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_INDEX() {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropIndexStatement;
    }
    enterRule(listener) {
        if (listener.enterDropIndexStatement) {
            listener.enterDropIndexStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropIndexStatement) {
            listener.exitDropIndexStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropIndexStatement) {
            return visitor.visitDropIndexStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateViewStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    selectStatementWithCTE() {
        return this.getRuleContext(0, SelectStatementWithCTEContext);
    }
    viewNameCreate() {
        return this.getRuleContext(0, ViewNameCreateContext);
    }
    KW_OR() {
        return this.getToken(HiveSqlParser.KW_OR, 0);
    }
    KW_REPLACE() {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameCommentList() {
        return this.getRuleContext(0, ColumnNameCommentListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    tableComment() {
        return this.getRuleContext(0, TableCommentContext);
    }
    viewPartition() {
        return this.getRuleContext(0, ViewPartitionContext);
    }
    tablePropertiesPrefixed() {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createViewStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateViewStatement) {
            listener.enterCreateViewStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateViewStatement) {
            listener.exitCreateViewStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateViewStatement) {
            return visitor.visitCreateViewStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewPartitionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_PARTITIONED() {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    KW_SPEC() {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    partitionTransformSpec() {
        return this.getRuleContext(0, PartitionTransformSpecContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewPartition;
    }
    enterRule(listener) {
        if (listener.enterViewPartition) {
            listener.enterViewPartition(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewPartition) {
            listener.exitViewPartition(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewPartition) {
            return visitor.visitViewPartition(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewOrganizationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    viewClusterSpec() {
        return this.getRuleContext(0, ViewClusterSpecContext);
    }
    viewComplexSpec() {
        return this.getRuleContext(0, ViewComplexSpecContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewOrganization;
    }
    enterRule(listener) {
        if (listener.enterViewOrganization) {
            listener.enterViewOrganization(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewOrganization) {
            listener.exitViewOrganization(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewOrganization) {
            return visitor.visitViewOrganization(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewClusterSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CLUSTERED() {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewClusterSpec;
    }
    enterRule(listener) {
        if (listener.enterViewClusterSpec) {
            listener.enterViewClusterSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewClusterSpec) {
            listener.exitViewClusterSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewClusterSpec) {
            return visitor.visitViewClusterSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewComplexSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    viewDistSpec() {
        return this.getRuleContext(0, ViewDistSpecContext);
    }
    viewSortSpec() {
        return this.getRuleContext(0, ViewSortSpecContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewComplexSpec;
    }
    enterRule(listener) {
        if (listener.enterViewComplexSpec) {
            listener.enterViewComplexSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewComplexSpec) {
            listener.exitViewComplexSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewComplexSpec) {
            return visitor.visitViewComplexSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewDistSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DISTRIBUTED() {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTED, 0);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewDistSpec;
    }
    enterRule(listener) {
        if (listener.enterViewDistSpec) {
            listener.enterViewDistSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewDistSpec) {
            listener.exitViewDistSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewDistSpec) {
            return visitor.visitViewDistSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewSortSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SORTED() {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewSortSpec;
    }
    enterRule(listener) {
        if (listener.enterViewSortSpec) {
            listener.enterViewSortSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewSortSpec) {
            listener.exitViewSortSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewSortSpec) {
            return visitor.visitViewSortSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropViewStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    viewName() {
        return this.getRuleContext(0, ViewNameContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropViewStatement;
    }
    enterRule(listener) {
        if (listener.enterDropViewStatement) {
            listener.enterDropViewStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropViewStatement) {
            listener.exitDropViewStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropViewStatement) {
            return visitor.visitDropViewStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateMaterializedViewStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_MATERIALIZED() {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    selectStatementWithCTE() {
        return this.getRuleContext(0, SelectStatementWithCTEContext);
    }
    viewNameCreate() {
        return this.getRuleContext(0, ViewNameCreateContext);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    rewriteDisabled() {
        return this.getRuleContext(0, RewriteDisabledContext);
    }
    tableComment() {
        return this.getRuleContext(0, TableCommentContext);
    }
    viewPartition() {
        return this.getRuleContext(0, ViewPartitionContext);
    }
    viewOrganization() {
        return this.getRuleContext(0, ViewOrganizationContext);
    }
    tableRowFormat() {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    tableFileFormat() {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    locationPath() {
        return this.getRuleContext(0, LocationPathContext);
    }
    tablePropertiesPrefixed() {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createMaterializedViewStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateMaterializedViewStatement) {
            listener.enterCreateMaterializedViewStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateMaterializedViewStatement) {
            listener.exitCreateMaterializedViewStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateMaterializedViewStatement) {
            return visitor.visitCreateMaterializedViewStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropMaterializedViewStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_MATERIALIZED() {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    viewName() {
        return this.getRuleContext(0, ViewNameContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropMaterializedViewStatement;
    }
    enterRule(listener) {
        if (listener.enterDropMaterializedViewStatement) {
            listener.enterDropMaterializedViewStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropMaterializedViewStatement) {
            listener.exitDropMaterializedViewStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropMaterializedViewStatement) {
            return visitor.visitDropMaterializedViewStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateScheduledQueryStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_SCHEDULED() {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0);
    }
    KW_QUERY() {
        return this.getToken(HiveSqlParser.KW_QUERY, 0);
    }
    scheduleSpec() {
        return this.getRuleContext(0, ScheduleSpecContext);
    }
    definedAsSpec() {
        return this.getRuleContext(0, DefinedAsSpecContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    executedAsSpec() {
        return this.getRuleContext(0, ExecutedAsSpecContext);
    }
    enableSpecification() {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createScheduledQueryStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateScheduledQueryStatement) {
            listener.enterCreateScheduledQueryStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateScheduledQueryStatement) {
            listener.exitCreateScheduledQueryStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateScheduledQueryStatement) {
            return visitor.visitCreateScheduledQueryStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropScheduledQueryStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_SCHEDULED() {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0);
    }
    KW_QUERY() {
        return this.getToken(HiveSqlParser.KW_QUERY, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropScheduledQueryStatement;
    }
    enterRule(listener) {
        if (listener.enterDropScheduledQueryStatement) {
            listener.enterDropScheduledQueryStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropScheduledQueryStatement) {
            listener.exitDropScheduledQueryStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropScheduledQueryStatement) {
            return visitor.visitDropScheduledQueryStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterScheduledQueryStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ALTER() {
        return this.getToken(HiveSqlParser.KW_ALTER, 0);
    }
    KW_SCHEDULED() {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0);
    }
    KW_QUERY() {
        return this.getToken(HiveSqlParser.KW_QUERY, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    alterScheduledQueryChange() {
        return this.getRuleContext(0, AlterScheduledQueryChangeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterScheduledQueryStatement;
    }
    enterRule(listener) {
        if (listener.enterAlterScheduledQueryStatement) {
            listener.enterAlterScheduledQueryStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterScheduledQueryStatement) {
            listener.exitAlterScheduledQueryStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterScheduledQueryStatement) {
            return visitor.visitAlterScheduledQueryStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterScheduledQueryChangeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    scheduleSpec() {
        return this.getRuleContext(0, ScheduleSpecContext);
    }
    executedAsSpec() {
        return this.getRuleContext(0, ExecutedAsSpecContext);
    }
    enableSpecification() {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    definedAsSpec() {
        return this.getRuleContext(0, DefinedAsSpecContext);
    }
    KW_EXECUTE() {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterScheduledQueryChange;
    }
    enterRule(listener) {
        if (listener.enterAlterScheduledQueryChange) {
            listener.enterAlterScheduledQueryChange(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterScheduledQueryChange) {
            listener.exitAlterScheduledQueryChange(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterScheduledQueryChange) {
            return visitor.visitAlterScheduledQueryChange(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ScheduleSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CRON() {
        return this.getToken(HiveSqlParser.KW_CRON, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_EVERY() {
        return this.getToken(HiveSqlParser.KW_EVERY, 0);
    }
    intervalQualifiers() {
        return this.getRuleContext(0, IntervalQualifiersContext);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    KW_AT() {
        return this.getToken(HiveSqlParser.KW_AT, 0);
    }
    KW_OFFSET() {
        return this.getToken(HiveSqlParser.KW_OFFSET, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_scheduleSpec;
    }
    enterRule(listener) {
        if (listener.enterScheduleSpec) {
            listener.enterScheduleSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitScheduleSpec) {
            listener.exitScheduleSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitScheduleSpec) {
            return visitor.visitScheduleSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExecutedAsSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_EXECUTED() {
        return this.getToken(HiveSqlParser.KW_EXECUTED, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_executedAsSpec;
    }
    enterRule(listener) {
        if (listener.enterExecutedAsSpec) {
            listener.enterExecutedAsSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExecutedAsSpec) {
            listener.exitExecutedAsSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExecutedAsSpec) {
            return visitor.visitExecutedAsSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DefinedAsSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    statement() {
        return this.getRuleContext(0, StatementContext);
    }
    KW_DEFINED() {
        return this.getToken(HiveSqlParser.KW_DEFINED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_definedAsSpec;
    }
    enterRule(listener) {
        if (listener.enterDefinedAsSpec) {
            listener.enterDefinedAsSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDefinedAsSpec) {
            listener.exitDefinedAsSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDefinedAsSpec) {
            return visitor.visitDefinedAsSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ShowStmtIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_showStmtIdentifier;
    }
    enterRule(listener) {
        if (listener.enterShowStmtIdentifier) {
            listener.enterShowStmtIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitShowStmtIdentifier) {
            listener.exitShowStmtIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitShowStmtIdentifier) {
            return visitor.visitShowStmtIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableCommentContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableComment;
    }
    enterRule(listener) {
        if (listener.enterTableComment) {
            listener.enterTableComment(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableComment) {
            listener.exitTableComment(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableComment) {
            return visitor.visitTableComment(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableLifecycleContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LIFECYCLE() {
        return this.getToken(HiveSqlParser.KW_LIFECYCLE, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableLifecycle;
    }
    enterRule(listener) {
        if (listener.enterTableLifecycle) {
            listener.enterTableLifecycle(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableLifecycle) {
            listener.exitTableLifecycle(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableLifecycle) {
            return visitor.visitTableLifecycle(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateTablePartitionSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_PARTITIONED() {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    KW_SPEC() {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    partitionTransformSpec() {
        return this.getRuleContext(0, PartitionTransformSpecContext);
    }
    createTablePartitionColumnTypeSpec() {
        return this.getRuleContext(0, CreateTablePartitionColumnTypeSpecContext);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createTablePartitionSpec;
    }
    enterRule(listener) {
        if (listener.enterCreateTablePartitionSpec) {
            listener.enterCreateTablePartitionSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateTablePartitionSpec) {
            listener.exitCreateTablePartitionSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateTablePartitionSpec) {
            return visitor.visitCreateTablePartitionSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateTablePartitionColumnTypeSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameTypeConstraint(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTypeConstraintContext);
        }
        return this.getRuleContext(i, ColumnNameTypeConstraintContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createTablePartitionColumnTypeSpec;
    }
    enterRule(listener) {
        if (listener.enterCreateTablePartitionColumnTypeSpec) {
            listener.enterCreateTablePartitionColumnTypeSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateTablePartitionColumnTypeSpec) {
            listener.exitCreateTablePartitionColumnTypeSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateTablePartitionColumnTypeSpec) {
            return visitor.visitCreateTablePartitionColumnTypeSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionTransformSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    partitionTransformType(i) {
        if (i === undefined) {
            return this.getRuleContexts(PartitionTransformTypeContext);
        }
        return this.getRuleContext(i, PartitionTransformTypeContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionTransformSpec;
    }
    enterRule(listener) {
        if (listener.enterPartitionTransformSpec) {
            listener.enterPartitionTransformSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionTransformSpec) {
            listener.exitPartitionTransformSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionTransformSpec) {
            return visitor.visitPartitionTransformSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionTransformTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    year() {
        return this.getRuleContext(0, YearContext);
    }
    month() {
        return this.getRuleContext(0, MonthContext);
    }
    day() {
        return this.getRuleContext(0, DayContext);
    }
    hour() {
        return this.getRuleContext(0, HourContext);
    }
    COMMA() {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    KW_TRUNCATE() {
        return this.getToken(HiveSqlParser.KW_TRUNCATE, 0);
    }
    KW_BUCKET() {
        return this.getToken(HiveSqlParser.KW_BUCKET, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionTransformType;
    }
    enterRule(listener) {
        if (listener.enterPartitionTransformType) {
            listener.enterPartitionTransformType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionTransformType) {
            listener.exitPartitionTransformType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionTransformType) {
            return visitor.visitPartitionTransformType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableBucketsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CLUSTERED() {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0);
    }
    KW_BY(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_BY);
        }
        else {
            return this.getToken(HiveSqlParser.KW_BY, i);
        }
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    KW_BUCKETS() {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    KW_SORTED() {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    columnNameOrderList() {
        return this.getRuleContext(0, ColumnNameOrderListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableBuckets;
    }
    enterRule(listener) {
        if (listener.enterTableBuckets) {
            listener.enterTableBuckets(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableBuckets) {
            listener.exitTableBuckets(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableBuckets) {
            return visitor.visitTableBuckets(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableSkewedContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SKEWED() {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    skewedValueElement() {
        return this.getRuleContext(0, SkewedValueElementContext);
    }
    storedAsDirs() {
        return this.getRuleContext(0, StoredAsDirsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableSkewed;
    }
    enterRule(listener) {
        if (listener.enterTableSkewed) {
            listener.enterTableSkewed(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableSkewed) {
            listener.exitTableSkewed(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableSkewed) {
            return visitor.visitTableSkewed(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RowFormatContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    rowFormatSerde() {
        return this.getRuleContext(0, RowFormatSerdeContext);
    }
    rowFormatDelimited() {
        return this.getRuleContext(0, RowFormatDelimitedContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rowFormat;
    }
    enterRule(listener) {
        if (listener.enterRowFormat) {
            listener.enterRowFormat(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRowFormat) {
            listener.exitRowFormat(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRowFormat) {
            return visitor.visitRowFormat(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RecordReaderContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_RECORDREADER() {
        return this.getToken(HiveSqlParser.KW_RECORDREADER, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_recordReader;
    }
    enterRule(listener) {
        if (listener.enterRecordReader) {
            listener.enterRecordReader(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRecordReader) {
            listener.exitRecordReader(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRecordReader) {
            return visitor.visitRecordReader(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RecordWriterContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_RECORDWRITER() {
        return this.getToken(HiveSqlParser.KW_RECORDWRITER, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_recordWriter;
    }
    enterRule(listener) {
        if (listener.enterRecordWriter) {
            listener.enterRecordWriter(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRecordWriter) {
            listener.exitRecordWriter(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRecordWriter) {
            return visitor.visitRecordWriter(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RowFormatSerdeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ROW() {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    KW_FORMAT() {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0);
    }
    KW_SERDE() {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_SERDEPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rowFormatSerde;
    }
    enterRule(listener) {
        if (listener.enterRowFormatSerde) {
            listener.enterRowFormatSerde(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRowFormatSerde) {
            listener.exitRowFormatSerde(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRowFormatSerde) {
            return visitor.visitRowFormatSerde(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RowFormatDelimitedContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ROW() {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    KW_FORMAT() {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0);
    }
    KW_DELIMITED() {
        return this.getToken(HiveSqlParser.KW_DELIMITED, 0);
    }
    tableRowFormatFieldIdentifier() {
        return this.getRuleContext(0, TableRowFormatFieldIdentifierContext);
    }
    tableRowFormatCollItemsIdentifier() {
        return this.getRuleContext(0, TableRowFormatCollItemsIdentifierContext);
    }
    tableRowFormatMapKeysIdentifier() {
        return this.getRuleContext(0, TableRowFormatMapKeysIdentifierContext);
    }
    tableRowFormatLinesIdentifier() {
        return this.getRuleContext(0, TableRowFormatLinesIdentifierContext);
    }
    tableRowNullFormat() {
        return this.getRuleContext(0, TableRowNullFormatContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rowFormatDelimited;
    }
    enterRule(listener) {
        if (listener.enterRowFormatDelimited) {
            listener.enterRowFormatDelimited(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRowFormatDelimited) {
            listener.exitRowFormatDelimited(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRowFormatDelimited) {
            return visitor.visitRowFormatDelimited(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableRowFormatContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    rowFormatDelimited() {
        return this.getRuleContext(0, RowFormatDelimitedContext);
    }
    rowFormatSerde() {
        return this.getRuleContext(0, RowFormatSerdeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableRowFormat;
    }
    enterRule(listener) {
        if (listener.enterTableRowFormat) {
            listener.enterTableRowFormat(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableRowFormat) {
            listener.exitTableRowFormat(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableRowFormat) {
            return visitor.visitTableRowFormat(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TablePropertiesPrefixedContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_TBLPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tablePropertiesPrefixed;
    }
    enterRule(listener) {
        if (listener.enterTablePropertiesPrefixed) {
            listener.enterTablePropertiesPrefixed(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTablePropertiesPrefixed) {
            listener.exitTablePropertiesPrefixed(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTablePropertiesPrefixed) {
            return visitor.visitTablePropertiesPrefixed(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TablePropertiesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    tablePropertiesList() {
        return this.getRuleContext(0, TablePropertiesListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableProperties;
    }
    enterRule(listener) {
        if (listener.enterTableProperties) {
            listener.enterTableProperties(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableProperties) {
            listener.exitTableProperties(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableProperties) {
            return visitor.visitTableProperties(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TablePropertiesListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    keyValuePropertyList() {
        return this.getRuleContext(0, KeyValuePropertyListContext);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tablePropertiesList;
    }
    enterRule(listener) {
        if (listener.enterTablePropertiesList) {
            listener.enterTablePropertiesList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTablePropertiesList) {
            listener.exitTablePropertiesList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTablePropertiesList) {
            return visitor.visitTablePropertiesList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class KeyValuePropertiesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    keyValuePropertyList() {
        return this.getRuleContext(0, KeyValuePropertyListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_keyValueProperties;
    }
    enterRule(listener) {
        if (listener.enterKeyValueProperties) {
            listener.enterKeyValueProperties(this);
        }
    }
    exitRule(listener) {
        if (listener.exitKeyValueProperties) {
            listener.exitKeyValueProperties(this);
        }
    }
    accept(visitor) {
        if (visitor.visitKeyValueProperties) {
            return visitor.visitKeyValueProperties(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class KeyValuePropertyListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    keyValueProperty(i) {
        if (i === undefined) {
            return this.getRuleContexts(KeyValuePropertyContext);
        }
        return this.getRuleContext(i, KeyValuePropertyContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_keyValuePropertyList;
    }
    enterRule(listener) {
        if (listener.enterKeyValuePropertyList) {
            listener.enterKeyValuePropertyList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitKeyValuePropertyList) {
            listener.exitKeyValuePropertyList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitKeyValuePropertyList) {
            return visitor.visitKeyValuePropertyList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class KeyValuePropertyContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_keyValueProperty;
    }
    enterRule(listener) {
        if (listener.enterKeyValueProperty) {
            listener.enterKeyValueProperty(this);
        }
    }
    exitRule(listener) {
        if (listener.exitKeyValueProperty) {
            listener.exitKeyValueProperty(this);
        }
    }
    accept(visitor) {
        if (visitor.visitKeyValueProperty) {
            return visitor.visitKeyValueProperty(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableRowFormatFieldIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FIELDS() {
        return this.getToken(HiveSqlParser.KW_FIELDS, 0);
    }
    KW_TERMINATED() {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0);
    }
    KW_BY(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_BY);
        }
        else {
            return this.getToken(HiveSqlParser.KW_BY, i);
        }
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    KW_ESCAPED() {
        return this.getToken(HiveSqlParser.KW_ESCAPED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableRowFormatFieldIdentifier;
    }
    enterRule(listener) {
        if (listener.enterTableRowFormatFieldIdentifier) {
            listener.enterTableRowFormatFieldIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableRowFormatFieldIdentifier) {
            listener.exitTableRowFormatFieldIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableRowFormatFieldIdentifier) {
            return visitor.visitTableRowFormatFieldIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableRowFormatCollItemsIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_COLLECTION() {
        return this.getToken(HiveSqlParser.KW_COLLECTION, 0);
    }
    KW_ITEMS() {
        return this.getToken(HiveSqlParser.KW_ITEMS, 0);
    }
    KW_TERMINATED() {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier;
    }
    enterRule(listener) {
        if (listener.enterTableRowFormatCollItemsIdentifier) {
            listener.enterTableRowFormatCollItemsIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableRowFormatCollItemsIdentifier) {
            listener.exitTableRowFormatCollItemsIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableRowFormatCollItemsIdentifier) {
            return visitor.visitTableRowFormatCollItemsIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableRowFormatMapKeysIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_MAP() {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    KW_KEYS() {
        return this.getToken(HiveSqlParser.KW_KEYS, 0);
    }
    KW_TERMINATED() {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier;
    }
    enterRule(listener) {
        if (listener.enterTableRowFormatMapKeysIdentifier) {
            listener.enterTableRowFormatMapKeysIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableRowFormatMapKeysIdentifier) {
            listener.exitTableRowFormatMapKeysIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableRowFormatMapKeysIdentifier) {
            return visitor.visitTableRowFormatMapKeysIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableRowFormatLinesIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LINES() {
        return this.getToken(HiveSqlParser.KW_LINES, 0);
    }
    KW_TERMINATED() {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableRowFormatLinesIdentifier;
    }
    enterRule(listener) {
        if (listener.enterTableRowFormatLinesIdentifier) {
            listener.enterTableRowFormatLinesIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableRowFormatLinesIdentifier) {
            listener.exitTableRowFormatLinesIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableRowFormatLinesIdentifier) {
            return visitor.visitTableRowFormatLinesIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableRowNullFormatContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_NULL() {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    KW_DEFINED() {
        return this.getToken(HiveSqlParser.KW_DEFINED, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableRowNullFormat;
    }
    enterRule(listener) {
        if (listener.enterTableRowNullFormat) {
            listener.enterTableRowNullFormat(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableRowNullFormat) {
            listener.exitTableRowNullFormat(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableRowNullFormat) {
            return visitor.visitTableRowNullFormat(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableFileFormatContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_STORED(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_STORED);
        }
        else {
            return this.getToken(HiveSqlParser.KW_STORED, i);
        }
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    KW_INPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    KW_OUTPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_OUTPUTFORMAT, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    KW_INPUTDRIVER() {
        return this.getToken(HiveSqlParser.KW_INPUTDRIVER, 0);
    }
    KW_OUTPUTDRIVER() {
        return this.getToken(HiveSqlParser.KW_OUTPUTDRIVER, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_SERDEPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableFileFormat;
    }
    enterRule(listener) {
        if (listener.enterTableFileFormat) {
            listener.enterTableFileFormat(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableFileFormat) {
            listener.exitTableFileFormat(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableFileFormat) {
            return visitor.visitTableFileFormat(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameTypeListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameType(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTypeContext);
        }
        return this.getRuleContext(i, ColumnNameTypeContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameTypeList;
    }
    enterRule(listener) {
        if (listener.enterColumnNameTypeList) {
            listener.enterColumnNameTypeList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameTypeList) {
            listener.exitColumnNameTypeList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameTypeList) {
            return visitor.visitColumnNameTypeList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameTypeOrConstraintListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameTypeOrConstraint(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameTypeOrConstraintContext);
        }
        return this.getRuleContext(i, ColumnNameTypeOrConstraintContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameTypeOrConstraintList;
    }
    enterRule(listener) {
        if (listener.enterColumnNameTypeOrConstraintList) {
            listener.enterColumnNameTypeOrConstraintList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameTypeOrConstraintList) {
            listener.exitColumnNameTypeOrConstraintList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameTypeOrConstraintList) {
            return visitor.visitColumnNameTypeOrConstraintList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameColonTypeListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameColonType(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameColonTypeContext);
        }
        return this.getRuleContext(i, ColumnNameColonTypeContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameColonTypeList;
    }
    enterRule(listener) {
        if (listener.enterColumnNameColonTypeList) {
            listener.enterColumnNameColonTypeList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameColonTypeList) {
            listener.exitColumnNameColonTypeList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameColonTypeList) {
            return visitor.visitColumnNameColonTypeList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnName(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameContext);
        }
        return this.getRuleContext(i, ColumnNameContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameList;
    }
    enterRule(listener) {
        if (listener.enterColumnNameList) {
            listener.enterColumnNameList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameList) {
            listener.exitColumnNameList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameList) {
            return visitor.visitColumnNameList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    poolPath() {
        return this.getRuleContext(0, PoolPathContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnName;
    }
    enterRule(listener) {
        if (listener.enterColumnName) {
            listener.enterColumnName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnName) {
            listener.exitColumnName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnName) {
            return visitor.visitColumnName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNamePathContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    poolPath() {
        return this.getRuleContext(0, PoolPathContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNamePath;
    }
    enterRule(listener) {
        if (listener.enterColumnNamePath) {
            listener.enterColumnNamePath(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNamePath) {
            listener.exitColumnNamePath(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNamePath) {
            return visitor.visitColumnNamePath(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameCreateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameCreate;
    }
    enterRule(listener) {
        if (listener.enterColumnNameCreate) {
            listener.enterColumnNameCreate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameCreate) {
            listener.exitColumnNameCreate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameCreate) {
            return visitor.visitColumnNameCreate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExtColumnNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    KW_ELEM_TYPE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_ELEM_TYPE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_ELEM_TYPE, i);
        }
    }
    KW_KEY_TYPE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_KEY_TYPE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_KEY_TYPE, i);
        }
    }
    KW_VALUE_TYPE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_VALUE_TYPE);
        }
        else {
            return this.getToken(HiveSqlParser.KW_VALUE_TYPE, i);
        }
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_extColumnName;
    }
    enterRule(listener) {
        if (listener.enterExtColumnName) {
            listener.enterExtColumnName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExtColumnName) {
            listener.exitExtColumnName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExtColumnName) {
            return visitor.visitExtColumnName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameOrderListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameOrder(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameOrderContext);
        }
        return this.getRuleContext(i, ColumnNameOrderContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameOrderList;
    }
    enterRule(listener) {
        if (listener.enterColumnNameOrderList) {
            listener.enterColumnNameOrderList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameOrderList) {
            listener.exitColumnNameOrderList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameOrderList) {
            return visitor.visitColumnNameOrderList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnParenthesesListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnParenthesesList;
    }
    enterRule(listener) {
        if (listener.enterColumnParenthesesList) {
            listener.enterColumnParenthesesList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnParenthesesList) {
            listener.exitColumnParenthesesList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnParenthesesList) {
            return visitor.visitColumnParenthesesList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class EnableValidateSpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    enableSpecification() {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    validateSpecification() {
        return this.getRuleContext(0, ValidateSpecificationContext);
    }
    enforcedSpecification() {
        return this.getRuleContext(0, EnforcedSpecificationContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_enableValidateSpecification;
    }
    enterRule(listener) {
        if (listener.enterEnableValidateSpecification) {
            listener.enterEnableValidateSpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitEnableValidateSpecification) {
            listener.exitEnableValidateSpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitEnableValidateSpecification) {
            return visitor.visitEnableValidateSpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class EnableSpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    enable() {
        return this.getRuleContext(0, EnableContext);
    }
    disable() {
        return this.getRuleContext(0, DisableContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_enableSpecification;
    }
    enterRule(listener) {
        if (listener.enterEnableSpecification) {
            listener.enterEnableSpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitEnableSpecification) {
            listener.exitEnableSpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitEnableSpecification) {
            return visitor.visitEnableSpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ValidateSpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_VALIDATE() {
        return this.getToken(HiveSqlParser.KW_VALIDATE, 0);
    }
    KW_NOVALIDATE() {
        return this.getToken(HiveSqlParser.KW_NOVALIDATE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_validateSpecification;
    }
    enterRule(listener) {
        if (listener.enterValidateSpecification) {
            listener.enterValidateSpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitValidateSpecification) {
            listener.exitValidateSpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitValidateSpecification) {
            return visitor.visitValidateSpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class EnforcedSpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ENFORCED() {
        return this.getToken(HiveSqlParser.KW_ENFORCED, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_enforcedSpecification;
    }
    enterRule(listener) {
        if (listener.enterEnforcedSpecification) {
            listener.enterEnforcedSpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitEnforcedSpecification) {
            listener.exitEnforcedSpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitEnforcedSpecification) {
            return visitor.visitEnforcedSpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RelySpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_RELY() {
        return this.getToken(HiveSqlParser.KW_RELY, 0);
    }
    KW_NORELY() {
        return this.getToken(HiveSqlParser.KW_NORELY, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_relySpecification;
    }
    enterRule(listener) {
        if (listener.enterRelySpecification) {
            listener.enterRelySpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRelySpecification) {
            listener.exitRelySpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRelySpecification) {
            return visitor.visitRelySpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableLevelConstraint() {
        return this.getRuleContext(0, TableLevelConstraintContext);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    constraintOptsCreate() {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createConstraint;
    }
    enterRule(listener) {
        if (listener.enterCreateConstraint) {
            listener.enterCreateConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateConstraint) {
            listener.exitCreateConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateConstraint) {
            return visitor.visitCreateConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterConstraintWithNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    tableLevelConstraint() {
        return this.getRuleContext(0, TableLevelConstraintContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    constraintOptsAlter() {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterConstraintWithName;
    }
    enterRule(listener) {
        if (listener.enterAlterConstraintWithName) {
            listener.enterAlterConstraintWithName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterConstraintWithName) {
            listener.exitAlterConstraintWithName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterConstraintWithName) {
            return visitor.visitAlterConstraintWithName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableLevelConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    pkUkConstraint() {
        return this.getRuleContext(0, PkUkConstraintContext);
    }
    checkConstraint() {
        return this.getRuleContext(0, CheckConstraintContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableLevelConstraint;
    }
    enterRule(listener) {
        if (listener.enterTableLevelConstraint) {
            listener.enterTableLevelConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableLevelConstraint) {
            listener.exitTableLevelConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableLevelConstraint) {
            return visitor.visitTableLevelConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PkUkConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableConstraintType() {
        return this.getRuleContext(0, TableConstraintTypeContext);
    }
    columnParenthesesList() {
        return this.getRuleContext(0, ColumnParenthesesListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_pkUkConstraint;
    }
    enterRule(listener) {
        if (listener.enterPkUkConstraint) {
            listener.enterPkUkConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPkUkConstraint) {
            listener.exitPkUkConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPkUkConstraint) {
            return visitor.visitPkUkConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CheckConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CHECK() {
        return this.getToken(HiveSqlParser.KW_CHECK, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_checkConstraint;
    }
    enterRule(listener) {
        if (listener.enterCheckConstraint) {
            listener.enterCheckConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCheckConstraint) {
            listener.exitCheckConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCheckConstraint) {
            return visitor.visitCheckConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateForeignKeyContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FOREIGN() {
        return this.getToken(HiveSqlParser.KW_FOREIGN, 0);
    }
    KW_KEY() {
        return this.getToken(HiveSqlParser.KW_KEY, 0);
    }
    KW_REFERENCES() {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0);
    }
    columnParenthesesList(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }
        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    constraintOptsCreate() {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createForeignKey;
    }
    enterRule(listener) {
        if (listener.enterCreateForeignKey) {
            listener.enterCreateForeignKey(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateForeignKey) {
            listener.exitCreateForeignKey(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateForeignKey) {
            return visitor.visitCreateForeignKey(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterForeignKeyWithNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    KW_FOREIGN() {
        return this.getToken(HiveSqlParser.KW_FOREIGN, 0);
    }
    KW_KEY() {
        return this.getToken(HiveSqlParser.KW_KEY, 0);
    }
    KW_REFERENCES() {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    columnParenthesesList(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }
        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    constraintOptsAlter() {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterForeignKeyWithName;
    }
    enterRule(listener) {
        if (listener.enterAlterForeignKeyWithName) {
            listener.enterAlterForeignKeyWithName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterForeignKeyWithName) {
            listener.exitAlterForeignKeyWithName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterForeignKeyWithName) {
            return visitor.visitAlterForeignKeyWithName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SkewedValueElementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    constantList() {
        return this.getRuleContext(0, ConstantListContext);
    }
    skewedColumnValuePairList() {
        return this.getRuleContext(0, SkewedColumnValuePairListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_skewedValueElement;
    }
    enterRule(listener) {
        if (listener.enterSkewedValueElement) {
            listener.enterSkewedValueElement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSkewedValueElement) {
            listener.exitSkewedValueElement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSkewedValueElement) {
            return visitor.visitSkewedValueElement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SkewedColumnValuePairListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    skewedColumnValuePair(i) {
        if (i === undefined) {
            return this.getRuleContexts(SkewedColumnValuePairContext);
        }
        return this.getRuleContext(i, SkewedColumnValuePairContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_skewedColumnValuePairList;
    }
    enterRule(listener) {
        if (listener.enterSkewedColumnValuePairList) {
            listener.enterSkewedColumnValuePairList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSkewedColumnValuePairList) {
            listener.exitSkewedColumnValuePairList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSkewedColumnValuePairList) {
            return visitor.visitSkewedColumnValuePairList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SkewedColumnValuePairContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    constantList() {
        return this.getRuleContext(0, ConstantListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_skewedColumnValuePair;
    }
    enterRule(listener) {
        if (listener.enterSkewedColumnValuePair) {
            listener.enterSkewedColumnValuePair(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSkewedColumnValuePair) {
            listener.exitSkewedColumnValuePair(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSkewedColumnValuePair) {
            return visitor.visitSkewedColumnValuePair(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ConstantListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    constant(i) {
        if (i === undefined) {
            return this.getRuleContexts(ConstantContext);
        }
        return this.getRuleContext(i, ConstantContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_constantList;
    }
    enterRule(listener) {
        if (listener.enterConstantList) {
            listener.enterConstantList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitConstantList) {
            listener.exitConstantList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitConstantList) {
            return visitor.visitConstantList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class OrderSpecificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ASC() {
        return this.getToken(HiveSqlParser.KW_ASC, 0);
    }
    KW_DESC() {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_orderSpecification;
    }
    enterRule(listener) {
        if (listener.enterOrderSpecification) {
            listener.enterOrderSpecification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitOrderSpecification) {
            listener.exitOrderSpecification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitOrderSpecification) {
            return visitor.visitOrderSpecification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class NullOrderingContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_NULLS() {
        return this.getToken(HiveSqlParser.KW_NULLS, 0);
    }
    KW_FIRST() {
        return this.getToken(HiveSqlParser.KW_FIRST, 0);
    }
    KW_LAST() {
        return this.getToken(HiveSqlParser.KW_LAST, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_nullOrdering;
    }
    enterRule(listener) {
        if (listener.enterNullOrdering) {
            listener.enterNullOrdering(this);
        }
    }
    exitRule(listener) {
        if (listener.exitNullOrdering) {
            listener.exitNullOrdering(this);
        }
    }
    accept(visitor) {
        if (visitor.visitNullOrdering) {
            return visitor.visitNullOrdering(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameOrderContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    orderSpecification() {
        return this.getRuleContext(0, OrderSpecificationContext);
    }
    nullOrdering() {
        return this.getRuleContext(0, NullOrderingContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameOrder;
    }
    enterRule(listener) {
        if (listener.enterColumnNameOrder) {
            listener.enterColumnNameOrder(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameOrder) {
            listener.exitColumnNameOrder(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameOrder) {
            return visitor.visitColumnNameOrder(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameCommentListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameComment(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnNameCommentContext);
        }
        return this.getRuleContext(i, ColumnNameCommentContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameCommentList;
    }
    enterRule(listener) {
        if (listener.enterColumnNameCommentList) {
            listener.enterColumnNameCommentList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameCommentList) {
            listener.exitColumnNameCommentList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameCommentList) {
            return visitor.visitColumnNameCommentList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameCommentContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameCreate() {
        return this.getRuleContext(0, ColumnNameCreateContext);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameComment;
    }
    enterRule(listener) {
        if (listener.enterColumnNameComment) {
            listener.enterColumnNameComment(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameComment) {
            listener.exitColumnNameComment(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameComment) {
            return visitor.visitColumnNameComment(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnRefOrderContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    orderSpecification() {
        return this.getRuleContext(0, OrderSpecificationContext);
    }
    nullOrdering() {
        return this.getRuleContext(0, NullOrderingContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnRefOrder;
    }
    enterRule(listener) {
        if (listener.enterColumnRefOrder) {
            listener.enterColumnRefOrder(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnRefOrder) {
            listener.exitColumnRefOrder(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnRefOrder) {
            return visitor.visitColumnRefOrder(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnType() {
        return this.getRuleContext(0, ColumnTypeContext);
    }
    columnNameCreate() {
        return this.getRuleContext(0, ColumnNameCreateContext);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameType;
    }
    enterRule(listener) {
        if (listener.enterColumnNameType) {
            listener.enterColumnNameType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameType) {
            listener.exitColumnNameType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameType) {
            return visitor.visitColumnNameType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameTypeOrConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableConstraint() {
        return this.getRuleContext(0, TableConstraintContext);
    }
    columnNameTypeConstraint() {
        return this.getRuleContext(0, ColumnNameTypeConstraintContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameTypeOrConstraint;
    }
    enterRule(listener) {
        if (listener.enterColumnNameTypeOrConstraint) {
            listener.enterColumnNameTypeOrConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameTypeOrConstraint) {
            listener.exitColumnNameTypeOrConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameTypeOrConstraint) {
            return visitor.visitColumnNameTypeOrConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    createForeignKey() {
        return this.getRuleContext(0, CreateForeignKeyContext);
    }
    createConstraint() {
        return this.getRuleContext(0, CreateConstraintContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableConstraint;
    }
    enterRule(listener) {
        if (listener.enterTableConstraint) {
            listener.enterTableConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableConstraint) {
            listener.exitTableConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableConstraint) {
            return visitor.visitTableConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameTypeConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnNameCreate() {
        return this.getRuleContext(0, ColumnNameCreateContext);
    }
    columnType() {
        return this.getRuleContext(0, ColumnTypeContext);
    }
    columnConstraint() {
        return this.getRuleContext(0, ColumnConstraintContext);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameTypeConstraint;
    }
    enterRule(listener) {
        if (listener.enterColumnNameTypeConstraint) {
            listener.enterColumnNameTypeConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameTypeConstraint) {
            listener.exitColumnNameTypeConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameTypeConstraint) {
            return visitor.visitColumnNameTypeConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    foreignKeyConstraint() {
        return this.getRuleContext(0, ForeignKeyConstraintContext);
    }
    colConstraint() {
        return this.getRuleContext(0, ColConstraintContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnConstraint;
    }
    enterRule(listener) {
        if (listener.enterColumnConstraint) {
            listener.enterColumnConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnConstraint) {
            listener.exitColumnConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnConstraint) {
            return visitor.visitColumnConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ForeignKeyConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_REFERENCES() {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    constraintOptsCreate() {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_foreignKeyConstraint;
    }
    enterRule(listener) {
        if (listener.enterForeignKeyConstraint) {
            listener.enterForeignKeyConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitForeignKeyConstraint) {
            listener.exitForeignKeyConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitForeignKeyConstraint) {
            return visitor.visitForeignKeyConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnConstraintType() {
        return this.getRuleContext(0, ColumnConstraintTypeContext);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    constraintOptsCreate() {
        return this.getRuleContext(0, ConstraintOptsCreateContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_colConstraint;
    }
    enterRule(listener) {
        if (listener.enterColConstraint) {
            listener.enterColConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColConstraint) {
            listener.exitColConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColConstraint) {
            return visitor.visitColConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterColumnConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    alterForeignKeyConstraint() {
        return this.getRuleContext(0, AlterForeignKeyConstraintContext);
    }
    alterColConstraint() {
        return this.getRuleContext(0, AlterColConstraintContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterColumnConstraint;
    }
    enterRule(listener) {
        if (listener.enterAlterColumnConstraint) {
            listener.enterAlterColumnConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterColumnConstraint) {
            listener.exitAlterColumnConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterColumnConstraint) {
            return visitor.visitAlterColumnConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterForeignKeyConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_REFERENCES() {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    constraintOptsAlter() {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterForeignKeyConstraint;
    }
    enterRule(listener) {
        if (listener.enterAlterForeignKeyConstraint) {
            listener.enterAlterForeignKeyConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterForeignKeyConstraint) {
            listener.exitAlterForeignKeyConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterForeignKeyConstraint) {
            return visitor.visitAlterForeignKeyConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterColConstraintContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnConstraintType() {
        return this.getRuleContext(0, ColumnConstraintTypeContext);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    constraintOptsAlter() {
        return this.getRuleContext(0, ConstraintOptsAlterContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterColConstraint;
    }
    enterRule(listener) {
        if (listener.enterAlterColConstraint) {
            listener.enterAlterColConstraint(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterColConstraint) {
            listener.exitAlterColConstraint(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterColConstraint) {
            return visitor.visitAlterColConstraint(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnConstraintTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_NULL() {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    KW_DEFAULT() {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    defaultVal() {
        return this.getRuleContext(0, DefaultValContext);
    }
    checkConstraint() {
        return this.getRuleContext(0, CheckConstraintContext);
    }
    tableConstraintType() {
        return this.getRuleContext(0, TableConstraintTypeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnConstraintType;
    }
    enterRule(listener) {
        if (listener.enterColumnConstraintType) {
            listener.enterColumnConstraintType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnConstraintType) {
            listener.exitColumnConstraintType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnConstraintType) {
            return visitor.visitColumnConstraintType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DefaultValContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    constant() {
        return this.getRuleContext(0, ConstantContext);
    }
    function_() {
        return this.getRuleContext(0, Function_Context);
    }
    castExpression() {
        return this.getRuleContext(0, CastExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_defaultVal;
    }
    enterRule(listener) {
        if (listener.enterDefaultVal) {
            listener.enterDefaultVal(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDefaultVal) {
            listener.exitDefaultVal(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDefaultVal) {
            return visitor.visitDefaultVal(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableConstraintTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_PRIMARY() {
        return this.getToken(HiveSqlParser.KW_PRIMARY, 0);
    }
    KW_KEY() {
        return this.getToken(HiveSqlParser.KW_KEY, 0);
    }
    KW_UNIQUE() {
        return this.getToken(HiveSqlParser.KW_UNIQUE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableConstraintType;
    }
    enterRule(listener) {
        if (listener.enterTableConstraintType) {
            listener.enterTableConstraintType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableConstraintType) {
            listener.exitTableConstraintType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableConstraintType) {
            return visitor.visitTableConstraintType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ConstraintOptsCreateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    enableValidateSpecification() {
        return this.getRuleContext(0, EnableValidateSpecificationContext);
    }
    relySpecification() {
        return this.getRuleContext(0, RelySpecificationContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_constraintOptsCreate;
    }
    enterRule(listener) {
        if (listener.enterConstraintOptsCreate) {
            listener.enterConstraintOptsCreate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitConstraintOptsCreate) {
            listener.exitConstraintOptsCreate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitConstraintOptsCreate) {
            return visitor.visitConstraintOptsCreate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ConstraintOptsAlterContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    enableValidateSpecification() {
        return this.getRuleContext(0, EnableValidateSpecificationContext);
    }
    relySpecification() {
        return this.getRuleContext(0, RelySpecificationContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_constraintOptsAlter;
    }
    enterRule(listener) {
        if (listener.enterConstraintOptsAlter) {
            listener.enterConstraintOptsAlter(this);
        }
    }
    exitRule(listener) {
        if (listener.exitConstraintOptsAlter) {
            listener.exitConstraintOptsAlter(this);
        }
    }
    accept(visitor) {
        if (visitor.visitConstraintOptsAlter) {
            return visitor.visitConstraintOptsAlter(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnNameColonTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    COLON() {
        return this.getToken(HiveSqlParser.COLON, 0);
    }
    columnType() {
        return this.getRuleContext(0, ColumnTypeContext);
    }
    columnNameCreate() {
        return this.getRuleContext(0, ColumnNameCreateContext);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnNameColonType;
    }
    enterRule(listener) {
        if (listener.enterColumnNameColonType) {
            listener.enterColumnNameColonType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnNameColonType) {
            listener.exitColumnNameColonType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnNameColonType) {
            return visitor.visitColumnNameColonType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    type() {
        return this.getRuleContext(0, TypeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnType;
    }
    enterRule(listener) {
        if (listener.enterColumnType) {
            listener.enterColumnType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnType) {
            listener.exitColumnType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnType) {
            return visitor.visitColumnType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnTypeListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnType(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnTypeContext);
        }
        return this.getRuleContext(i, ColumnTypeContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnTypeList;
    }
    enterRule(listener) {
        if (listener.enterColumnTypeList) {
            listener.enterColumnTypeList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnTypeList) {
            listener.exitColumnTypeList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnTypeList) {
            return visitor.visitColumnTypeList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    primitiveType() {
        return this.getRuleContext(0, PrimitiveTypeContext);
    }
    listType() {
        return this.getRuleContext(0, ListTypeContext);
    }
    structType() {
        return this.getRuleContext(0, StructTypeContext);
    }
    mapType() {
        return this.getRuleContext(0, MapTypeContext);
    }
    unionType() {
        return this.getRuleContext(0, UnionTypeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_type;
    }
    enterRule(listener) {
        if (listener.enterType) {
            listener.enterType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitType) {
            listener.exitType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitType) {
            return visitor.visitType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrimitiveTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_TINYINT() {
        return this.getToken(HiveSqlParser.KW_TINYINT, 0);
    }
    KW_SMALLINT() {
        return this.getToken(HiveSqlParser.KW_SMALLINT, 0);
    }
    KW_INT() {
        return this.getToken(HiveSqlParser.KW_INT, 0);
    }
    KW_INTEGER() {
        return this.getToken(HiveSqlParser.KW_INTEGER, 0);
    }
    KW_BIGINT() {
        return this.getToken(HiveSqlParser.KW_BIGINT, 0);
    }
    KW_BOOLEAN() {
        return this.getToken(HiveSqlParser.KW_BOOLEAN, 0);
    }
    KW_FLOAT() {
        return this.getToken(HiveSqlParser.KW_FLOAT, 0);
    }
    KW_REAL() {
        return this.getToken(HiveSqlParser.KW_REAL, 0);
    }
    KW_DOUBLE() {
        return this.getToken(HiveSqlParser.KW_DOUBLE, 0);
    }
    KW_PRECISION() {
        return this.getToken(HiveSqlParser.KW_PRECISION, 0);
    }
    KW_DATE() {
        return this.getToken(HiveSqlParser.KW_DATE, 0);
    }
    KW_DATETIME() {
        return this.getToken(HiveSqlParser.KW_DATETIME, 0);
    }
    KW_TIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    KW_TIMESTAMPLOCALTZ() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_LOCAL() {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    KW_TIME() {
        return this.getToken(HiveSqlParser.KW_TIME, 0);
    }
    KW_ZONE() {
        return this.getToken(HiveSqlParser.KW_ZONE, 0);
    }
    KW_STRING() {
        return this.getToken(HiveSqlParser.KW_STRING, 0);
    }
    KW_BINARY() {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    decimal() {
        return this.getRuleContext(0, DecimalContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    Number(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.Number);
        }
        else {
            return this.getToken(HiveSqlParser.Number, i);
        }
    }
    COMMA() {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    KW_VARCHAR() {
        return this.getToken(HiveSqlParser.KW_VARCHAR, 0);
    }
    KW_CHAR() {
        return this.getToken(HiveSqlParser.KW_CHAR, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_primitiveType;
    }
    enterRule(listener) {
        if (listener.enterPrimitiveType) {
            listener.enterPrimitiveType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrimitiveType) {
            listener.exitPrimitiveType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrimitiveType) {
            return visitor.visitPrimitiveType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ListTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ARRAY() {
        return this.getToken(HiveSqlParser.KW_ARRAY, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    type() {
        return this.getRuleContext(0, TypeContext);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_listType;
    }
    enterRule(listener) {
        if (listener.enterListType) {
            listener.enterListType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitListType) {
            listener.exitListType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitListType) {
            return visitor.visitListType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class StructTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_STRUCT() {
        return this.getToken(HiveSqlParser.KW_STRUCT, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    columnNameColonTypeList() {
        return this.getRuleContext(0, ColumnNameColonTypeListContext);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_structType;
    }
    enterRule(listener) {
        if (listener.enterStructType) {
            listener.enterStructType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitStructType) {
            listener.exitStructType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitStructType) {
            return visitor.visitStructType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class MapTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_MAP() {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    COMMA() {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    primitiveType() {
        return this.getRuleContext(0, PrimitiveTypeContext);
    }
    type() {
        return this.getRuleContext(0, TypeContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_mapType;
    }
    enterRule(listener) {
        if (listener.enterMapType) {
            listener.enterMapType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitMapType) {
            listener.exitMapType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitMapType) {
            return visitor.visitMapType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class UnionTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_UNIONTYPE() {
        return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    columnTypeList() {
        return this.getRuleContext(0, ColumnTypeListContext);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_unionType;
    }
    enterRule(listener) {
        if (listener.enterUnionType) {
            listener.enterUnionType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitUnionType) {
            listener.exitUnionType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitUnionType) {
            return visitor.visitUnionType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SetOperatorContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_UNION() {
        return this.getToken(HiveSqlParser.KW_UNION, 0);
    }
    KW_INTERSECT() {
        return this.getToken(HiveSqlParser.KW_INTERSECT, 0);
    }
    KW_EXCEPT() {
        return this.getToken(HiveSqlParser.KW_EXCEPT, 0);
    }
    KW_MINUS() {
        return this.getToken(HiveSqlParser.KW_MINUS, 0);
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    KW_DISTINCT() {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_setOperator;
    }
    enterRule(listener) {
        if (listener.enterSetOperator) {
            listener.enterSetOperator(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSetOperator) {
            listener.exitSetOperator(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSetOperator) {
            return visitor.visitSetOperator(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class QueryStatementExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    queryStatementExpressionBody() {
        return this.getRuleContext(0, QueryStatementExpressionBodyContext);
    }
    withClause() {
        return this.getRuleContext(0, WithClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_queryStatementExpression;
    }
    enterRule(listener) {
        if (listener.enterQueryStatementExpression) {
            listener.enterQueryStatementExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitQueryStatementExpression) {
            listener.exitQueryStatementExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitQueryStatementExpression) {
            return visitor.visitQueryStatementExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class QueryStatementExpressionBodyContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    fromStatement() {
        return this.getRuleContext(0, FromStatementContext);
    }
    regularBody() {
        return this.getRuleContext(0, RegularBodyContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_queryStatementExpressionBody;
    }
    enterRule(listener) {
        if (listener.enterQueryStatementExpressionBody) {
            listener.enterQueryStatementExpressionBody(this);
        }
    }
    exitRule(listener) {
        if (listener.exitQueryStatementExpressionBody) {
            listener.exitQueryStatementExpressionBody(this);
        }
    }
    accept(visitor) {
        if (visitor.visitQueryStatementExpressionBody) {
            return visitor.visitQueryStatementExpressionBody(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WithClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    cteStatement(i) {
        if (i === undefined) {
            return this.getRuleContexts(CteStatementContext);
        }
        return this.getRuleContext(i, CteStatementContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_withClause;
    }
    enterRule(listener) {
        if (listener.enterWithClause) {
            listener.enterWithClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWithClause) {
            listener.exitWithClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWithClause) {
            return visitor.visitWithClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CteStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    queryStatementExpression() {
        return this.getRuleContext(0, QueryStatementExpressionContext);
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_cteStatement;
    }
    enterRule(listener) {
        if (listener.enterCteStatement) {
            listener.enterCteStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCteStatement) {
            listener.exitCteStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCteStatement) {
            return visitor.visitCteStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FromStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    singleFromStatement(i) {
        if (i === undefined) {
            return this.getRuleContexts(SingleFromStatementContext);
        }
        return this.getRuleContext(i, SingleFromStatementContext);
    }
    setOperator(i) {
        if (i === undefined) {
            return this.getRuleContexts(SetOperatorContext);
        }
        return this.getRuleContext(i, SetOperatorContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_fromStatement;
    }
    enterRule(listener) {
        if (listener.enterFromStatement) {
            listener.enterFromStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFromStatement) {
            listener.exitFromStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFromStatement) {
            return visitor.visitFromStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SingleFromStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_singleFromStatement;
    }
    copyFrom(ctx) {
        super.copyFrom(ctx);
    }
}
export class FromSelectStmtContext extends SingleFromStatementContext {
    constructor(ctx) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    fromClause() {
        return this.getRuleContext(0, FromClauseContext);
    }
    selectClause() {
        return this.getRuleContext(0, SelectClauseContext);
    }
    lateralView() {
        return this.getRuleContext(0, LateralViewContext);
    }
    whereClause() {
        return this.getRuleContext(0, WhereClauseContext);
    }
    groupByClause() {
        return this.getRuleContext(0, GroupByClauseContext);
    }
    havingClause() {
        return this.getRuleContext(0, HavingClauseContext);
    }
    window_clause() {
        return this.getRuleContext(0, Window_clauseContext);
    }
    qualifyClause() {
        return this.getRuleContext(0, QualifyClauseContext);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    clusterByClause() {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    distributeByClause() {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    sortByClause() {
        return this.getRuleContext(0, SortByClauseContext);
    }
    limitClause() {
        return this.getRuleContext(0, LimitClauseContext);
    }
    enterRule(listener) {
        if (listener.enterFromSelectStmt) {
            listener.enterFromSelectStmt(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFromSelectStmt) {
            listener.exitFromSelectStmt(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFromSelectStmt) {
            return visitor.visitFromSelectStmt(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FromInsertStmtContext extends SingleFromStatementContext {
    constructor(ctx) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    fromClause() {
        return this.getRuleContext(0, FromClauseContext);
    }
    insertClause() {
        return this.getRuleContext(0, InsertClauseContext);
    }
    selectClause() {
        return this.getRuleContext(0, SelectClauseContext);
    }
    lateralView() {
        return this.getRuleContext(0, LateralViewContext);
    }
    whereClause() {
        return this.getRuleContext(0, WhereClauseContext);
    }
    groupByClause() {
        return this.getRuleContext(0, GroupByClauseContext);
    }
    havingClause() {
        return this.getRuleContext(0, HavingClauseContext);
    }
    window_clause() {
        return this.getRuleContext(0, Window_clauseContext);
    }
    qualifyClause() {
        return this.getRuleContext(0, QualifyClauseContext);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    clusterByClause() {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    distributeByClause() {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    sortByClause() {
        return this.getRuleContext(0, SortByClauseContext);
    }
    limitClause() {
        return this.getRuleContext(0, LimitClauseContext);
    }
    enterRule(listener) {
        if (listener.enterFromInsertStmt) {
            listener.enterFromInsertStmt(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFromInsertStmt) {
            listener.exitFromInsertStmt(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFromInsertStmt) {
            return visitor.visitFromInsertStmt(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RegularBodyContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_regularBody;
    }
    copyFrom(ctx) {
        super.copyFrom(ctx);
    }
}
export class InsertStmtContext extends RegularBodyContext {
    constructor(ctx) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    insertClause() {
        return this.getRuleContext(0, InsertClauseContext);
    }
    selectStatement() {
        return this.getRuleContext(0, SelectStatementContext);
    }
    enterRule(listener) {
        if (listener.enterInsertStmt) {
            listener.enterInsertStmt(this);
        }
    }
    exitRule(listener) {
        if (listener.exitInsertStmt) {
            listener.exitInsertStmt(this);
        }
    }
    accept(visitor) {
        if (visitor.visitInsertStmt) {
            return visitor.visitInsertStmt(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectStmtContext extends RegularBodyContext {
    constructor(ctx) {
        super(ctx.parent, ctx.invokingState);
        super.copyFrom(ctx);
    }
    selectStatement() {
        return this.getRuleContext(0, SelectStatementContext);
    }
    enterRule(listener) {
        if (listener.enterSelectStmt) {
            listener.enterSelectStmt(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectStmt) {
            listener.exitSelectStmt(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectStmt) {
            return visitor.visitSelectStmt(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AtomSelectStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    selectClause() {
        return this.getRuleContext(0, SelectClauseContext);
    }
    fromClause() {
        return this.getRuleContext(0, FromClauseContext);
    }
    whereClause() {
        return this.getRuleContext(0, WhereClauseContext);
    }
    groupByClause() {
        return this.getRuleContext(0, GroupByClauseContext);
    }
    havingClause() {
        return this.getRuleContext(0, HavingClauseContext);
    }
    window_clause() {
        return this.getRuleContext(0, Window_clauseContext);
    }
    qualifyClause() {
        return this.getRuleContext(0, QualifyClauseContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    selectStatement() {
        return this.getRuleContext(0, SelectStatementContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    valuesClause() {
        return this.getRuleContext(0, ValuesClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_atomSelectStatement;
    }
    enterRule(listener) {
        if (listener.enterAtomSelectStatement) {
            listener.enterAtomSelectStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAtomSelectStatement) {
            listener.exitAtomSelectStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAtomSelectStatement) {
            return visitor.visitAtomSelectStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    atomSelectStatement() {
        return this.getRuleContext(0, AtomSelectStatementContext);
    }
    setOpSelectStatement() {
        return this.getRuleContext(0, SetOpSelectStatementContext);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    clusterByClause() {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    distributeByClause() {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    sortByClause() {
        return this.getRuleContext(0, SortByClauseContext);
    }
    limitClause() {
        return this.getRuleContext(0, LimitClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectStatement;
    }
    enterRule(listener) {
        if (listener.enterSelectStatement) {
            listener.enterSelectStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectStatement) {
            listener.exitSelectStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectStatement) {
            return visitor.visitSelectStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SetOpSelectStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    setOperator(i) {
        if (i === undefined) {
            return this.getRuleContexts(SetOperatorContext);
        }
        return this.getRuleContext(i, SetOperatorContext);
    }
    atomSelectStatement(i) {
        if (i === undefined) {
            return this.getRuleContexts(AtomSelectStatementContext);
        }
        return this.getRuleContext(i, AtomSelectStatementContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_setOpSelectStatement;
    }
    enterRule(listener) {
        if (listener.enterSetOpSelectStatement) {
            listener.enterSetOpSelectStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSetOpSelectStatement) {
            listener.exitSetOpSelectStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSetOpSelectStatement) {
            return visitor.visitSetOpSelectStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectStatementWithCTEContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    selectStatement() {
        return this.getRuleContext(0, SelectStatementContext);
    }
    withClause() {
        return this.getRuleContext(0, WithClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectStatementWithCTE;
    }
    enterRule(listener) {
        if (listener.enterSelectStatementWithCTE) {
            listener.enterSelectStatementWithCTE(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectStatementWithCTE) {
            listener.exitSelectStatementWithCTE(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectStatementWithCTE) {
            return visitor.visitSelectStatementWithCTE(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class InsertClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_INSERT() {
        return this.getToken(HiveSqlParser.KW_INSERT, 0);
    }
    KW_OVERWRITE() {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    destination() {
        return this.getRuleContext(0, DestinationContext);
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    columnNameList() {
        return this.getRuleContext(0, ColumnNameListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_insertClause;
    }
    enterRule(listener) {
        if (listener.enterInsertClause) {
            listener.enterInsertClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitInsertClause) {
            listener.exitInsertClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitInsertClause) {
            return visitor.visitInsertClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DestinationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DIRECTORY() {
        return this.getToken(HiveSqlParser.KW_DIRECTORY, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    tableRowFormat() {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    tableFileFormat() {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    KW_LOCAL() {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_destination;
    }
    enterRule(listener) {
        if (listener.enterDestination) {
            listener.enterDestination(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDestination) {
            listener.exitDestination(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDestination) {
            return visitor.visitDestination(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LimitClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LIMIT() {
        return this.getToken(HiveSqlParser.KW_LIMIT, 0);
    }
    KW_OFFSET() {
        return this.getToken(HiveSqlParser.KW_OFFSET, 0);
    }
    Number(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.Number);
        }
        else {
            return this.getToken(HiveSqlParser.Number, i);
        }
    }
    COMMA() {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_limitClause;
    }
    enterRule(listener) {
        if (listener.enterLimitClause) {
            listener.enterLimitClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLimitClause) {
            listener.exitLimitClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLimitClause) {
            return visitor.visitLimitClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ColumnAssignmentClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    precedencePlusExpressionOrDefault() {
        return this.getRuleContext(0, PrecedencePlusExpressionOrDefaultContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_columnAssignmentClause;
    }
    enterRule(listener) {
        if (listener.enterColumnAssignmentClause) {
            listener.enterColumnAssignmentClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitColumnAssignmentClause) {
            listener.exitColumnAssignmentClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitColumnAssignmentClause) {
            return visitor.visitColumnAssignmentClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedencePlusExpressionOrDefaultContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DEFAULT() {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    precedencePlusExpression() {
        return this.getRuleContext(0, PrecedencePlusExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedencePlusExpressionOrDefault;
    }
    enterRule(listener) {
        if (listener.enterPrecedencePlusExpressionOrDefault) {
            listener.enterPrecedencePlusExpressionOrDefault(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedencePlusExpressionOrDefault) {
            listener.exitPrecedencePlusExpressionOrDefault(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedencePlusExpressionOrDefault) {
            return visitor.visitPrecedencePlusExpressionOrDefault(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SetColumnsClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    columnAssignmentClause(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnAssignmentClauseContext);
        }
        return this.getRuleContext(i, ColumnAssignmentClauseContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_setColumnsClause;
    }
    enterRule(listener) {
        if (listener.enterSetColumnsClause) {
            listener.enterSetColumnsClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSetColumnsClause) {
            listener.exitSetColumnsClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSetColumnsClause) {
            return visitor.visitSetColumnsClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SqlTransactionStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_START() {
        return this.getToken(HiveSqlParser.KW_START, 0);
    }
    KW_TRANSACTION() {
        return this.getToken(HiveSqlParser.KW_TRANSACTION, 0);
    }
    transactionMode(i) {
        if (i === undefined) {
            return this.getRuleContexts(TransactionModeContext);
        }
        return this.getRuleContext(i, TransactionModeContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    KW_COMMIT() {
        return this.getToken(HiveSqlParser.KW_COMMIT, 0);
    }
    KW_WORK() {
        return this.getToken(HiveSqlParser.KW_WORK, 0);
    }
    KW_ROLLBACK() {
        return this.getToken(HiveSqlParser.KW_ROLLBACK, 0);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_AUTOCOMMIT() {
        return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0);
    }
    KW_TRUE() {
        return this.getToken(HiveSqlParser.KW_TRUE, 0);
    }
    KW_FALSE() {
        return this.getToken(HiveSqlParser.KW_FALSE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_sqlTransactionStatement;
    }
    enterRule(listener) {
        if (listener.enterSqlTransactionStatement) {
            listener.enterSqlTransactionStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSqlTransactionStatement) {
            listener.exitSqlTransactionStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSqlTransactionStatement) {
            return visitor.visitSqlTransactionStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TransactionModeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ISOLATION() {
        return this.getToken(HiveSqlParser.KW_ISOLATION, 0);
    }
    KW_LEVEL() {
        return this.getToken(HiveSqlParser.KW_LEVEL, 0);
    }
    KW_SNAPSHOT() {
        return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0);
    }
    KW_READ() {
        return this.getToken(HiveSqlParser.KW_READ, 0);
    }
    KW_ONLY() {
        return this.getToken(HiveSqlParser.KW_ONLY, 0);
    }
    KW_WRITE() {
        return this.getToken(HiveSqlParser.KW_WRITE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_transactionMode;
    }
    enterRule(listener) {
        if (listener.enterTransactionMode) {
            listener.enterTransactionMode(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTransactionMode) {
            listener.exitTransactionMode(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTransactionMode) {
            return visitor.visitTransactionMode(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WhenClausesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    whenMatchedAndClause(i) {
        if (i === undefined) {
            return this.getRuleContexts(WhenMatchedAndClauseContext);
        }
        return this.getRuleContext(i, WhenMatchedAndClauseContext);
    }
    whenMatchedThenClause(i) {
        if (i === undefined) {
            return this.getRuleContexts(WhenMatchedThenClauseContext);
        }
        return this.getRuleContext(i, WhenMatchedThenClauseContext);
    }
    whenNotMatchedClause() {
        return this.getRuleContext(0, WhenNotMatchedClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_whenClauses;
    }
    enterRule(listener) {
        if (listener.enterWhenClauses) {
            listener.enterWhenClauses(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWhenClauses) {
            listener.exitWhenClauses(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWhenClauses) {
            return visitor.visitWhenClauses(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WhenNotMatchedClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WHEN() {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_MATCHED() {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0);
    }
    KW_THEN() {
        return this.getToken(HiveSqlParser.KW_THEN, 0);
    }
    KW_INSERT() {
        return this.getToken(HiveSqlParser.KW_INSERT, 0);
    }
    KW_VALUES() {
        return this.getToken(HiveSqlParser.KW_VALUES, 0);
    }
    expressionsInParenthesis() {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    KW_AND() {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    columnParenthesesList() {
        return this.getRuleContext(0, ColumnParenthesesListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_whenNotMatchedClause;
    }
    enterRule(listener) {
        if (listener.enterWhenNotMatchedClause) {
            listener.enterWhenNotMatchedClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWhenNotMatchedClause) {
            listener.exitWhenNotMatchedClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWhenNotMatchedClause) {
            return visitor.visitWhenNotMatchedClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WhenMatchedAndClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WHEN() {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    KW_MATCHED() {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0);
    }
    KW_AND() {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    KW_THEN() {
        return this.getToken(HiveSqlParser.KW_THEN, 0);
    }
    KW_UPDATE() {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    setColumnsClause() {
        return this.getRuleContext(0, SetColumnsClauseContext);
    }
    KW_DELETE() {
        return this.getToken(HiveSqlParser.KW_DELETE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_whenMatchedAndClause;
    }
    enterRule(listener) {
        if (listener.enterWhenMatchedAndClause) {
            listener.enterWhenMatchedAndClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWhenMatchedAndClause) {
            listener.exitWhenMatchedAndClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWhenMatchedAndClause) {
            return visitor.visitWhenMatchedAndClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WhenMatchedThenClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WHEN() {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    KW_MATCHED() {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0);
    }
    KW_THEN() {
        return this.getToken(HiveSqlParser.KW_THEN, 0);
    }
    KW_UPDATE() {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    setColumnsClause() {
        return this.getRuleContext(0, SetColumnsClauseContext);
    }
    KW_DELETE() {
        return this.getToken(HiveSqlParser.KW_DELETE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_whenMatchedThenClause;
    }
    enterRule(listener) {
        if (listener.enterWhenMatchedThenClause) {
            listener.enterWhenMatchedThenClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWhenMatchedThenClause) {
            listener.exitWhenMatchedThenClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWhenMatchedThenClause) {
            return visitor.visitWhenMatchedThenClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CompactionPoolContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_POOL() {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_compactionPool;
    }
    enterRule(listener) {
        if (listener.enterCompactionPool) {
            listener.enterCompactionPool(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCompactionPool) {
            listener.exitCompactionPool(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCompactionPool) {
            return visitor.visitCompactionPool(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CompactionTypeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_TYPE() {
        return this.getToken(HiveSqlParser.KW_TYPE, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_compactionType;
    }
    enterRule(listener) {
        if (listener.enterCompactionType) {
            listener.enterCompactionType(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCompactionType) {
            listener.exitCompactionType(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCompactionType) {
            return visitor.visitCompactionType(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CompactionStatusContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_STATUS() {
        return this.getToken(HiveSqlParser.KW_STATUS, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_compactionStatus;
    }
    enterRule(listener) {
        if (listener.enterCompactionStatus) {
            listener.enterCompactionStatus(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCompactionStatus) {
            listener.exitCompactionStatus(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCompactionStatus) {
            return visitor.visitCompactionStatus(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ALTER() {
        return this.getToken(HiveSqlParser.KW_ALTER, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    alterTableStatementSuffix() {
        return this.getRuleContext(0, AlterTableStatementSuffixContext);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    viewName() {
        return this.getRuleContext(0, ViewNameContext);
    }
    alterViewStatementSuffix() {
        return this.getRuleContext(0, AlterViewStatementSuffixContext);
    }
    KW_MATERIALIZED() {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    db_schema() {
        return this.getRuleContext(0, Db_schemaContext);
    }
    alterDatabaseStatementSuffix() {
        return this.getRuleContext(0, AlterDatabaseStatementSuffixContext);
    }
    KW_DATACONNECTOR() {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0);
    }
    alterDataConnectorStatementSuffix() {
        return this.getRuleContext(0, AlterDataConnectorStatementSuffixContext);
    }
    KW_INDEX() {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    tableOrPartition() {
        return this.getRuleContext(0, TableOrPartitionContext);
    }
    KW_REBUILD() {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    rewriteEnabled() {
        return this.getRuleContext(0, RewriteEnabledContext);
    }
    rewriteDisabled() {
        return this.getRuleContext(0, RewriteDisabledContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterStatement;
    }
    enterRule(listener) {
        if (listener.enterAlterStatement) {
            listener.enterAlterStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterStatement) {
            listener.exitAlterStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterStatement) {
            return visitor.visitAlterStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterTableStatementSuffixContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_RENAME() {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    tableNameCreate() {
        return this.getRuleContext(0, TableNameCreateContext);
    }
    KW_RECOVER() {
        return this.getToken(HiveSqlParser.KW_RECOVER, 0);
    }
    KW_PARTITIONS() {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    alterStatementSuffixDropPartitions() {
        return this.getRuleContext(0, AlterStatementSuffixDropPartitionsContext);
    }
    KW_ADD() {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    partitionSpec(i) {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSpecContext);
        }
        return this.getRuleContext(i, PartitionSpecContext);
    }
    locationPath(i) {
        if (i === undefined) {
            return this.getRuleContexts(LocationPathContext);
        }
        return this.getRuleContext(i, LocationPathContext);
    }
    KW_TOUCH() {
        return this.getToken(HiveSqlParser.KW_TOUCH, 0);
    }
    KW_ARCHIVE() {
        return this.getToken(HiveSqlParser.KW_ARCHIVE, 0);
    }
    KW_UNARCHIVE() {
        return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_TBLPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    KW_UNSET() {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    tableSkewed() {
        return this.getRuleContext(0, TableSkewedContext);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_SKEWED() {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0);
    }
    storedAsDirs() {
        return this.getRuleContext(0, StoredAsDirsContext);
    }
    KW_EXCHANGE() {
        return this.getToken(HiveSqlParser.KW_EXCHANGE, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    KW_PARTITION() {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0);
    }
    KW_COLUMN() {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameType() {
        return this.getRuleContext(0, ColumnNameTypeContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_CONSTRAINT() {
        return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    alterConstraintWithName() {
        return this.getRuleContext(0, AlterConstraintWithNameContext);
    }
    alterForeignKeyWithName() {
        return this.getRuleContext(0, AlterForeignKeyWithNameContext);
    }
    alterTblPartitionStatementSuffix() {
        return this.getRuleContext(0, AlterTblPartitionStatementSuffixContext);
    }
    KW_OWNER() {
        return this.getToken(HiveSqlParser.KW_OWNER, 0);
    }
    principalName() {
        return this.getRuleContext(0, PrincipalNameContext);
    }
    KW_SPEC() {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    partitionTransformSpec() {
        return this.getRuleContext(0, PartitionTransformSpecContext);
    }
    alterStatementSuffixExecute() {
        return this.getRuleContext(0, AlterStatementSuffixExecuteContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterTableStatementSuffix;
    }
    enterRule(listener) {
        if (listener.enterAlterTableStatementSuffix) {
            listener.enterAlterTableStatementSuffix(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterTableStatementSuffix) {
            listener.exitAlterTableStatementSuffix(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterTableStatementSuffix) {
            return visitor.visitAlterTableStatementSuffix(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterTblPartitionStatementSuffixContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_FILEFORMAT() {
        return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0);
    }
    fileFormat() {
        return this.getRuleContext(0, FileFormatContext);
    }
    KW_LOCATION() {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_CONCATENATE() {
        return this.getToken(HiveSqlParser.KW_CONCATENATE, 0);
    }
    KW_SERDE() {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    KW_SERDEPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_UNSET() {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    KW_RENAME() {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    partitionSpec() {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    KW_BUCKETS() {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    KW_SKEWED() {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    skewedLocationMap(i) {
        if (i === undefined) {
            return this.getRuleContexts(SkewedLocationMapContext);
        }
        return this.getRuleContext(i, SkewedLocationMapContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_CLUSTERED() {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0);
    }
    KW_SORTED() {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    tableBuckets() {
        return this.getRuleContext(0, TableBucketsContext);
    }
    KW_COMPACT() {
        return this.getToken(HiveSqlParser.KW_COMPACT, 0);
    }
    KW_AND() {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    KW_WAIT() {
        return this.getToken(HiveSqlParser.KW_WAIT, 0);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    compactionPool() {
        return this.getRuleContext(0, CompactionPoolContext);
    }
    KW_OVERWRITE() {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    KW_TBLPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    KW_UPDATE() {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    KW_STATISTICS() {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0);
    }
    KW_FOR() {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    KW_COLUMN() {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    KW_CHANGE() {
        return this.getToken(HiveSqlParser.KW_CHANGE, 0);
    }
    columnType() {
        return this.getRuleContext(0, ColumnTypeContext);
    }
    columnNameCreate() {
        return this.getRuleContext(0, ColumnNameCreateContext);
    }
    alterColumnConstraint() {
        return this.getRuleContext(0, AlterColumnConstraintContext);
    }
    KW_AFTER() {
        return this.getToken(HiveSqlParser.KW_AFTER, 0);
    }
    restrictOrCascade() {
        return this.getRuleContext(0, RestrictOrCascadeContext);
    }
    KW_FIRST() {
        return this.getToken(HiveSqlParser.KW_FIRST, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_COLUMNS() {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    columnNameTypeList() {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    KW_ADD() {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    KW_REPLACE() {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    enableSpecification() {
        return this.getRuleContext(0, EnableSpecificationContext);
    }
    KW_OFFLINE() {
        return this.getToken(HiveSqlParser.KW_OFFLINE, 0);
    }
    KW_NO_DROP() {
        return this.getToken(HiveSqlParser.KW_NO_DROP, 0);
    }
    KW_CASCADE() {
        return this.getToken(HiveSqlParser.KW_CASCADE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterTblPartitionStatementSuffix;
    }
    enterRule(listener) {
        if (listener.enterAlterTblPartitionStatementSuffix) {
            listener.enterAlterTblPartitionStatementSuffix(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterTblPartitionStatementSuffix) {
            listener.exitAlterTblPartitionStatementSuffix(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterTblPartitionStatementSuffix) {
            return visitor.visitAlterTblPartitionStatementSuffix(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterViewStatementSuffixContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_TBLPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    KW_UNSET() {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    KW_RENAME() {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    tableNameCreate() {
        return this.getRuleContext(0, TableNameCreateContext);
    }
    KW_ADD() {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    partitionSpec(i) {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSpecContext);
        }
        return this.getRuleContext(i, PartitionSpecContext);
    }
    locationPath(i) {
        if (i === undefined) {
            return this.getRuleContexts(LocationPathContext);
        }
        return this.getRuleContext(i, LocationPathContext);
    }
    alterStatementSuffixDropPartitions() {
        return this.getRuleContext(0, AlterStatementSuffixDropPartitionsContext);
    }
    selectStatementWithCTE() {
        return this.getRuleContext(0, SelectStatementWithCTEContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterViewStatementSuffix;
    }
    enterRule(listener) {
        if (listener.enterAlterViewStatementSuffix) {
            listener.enterAlterViewStatementSuffix(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterViewStatementSuffix) {
            listener.exitAlterViewStatementSuffix(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterViewStatementSuffix) {
            return visitor.visitAlterViewStatementSuffix(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterDatabaseStatementSuffixContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_DBPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0);
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    KW_OWNER() {
        return this.getToken(HiveSqlParser.KW_OWNER, 0);
    }
    principalAlterName() {
        return this.getRuleContext(0, PrincipalAlterNameContext);
    }
    KW_LOCATION() {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    KW_MANAGEDLOCATION() {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterDatabaseStatementSuffix;
    }
    enterRule(listener) {
        if (listener.enterAlterDatabaseStatementSuffix) {
            listener.enterAlterDatabaseStatementSuffix(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterDatabaseStatementSuffix) {
            listener.exitAlterDatabaseStatementSuffix(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterDatabaseStatementSuffix) {
            return visitor.visitAlterDatabaseStatementSuffix(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterDataConnectorStatementSuffixContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_DCPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0);
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    dbSchemaName() {
        return this.getRuleContext(0, DbSchemaNameContext);
    }
    KW_OWNER() {
        return this.getToken(HiveSqlParser.KW_OWNER, 0);
    }
    principalAlterName() {
        return this.getRuleContext(0, PrincipalAlterNameContext);
    }
    KW_URL() {
        return this.getToken(HiveSqlParser.KW_URL, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterDataConnectorStatementSuffix;
    }
    enterRule(listener) {
        if (listener.enterAlterDataConnectorStatementSuffix) {
            listener.enterAlterDataConnectorStatementSuffix(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterDataConnectorStatementSuffix) {
            listener.exitAlterDataConnectorStatementSuffix(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterDataConnectorStatementSuffix) {
            return visitor.visitAlterDataConnectorStatementSuffix(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LocationPathContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LOCATION() {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_locationPath;
    }
    enterRule(listener) {
        if (listener.enterLocationPath) {
            listener.enterLocationPath(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLocationPath) {
            listener.exitLocationPath(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLocationPath) {
            return visitor.visitLocationPath(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterStatementSuffixDropPartitionsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_PARTITION(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_PARTITION);
        }
        else {
            return this.getToken(HiveSqlParser.KW_PARTITION, i);
        }
    }
    partitionSelectorSpec(i) {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSelectorSpecContext);
        }
        return this.getRuleContext(i, PartitionSelectorSpecContext);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    KW_IGNORE() {
        return this.getToken(HiveSqlParser.KW_IGNORE, 0);
    }
    KW_PROTECTION() {
        return this.getToken(HiveSqlParser.KW_PROTECTION, 0);
    }
    KW_PURGE() {
        return this.getToken(HiveSqlParser.KW_PURGE, 0);
    }
    replicationClause() {
        return this.getRuleContext(0, ReplicationClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterStatementSuffixDropPartitions;
    }
    enterRule(listener) {
        if (listener.enterAlterStatementSuffixDropPartitions) {
            listener.enterAlterStatementSuffixDropPartitions(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterStatementSuffixDropPartitions) {
            listener.exitAlterStatementSuffixDropPartitions(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterStatementSuffixDropPartitions) {
            return visitor.visitAlterStatementSuffixDropPartitions(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SkewedLocationMapContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    constant() {
        return this.getRuleContext(0, ConstantContext);
    }
    skewedColumnValuePair() {
        return this.getRuleContext(0, SkewedColumnValuePairContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_skewedLocationMap;
    }
    enterRule(listener) {
        if (listener.enterSkewedLocationMap) {
            listener.enterSkewedLocationMap(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSkewedLocationMap) {
            listener.exitSkewedLocationMap(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSkewedLocationMap) {
            return visitor.visitSkewedLocationMap(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AlterStatementSuffixExecuteContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_EXECUTE() {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_ROLLBACK() {
        return this.getToken(HiveSqlParser.KW_ROLLBACK, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    KW_EXPIRE_SNAPSHOTS() {
        return this.getToken(HiveSqlParser.KW_EXPIRE_SNAPSHOTS, 0);
    }
    KW_SET_CURRENT_SNAPSHOT() {
        return this.getToken(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_alterStatementSuffixExecute;
    }
    enterRule(listener) {
        if (listener.enterAlterStatementSuffixExecute) {
            listener.enterAlterStatementSuffixExecute(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAlterStatementSuffixExecute) {
            listener.exitAlterStatementSuffixExecute(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAlterStatementSuffixExecute) {
            return visitor.visitAlterStatementSuffixExecute(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FileFormatContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_INPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    KW_OUTPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_OUTPUTFORMAT, 0);
    }
    KW_SERDE() {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    KW_INPUTDRIVER() {
        return this.getToken(HiveSqlParser.KW_INPUTDRIVER, 0);
    }
    KW_OUTPUTDRIVER() {
        return this.getToken(HiveSqlParser.KW_OUTPUTDRIVER, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_fileFormat;
    }
    enterRule(listener) {
        if (listener.enterFileFormat) {
            listener.enterFileFormat(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFileFormat) {
            listener.exitFileFormat(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFileFormat) {
            return visitor.visitFileFormat(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LikeTableOrFileContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    KW_FILE() {
        return this.getToken(HiveSqlParser.KW_FILE, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_likeTableOrFile;
    }
    enterRule(listener) {
        if (listener.enterLikeTableOrFile) {
            listener.enterLikeTableOrFile(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLikeTableOrFile) {
            listener.exitLikeTableOrFile(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLikeTableOrFile) {
            return visitor.visitLikeTableOrFile(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateTableStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    tableNameCreate() {
        return this.getRuleContext(0, TableNameCreateContext);
    }
    likeTableOrFile() {
        return this.getRuleContext(0, LikeTableOrFileContext);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    KW_TEMPORARY() {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    KW_TRANSACTIONAL() {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONAL, 0);
    }
    KW_EXTERNAL() {
        return this.getToken(HiveSqlParser.KW_EXTERNAL, 0);
    }
    createTablePartitionSpec() {
        return this.getRuleContext(0, CreateTablePartitionSpecContext);
    }
    tableRowFormat() {
        return this.getRuleContext(0, TableRowFormatContext);
    }
    tableFileFormat() {
        return this.getRuleContext(0, TableFileFormatContext);
    }
    locationPath() {
        return this.getRuleContext(0, LocationPathContext);
    }
    tablePropertiesPrefixed() {
        return this.getRuleContext(0, TablePropertiesPrefixedContext);
    }
    tableLifecycle() {
        return this.getRuleContext(0, TableLifecycleContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnNameTypeOrConstraintList() {
        return this.getRuleContext(0, ColumnNameTypeOrConstraintListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    tableComment() {
        return this.getRuleContext(0, TableCommentContext);
    }
    tableBuckets() {
        return this.getRuleContext(0, TableBucketsContext);
    }
    tableSkewed() {
        return this.getRuleContext(0, TableSkewedContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    selectStatementWithCTE() {
        return this.getRuleContext(0, SelectStatementWithCTEContext);
    }
    KW_MANAGED() {
        return this.getToken(HiveSqlParser.KW_MANAGED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createTableStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateTableStatement) {
            listener.enterCreateTableStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateTableStatement) {
            listener.exitCreateTableStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateTableStatement) {
            return visitor.visitCreateTableStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CreateDataConnectorStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_DATACONNECTOR() {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    KW_TYPE() {
        return this.getToken(HiveSqlParser.KW_TYPE, 0);
    }
    KW_URL() {
        return this.getToken(HiveSqlParser.KW_URL, 0);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_DCPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    keyValueProperties() {
        return this.getRuleContext(0, KeyValuePropertiesContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_createDataConnectorStatement;
    }
    enterRule(listener) {
        if (listener.enterCreateDataConnectorStatement) {
            listener.enterCreateDataConnectorStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCreateDataConnectorStatement) {
            listener.exitCreateDataConnectorStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCreateDataConnectorStatement) {
            return visitor.visitCreateDataConnectorStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DropDataConnectorStatementContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_DATACONNECTOR() {
        return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dropDataConnectorStatement;
    }
    enterRule(listener) {
        if (listener.enterDropDataConnectorStatement) {
            listener.enterDropDataConnectorStatement(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDropDataConnectorStatement) {
            listener.exitDropDataConnectorStatement(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDropDataConnectorStatement) {
            return visitor.visitDropDataConnectorStatement(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableAllColumnsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    STAR() {
        return this.getToken(HiveSqlParser.STAR, 0);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableAllColumns;
    }
    enterRule(listener) {
        if (listener.enterTableAllColumns) {
            listener.enterTableAllColumns(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableAllColumns) {
            listener.exitTableAllColumns(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableAllColumns) {
            return visitor.visitTableAllColumns(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExpressionListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_expressionList;
    }
    enterRule(listener) {
        if (listener.enterExpressionList) {
            listener.enterExpressionList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExpressionList) {
            listener.exitExpressionList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExpressionList) {
            return visitor.visitExpressionList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AliasListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_aliasList;
    }
    enterRule(listener) {
        if (listener.enterAliasList) {
            listener.enterAliasList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAliasList) {
            listener.exitAliasList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAliasList) {
            return visitor.visitAliasList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FromClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    fromSource() {
        return this.getRuleContext(0, FromSourceContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_fromClause;
    }
    enterRule(listener) {
        if (listener.enterFromClause) {
            listener.enterFromClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFromClause) {
            listener.exitFromClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFromClause) {
            return visitor.visitFromClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FromSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_UNIQUEJOIN() {
        return this.getToken(HiveSqlParser.KW_UNIQUEJOIN, 0);
    }
    uniqueJoinSource(i) {
        if (i === undefined) {
            return this.getRuleContexts(UniqueJoinSourceContext);
        }
        return this.getRuleContext(i, UniqueJoinSourceContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    joinSource() {
        return this.getRuleContext(0, JoinSourceContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_fromSource;
    }
    enterRule(listener) {
        if (listener.enterFromSource) {
            listener.enterFromSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFromSource) {
            listener.exitFromSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFromSource) {
            return visitor.visitFromSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AtomjoinSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableSource() {
        return this.getRuleContext(0, TableSourceContext);
    }
    lateralView(i) {
        if (i === undefined) {
            return this.getRuleContexts(LateralViewContext);
        }
        return this.getRuleContext(i, LateralViewContext);
    }
    virtualTableSource() {
        return this.getRuleContext(0, VirtualTableSourceContext);
    }
    subQuerySource() {
        return this.getRuleContext(0, SubQuerySourceContext);
    }
    partitionedTableFunction() {
        return this.getRuleContext(0, PartitionedTableFunctionContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    joinSource() {
        return this.getRuleContext(0, JoinSourceContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_atomjoinSource;
    }
    enterRule(listener) {
        if (listener.enterAtomjoinSource) {
            listener.enterAtomjoinSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAtomjoinSource) {
            listener.exitAtomjoinSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAtomjoinSource) {
            return visitor.visitAtomjoinSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class JoinSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    atomjoinSource() {
        return this.getRuleContext(0, AtomjoinSourceContext);
    }
    joinToken(i) {
        if (i === undefined) {
            return this.getRuleContexts(JoinTokenContext);
        }
        return this.getRuleContext(i, JoinTokenContext);
    }
    joinSourcePart(i) {
        if (i === undefined) {
            return this.getRuleContexts(JoinSourcePartContext);
        }
        return this.getRuleContext(i, JoinSourcePartContext);
    }
    KW_ON(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_ON);
        }
        else {
            return this.getToken(HiveSqlParser.KW_ON, i);
        }
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    KW_USING(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_USING);
        }
        else {
            return this.getToken(HiveSqlParser.KW_USING, i);
        }
    }
    columnParenthesesList(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnParenthesesListContext);
        }
        return this.getRuleContext(i, ColumnParenthesesListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_joinSource;
    }
    enterRule(listener) {
        if (listener.enterJoinSource) {
            listener.enterJoinSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitJoinSource) {
            listener.exitJoinSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitJoinSource) {
            return visitor.visitJoinSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class JoinSourcePartContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableSource() {
        return this.getRuleContext(0, TableSourceContext);
    }
    virtualTableSource() {
        return this.getRuleContext(0, VirtualTableSourceContext);
    }
    subQuerySource() {
        return this.getRuleContext(0, SubQuerySourceContext);
    }
    partitionedTableFunction() {
        return this.getRuleContext(0, PartitionedTableFunctionContext);
    }
    lateralView(i) {
        if (i === undefined) {
            return this.getRuleContexts(LateralViewContext);
        }
        return this.getRuleContext(i, LateralViewContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_joinSourcePart;
    }
    enterRule(listener) {
        if (listener.enterJoinSourcePart) {
            listener.enterJoinSourcePart(this);
        }
    }
    exitRule(listener) {
        if (listener.exitJoinSourcePart) {
            listener.exitJoinSourcePart(this);
        }
    }
    accept(visitor) {
        if (visitor.visitJoinSourcePart) {
            return visitor.visitJoinSourcePart(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class UniqueJoinSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    expressionList() {
        return this.getRuleContext(0, ExpressionListContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    tableOrView() {
        return this.getRuleContext(0, TableOrViewContext);
    }
    KW_PRESERVE() {
        return this.getToken(HiveSqlParser.KW_PRESERVE, 0);
    }
    tableSample() {
        return this.getRuleContext(0, TableSampleContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_uniqueJoinSource;
    }
    enterRule(listener) {
        if (listener.enterUniqueJoinSource) {
            listener.enterUniqueJoinSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitUniqueJoinSource) {
            listener.exitUniqueJoinSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitUniqueJoinSource) {
            return visitor.visitUniqueJoinSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class JoinTokenContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    COMMA() {
        return this.getToken(HiveSqlParser.COMMA, 0);
    }
    KW_JOIN() {
        return this.getToken(HiveSqlParser.KW_JOIN, 0);
    }
    KW_INNER() {
        return this.getToken(HiveSqlParser.KW_INNER, 0);
    }
    KW_CROSS() {
        return this.getToken(HiveSqlParser.KW_CROSS, 0);
    }
    KW_LEFT() {
        return this.getToken(HiveSqlParser.KW_LEFT, 0);
    }
    KW_RIGHT() {
        return this.getToken(HiveSqlParser.KW_RIGHT, 0);
    }
    KW_FULL() {
        return this.getToken(HiveSqlParser.KW_FULL, 0);
    }
    KW_OUTER() {
        return this.getToken(HiveSqlParser.KW_OUTER, 0);
    }
    KW_SEMI() {
        return this.getToken(HiveSqlParser.KW_SEMI, 0);
    }
    KW_ANTI() {
        return this.getToken(HiveSqlParser.KW_ANTI, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_joinToken;
    }
    enterRule(listener) {
        if (listener.enterJoinToken) {
            listener.enterJoinToken(this);
        }
    }
    exitRule(listener) {
        if (listener.exitJoinToken) {
            listener.exitJoinToken(this);
        }
    }
    accept(visitor) {
        if (visitor.visitJoinToken) {
            return visitor.visitJoinToken(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class LateralViewContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LATERAL() {
        return this.getToken(HiveSqlParser.KW_LATERAL, 0);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    KW_OUTER() {
        return this.getToken(HiveSqlParser.KW_OUTER, 0);
    }
    function_() {
        return this.getRuleContext(0, Function_Context);
    }
    tableAlias() {
        return this.getRuleContext(0, TableAliasContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    valuesClause() {
        return this.getRuleContext(0, ValuesClauseContext);
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_lateralView;
    }
    enterRule(listener) {
        if (listener.enterLateralView) {
            listener.enterLateralView(this);
        }
    }
    exitRule(listener) {
        if (listener.exitLateralView) {
            listener.exitLateralView(this);
        }
    }
    accept(visitor) {
        if (visitor.visitLateralView) {
            return visitor.visitLateralView(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableAliasContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableAlias;
    }
    enterRule(listener) {
        if (listener.enterTableAlias) {
            listener.enterTableAlias(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableAlias) {
            listener.exitTableAlias(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableAlias) {
            return visitor.visitTableAlias(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableSampleContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
        this._expr = [];
    }
    KW_TABLESAMPLE() {
        return this.getToken(HiveSqlParser.KW_TABLESAMPLE, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    KW_BUCKET() {
        return this.getToken(HiveSqlParser.KW_BUCKET, 0);
    }
    KW_OUT() {
        return this.getToken(HiveSqlParser.KW_OUT, 0);
    }
    KW_OF() {
        return this.getToken(HiveSqlParser.KW_OF, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    Number(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.Number);
        }
        else {
            return this.getToken(HiveSqlParser.Number, i);
        }
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    ByteLengthLiteral() {
        return this.getToken(HiveSqlParser.ByteLengthLiteral, 0);
    }
    KW_PERCENT() {
        return this.getToken(HiveSqlParser.KW_PERCENT, 0);
    }
    KW_ROWS() {
        return this.getToken(HiveSqlParser.KW_ROWS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableSample;
    }
    enterRule(listener) {
        if (listener.enterTableSample) {
            listener.enterTableSample(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableSample) {
            listener.exitTableSample(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableSample) {
            return visitor.visitTableSample(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableOrView() {
        return this.getRuleContext(0, TableOrViewContext);
    }
    tableProperties() {
        return this.getRuleContext(0, TablePropertiesContext);
    }
    tableSample() {
        return this.getRuleContext(0, TableSampleContext);
    }
    asOfClause() {
        return this.getRuleContext(0, AsOfClauseContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableSource;
    }
    enterRule(listener) {
        if (listener.enterTableSource) {
            listener.enterTableSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableSource) {
            listener.exitTableSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableSource) {
            return visitor.visitTableSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AsOfClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FOR(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_FOR);
        }
        else {
            return this.getToken(HiveSqlParser.KW_FOR, i);
        }
    }
    KW_SYSTEM_TIME() {
        return this.getToken(HiveSqlParser.KW_SYSTEM_TIME, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    KW_OF() {
        return this.getToken(HiveSqlParser.KW_OF, 0);
    }
    KW_SYSTEM_VERSION() {
        return this.getToken(HiveSqlParser.KW_SYSTEM_VERSION, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_asOfClause;
    }
    enterRule(listener) {
        if (listener.enterAsOfClause) {
            listener.enterAsOfClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAsOfClause) {
            listener.exitAsOfClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAsOfClause) {
            return visitor.visitAsOfClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DbSchemaNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dbSchemaName;
    }
    enterRule(listener) {
        if (listener.enterDbSchemaName) {
            listener.enterDbSchemaName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDbSchemaName) {
            listener.exitDbSchemaName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDbSchemaName) {
            return visitor.visitDbSchemaName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DbSchemaNameCreateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_dbSchemaNameCreate;
    }
    enterRule(listener) {
        if (listener.enterDbSchemaNameCreate) {
            listener.enterDbSchemaNameCreate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDbSchemaNameCreate) {
            listener.exitDbSchemaNameCreate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDbSchemaNameCreate) {
            return visitor.visitDbSchemaNameCreate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableOrViewContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    viewName() {
        return this.getRuleContext(0, ViewNameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableOrView;
    }
    enterRule(listener) {
        if (listener.enterTableOrView) {
            listener.enterTableOrView(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableOrView) {
            listener.exitTableOrView(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableOrView) {
            return visitor.visitTableOrView(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableName;
    }
    enterRule(listener) {
        if (listener.enterTableName) {
            listener.enterTableName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableName) {
            listener.exitTableName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableName) {
            return visitor.visitTableName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableNameCreateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableNameCreate;
    }
    enterRule(listener) {
        if (listener.enterTableNameCreate) {
            listener.enterTableNameCreate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableNameCreate) {
            listener.exitTableNameCreate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableNameCreate) {
            return visitor.visitTableNameCreate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    DOT() {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewName;
    }
    enterRule(listener) {
        if (listener.enterViewName) {
            listener.enterViewName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewName) {
            listener.exitViewName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewName) {
            return visitor.visitViewName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ViewNameCreateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    DOT() {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_viewNameCreate;
    }
    enterRule(listener) {
        if (listener.enterViewNameCreate) {
            listener.enterViewNameCreate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitViewNameCreate) {
            listener.exitViewNameCreate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitViewNameCreate) {
            return visitor.visitViewNameCreate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SubQuerySourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    queryStatementExpression() {
        return this.getRuleContext(0, QueryStatementExpressionContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_subQuerySource;
    }
    enterRule(listener) {
        if (listener.enterSubQuerySource) {
            listener.enterSubQuerySource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSubQuerySource) {
            listener.exitSubQuerySource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSubQuerySource) {
            return visitor.visitSubQuerySource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitioningSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    partitionByClause() {
        return this.getRuleContext(0, PartitionByClauseContext);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    distributeByClause() {
        return this.getRuleContext(0, DistributeByClauseContext);
    }
    sortByClause() {
        return this.getRuleContext(0, SortByClauseContext);
    }
    clusterByClause() {
        return this.getRuleContext(0, ClusterByClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitioningSpec;
    }
    enterRule(listener) {
        if (listener.enterPartitioningSpec) {
            listener.enterPartitioningSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitioningSpec) {
            listener.exitPartitioningSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitioningSpec) {
            return visitor.visitPartitioningSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionTableFunctionSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    subQuerySource() {
        return this.getRuleContext(0, SubQuerySourceContext);
    }
    tableSource() {
        return this.getRuleContext(0, TableSourceContext);
    }
    partitionedTableFunction() {
        return this.getRuleContext(0, PartitionedTableFunctionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionTableFunctionSource;
    }
    enterRule(listener) {
        if (listener.enterPartitionTableFunctionSource) {
            listener.enterPartitionTableFunctionSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionTableFunctionSource) {
            listener.exitPartitionTableFunctionSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionTableFunctionSource) {
            return visitor.visitPartitionTableFunctionSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionedTableFunctionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    partitionTableFunctionSource() {
        return this.getRuleContext(0, PartitionTableFunctionSourceContext);
    }
    Identifier(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.Identifier);
        }
        else {
            return this.getToken(HiveSqlParser.Identifier, i);
        }
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    partitioningSpec() {
        return this.getRuleContext(0, PartitioningSpecContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionedTableFunction;
    }
    enterRule(listener) {
        if (listener.enterPartitionedTableFunction) {
            listener.enterPartitionedTableFunction(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionedTableFunction) {
            listener.exitPartitionedTableFunction(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionedTableFunction) {
            return visitor.visitPartitionedTableFunction(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WhereClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WHERE() {
        return this.getToken(HiveSqlParser.KW_WHERE, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_whereClause;
    }
    enterRule(listener) {
        if (listener.enterWhereClause) {
            listener.enterWhereClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWhereClause) {
            listener.exitWhereClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWhereClause) {
            return visitor.visitWhereClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ValuesClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_VALUES() {
        return this.getToken(HiveSqlParser.KW_VALUES, 0);
    }
    expressionsInParenthesis(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionsInParenthesisContext);
        }
        return this.getRuleContext(i, ExpressionsInParenthesisContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    firstExpressionsWithAlias() {
        return this.getRuleContext(0, FirstExpressionsWithAliasContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_valuesClause;
    }
    enterRule(listener) {
        if (listener.enterValuesClause) {
            listener.enterValuesClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitValuesClause) {
            listener.exitValuesClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitValuesClause) {
            return visitor.visitValuesClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class VirtualTableSourceContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    valuesClause() {
        return this.getRuleContext(0, ValuesClauseContext);
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    tableAlias() {
        return this.getRuleContext(0, TableAliasContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_virtualTableSource;
    }
    enterRule(listener) {
        if (listener.enterVirtualTableSource) {
            listener.enterVirtualTableSource(this);
        }
    }
    exitRule(listener) {
        if (listener.exitVirtualTableSource) {
            listener.exitVirtualTableSource(this);
        }
    }
    accept(visitor) {
        if (visitor.visitVirtualTableSource) {
            return visitor.visitVirtualTableSource(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SELECT() {
        return this.getToken(HiveSqlParser.KW_SELECT, 0);
    }
    selectItem(i) {
        if (i === undefined) {
            return this.getRuleContexts(SelectItemContext);
        }
        return this.getRuleContext(i, SelectItemContext);
    }
    KW_TRANSFORM() {
        return this.getToken(HiveSqlParser.KW_TRANSFORM, 0);
    }
    selectTrfmClause() {
        return this.getRuleContext(0, SelectTrfmClauseContext);
    }
    QUERY_HINT() {
        return this.getToken(HiveSqlParser.QUERY_HINT, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    KW_DISTINCT() {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    trfmClause() {
        return this.getRuleContext(0, TrfmClauseContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectClause;
    }
    enterRule(listener) {
        if (listener.enterSelectClause) {
            listener.enterSelectClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectClause) {
            listener.exitSelectClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectClause) {
            return visitor.visitSelectClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectTrfmClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    selectExpressionList() {
        return this.getRuleContext(0, SelectExpressionListContext);
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    rowFormat(i) {
        if (i === undefined) {
            return this.getRuleContexts(RowFormatContext);
        }
        return this.getRuleContext(i, RowFormatContext);
    }
    recordWriter() {
        return this.getRuleContext(0, RecordWriterContext);
    }
    KW_USING() {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    recordReader() {
        return this.getRuleContext(0, RecordReaderContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    aliasList() {
        return this.getRuleContext(0, AliasListContext);
    }
    columnNameTypeList() {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectTrfmClause;
    }
    enterRule(listener) {
        if (listener.enterSelectTrfmClause) {
            listener.enterSelectTrfmClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectTrfmClause) {
            listener.exitSelectTrfmClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectTrfmClause) {
            return visitor.visitSelectTrfmClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectItemContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableAllColumns() {
        return this.getRuleContext(0, TableAllColumnsContext);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectItem;
    }
    enterRule(listener) {
        if (listener.enterSelectItem) {
            listener.enterSelectItem(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectItem) {
            listener.exitSelectItem(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectItem) {
            return visitor.visitSelectItem(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TrfmClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    selectExpressionList() {
        return this.getRuleContext(0, SelectExpressionListContext);
    }
    rowFormat(i) {
        if (i === undefined) {
            return this.getRuleContexts(RowFormatContext);
        }
        return this.getRuleContext(i, RowFormatContext);
    }
    recordWriter() {
        return this.getRuleContext(0, RecordWriterContext);
    }
    KW_USING() {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    recordReader() {
        return this.getRuleContext(0, RecordReaderContext);
    }
    KW_MAP() {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    KW_REDUCE() {
        return this.getToken(HiveSqlParser.KW_REDUCE, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    aliasList() {
        return this.getRuleContext(0, AliasListContext);
    }
    columnNameTypeList() {
        return this.getRuleContext(0, ColumnNameTypeListContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_trfmClause;
    }
    enterRule(listener) {
        if (listener.enterTrfmClause) {
            listener.enterTrfmClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTrfmClause) {
            listener.exitTrfmClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTrfmClause) {
            return visitor.visitTrfmClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableAllColumns() {
        return this.getRuleContext(0, TableAllColumnsContext);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectExpression;
    }
    enterRule(listener) {
        if (listener.enterSelectExpression) {
            listener.enterSelectExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectExpression) {
            listener.exitSelectExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectExpression) {
            return visitor.visitSelectExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SelectExpressionListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    selectExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(SelectExpressionContext);
        }
        return this.getRuleContext(i, SelectExpressionContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_selectExpressionList;
    }
    enterRule(listener) {
        if (listener.enterSelectExpressionList) {
            listener.enterSelectExpressionList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSelectExpressionList) {
            listener.exitSelectExpressionList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSelectExpressionList) {
            return visitor.visitSelectExpressionList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Window_clauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WINDOW() {
        return this.getToken(HiveSqlParser.KW_WINDOW, 0);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    KW_AS(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_AS);
        }
        else {
            return this.getToken(HiveSqlParser.KW_AS, i);
        }
    }
    window_specification(i) {
        if (i === undefined) {
            return this.getRuleContexts(Window_specificationContext);
        }
        return this.getRuleContext(i, Window_specificationContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_window_clause;
    }
    enterRule(listener) {
        if (listener.enterWindow_clause) {
            listener.enterWindow_clause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWindow_clause) {
            listener.exitWindow_clause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWindow_clause) {
            return visitor.visitWindow_clause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Window_specificationContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    partitioningSpec() {
        return this.getRuleContext(0, PartitioningSpecContext);
    }
    window_frame() {
        return this.getRuleContext(0, Window_frameContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_window_specification;
    }
    enterRule(listener) {
        if (listener.enterWindow_specification) {
            listener.enterWindow_specification(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWindow_specification) {
            listener.exitWindow_specification(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWindow_specification) {
            return visitor.visitWindow_specification(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Window_frameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ROWS() {
        return this.getToken(HiveSqlParser.KW_ROWS, 0);
    }
    KW_RANGE() {
        return this.getToken(HiveSqlParser.KW_RANGE, 0);
    }
    KW_BETWEEN() {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    window_frame_boundary(i) {
        if (i === undefined) {
            return this.getRuleContexts(Window_frame_boundaryContext);
        }
        return this.getRuleContext(i, Window_frame_boundaryContext);
    }
    KW_AND() {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    KW_UNBOUNDED() {
        return this.getToken(HiveSqlParser.KW_UNBOUNDED, 0);
    }
    KW_PRECEDING() {
        return this.getToken(HiveSqlParser.KW_PRECEDING, 0);
    }
    KW_CURRENT() {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0);
    }
    KW_ROW() {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_window_frame;
    }
    enterRule(listener) {
        if (listener.enterWindow_frame) {
            listener.enterWindow_frame(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWindow_frame) {
            listener.exitWindow_frame(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWindow_frame) {
            return visitor.visitWindow_frame(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Window_frame_boundaryContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_UNBOUNDED() {
        return this.getToken(HiveSqlParser.KW_UNBOUNDED, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    KW_PRECEDING() {
        return this.getToken(HiveSqlParser.KW_PRECEDING, 0);
    }
    KW_FOLLOWING() {
        return this.getToken(HiveSqlParser.KW_FOLLOWING, 0);
    }
    KW_CURRENT() {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0);
    }
    KW_ROW() {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_window_frame_boundary;
    }
    enterRule(listener) {
        if (listener.enterWindow_frame_boundary) {
            listener.enterWindow_frame_boundary(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWindow_frame_boundary) {
            listener.exitWindow_frame_boundary(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWindow_frame_boundary) {
            return visitor.visitWindow_frame_boundary(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class GroupByClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_GROUP() {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    columnName() {
        return this.getRuleContext(0, ColumnNameContext);
    }
    rollupStandard() {
        return this.getRuleContext(0, RollupStandardContext);
    }
    rollupOldSyntax() {
        return this.getRuleContext(0, RollupOldSyntaxContext);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_groupByClause;
    }
    enterRule(listener) {
        if (listener.enterGroupByClause) {
            listener.enterGroupByClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitGroupByClause) {
            listener.exitGroupByClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitGroupByClause) {
            return visitor.visitGroupByClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RollupStandardContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_ROLLUP() {
        return this.getToken(HiveSqlParser.KW_ROLLUP, 0);
    }
    KW_CUBE() {
        return this.getToken(HiveSqlParser.KW_CUBE, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rollupStandard;
    }
    enterRule(listener) {
        if (listener.enterRollupStandard) {
            listener.enterRollupStandard(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRollupStandard) {
            listener.exitRollupStandard(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRollupStandard) {
            return visitor.visitRollupStandard(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RollupOldSyntaxContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    expressionsNotInParenthesis() {
        return this.getRuleContext(0, ExpressionsNotInParenthesisContext);
    }
    KW_ROLLUP() {
        return this.getToken(HiveSqlParser.KW_ROLLUP, 0);
    }
    KW_CUBE() {
        return this.getToken(HiveSqlParser.KW_CUBE, 0);
    }
    KW_SETS() {
        return this.getToken(HiveSqlParser.KW_SETS, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    groupingSetExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(GroupingSetExpressionContext);
        }
        return this.getRuleContext(i, GroupingSetExpressionContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_GROUPING() {
        return this.getToken(HiveSqlParser.KW_GROUPING, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rollupOldSyntax;
    }
    enterRule(listener) {
        if (listener.enterRollupOldSyntax) {
            listener.enterRollupOldSyntax(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRollupOldSyntax) {
            listener.exitRollupOldSyntax(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRollupOldSyntax) {
            return visitor.visitRollupOldSyntax(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class GroupingSetExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_groupingSetExpression;
    }
    enterRule(listener) {
        if (listener.enterGroupingSetExpression) {
            listener.enterGroupingSetExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitGroupingSetExpression) {
            listener.exitGroupingSetExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitGroupingSetExpression) {
            return visitor.visitGroupingSetExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class HavingClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_HAVING() {
        return this.getToken(HiveSqlParser.KW_HAVING, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_havingClause;
    }
    enterRule(listener) {
        if (listener.enterHavingClause) {
            listener.enterHavingClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitHavingClause) {
            listener.exitHavingClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitHavingClause) {
            return visitor.visitHavingClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class QualifyClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_QUALIFY() {
        return this.getToken(HiveSqlParser.KW_QUALIFY, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_qualifyClause;
    }
    enterRule(listener) {
        if (listener.enterQualifyClause) {
            listener.enterQualifyClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitQualifyClause) {
            listener.exitQualifyClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitQualifyClause) {
            return visitor.visitQualifyClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExpressionOrDefaultContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DEFAULT() {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_expressionOrDefault;
    }
    enterRule(listener) {
        if (listener.enterExpressionOrDefault) {
            listener.enterExpressionOrDefault(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExpressionOrDefault) {
            listener.exitExpressionOrDefault(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExpressionOrDefault) {
            return visitor.visitExpressionOrDefault(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FirstExpressionsWithAliasContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    KW_AS(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_AS);
        }
        else {
            return this.getToken(HiveSqlParser.KW_AS, i);
        }
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_firstExpressionsWithAlias;
    }
    enterRule(listener) {
        if (listener.enterFirstExpressionsWithAlias) {
            listener.enterFirstExpressionsWithAlias(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFirstExpressionsWithAlias) {
            listener.exitFirstExpressionsWithAlias(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFirstExpressionsWithAlias) {
            return visitor.visitFirstExpressionsWithAlias(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExpressionsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    expressionsInParenthesis() {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    expressionsNotInParenthesis() {
        return this.getRuleContext(0, ExpressionsNotInParenthesisContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_expressions;
    }
    enterRule(listener) {
        if (listener.enterExpressions) {
            listener.enterExpressions(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExpressions) {
            listener.exitExpressions(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExpressions) {
            return visitor.visitExpressions(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExpressionsInParenthesisContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    expressionsNotInParenthesis() {
        return this.getRuleContext(0, ExpressionsNotInParenthesisContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_expressionsInParenthesis;
    }
    enterRule(listener) {
        if (listener.enterExpressionsInParenthesis) {
            listener.enterExpressionsInParenthesis(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExpressionsInParenthesis) {
            listener.exitExpressionsInParenthesis(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExpressionsInParenthesis) {
            return visitor.visitExpressionsInParenthesis(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExpressionsNotInParenthesisContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    expressionOrDefault(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionOrDefaultContext);
        }
        return this.getRuleContext(i, ExpressionOrDefaultContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_expressionsNotInParenthesis;
    }
    enterRule(listener) {
        if (listener.enterExpressionsNotInParenthesis) {
            listener.enterExpressionsNotInParenthesis(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExpressionsNotInParenthesis) {
            listener.exitExpressionsNotInParenthesis(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExpressionsNotInParenthesis) {
            return visitor.visitExpressionsNotInParenthesis(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class OrderByClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ORDER() {
        return this.getToken(HiveSqlParser.KW_ORDER, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    columnRefOrder(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnRefOrderContext);
        }
        return this.getRuleContext(i, ColumnRefOrderContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_orderByClause;
    }
    enterRule(listener) {
        if (listener.enterOrderByClause) {
            listener.enterOrderByClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitOrderByClause) {
            listener.exitOrderByClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitOrderByClause) {
            return visitor.visitOrderByClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionByClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_PARTITION() {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    expressions() {
        return this.getRuleContext(0, ExpressionsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionByClause;
    }
    enterRule(listener) {
        if (listener.enterPartitionByClause) {
            listener.enterPartitionByClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionByClause) {
            listener.exitPartitionByClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionByClause) {
            return visitor.visitPartitionByClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ClusterByClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CLUSTER() {
        return this.getToken(HiveSqlParser.KW_CLUSTER, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    expressions() {
        return this.getRuleContext(0, ExpressionsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_clusterByClause;
    }
    enterRule(listener) {
        if (listener.enterClusterByClause) {
            listener.enterClusterByClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitClusterByClause) {
            listener.exitClusterByClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitClusterByClause) {
            return visitor.visitClusterByClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DistributeByClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DISTRIBUTE() {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTE, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    expressions() {
        return this.getRuleContext(0, ExpressionsContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_distributeByClause;
    }
    enterRule(listener) {
        if (listener.enterDistributeByClause) {
            listener.enterDistributeByClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDistributeByClause) {
            listener.exitDistributeByClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDistributeByClause) {
            return visitor.visitDistributeByClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SortByClauseContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SORT() {
        return this.getToken(HiveSqlParser.KW_SORT, 0);
    }
    KW_BY() {
        return this.getToken(HiveSqlParser.KW_BY, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    columnRefOrder(i) {
        if (i === undefined) {
            return this.getRuleContexts(ColumnRefOrderContext);
        }
        return this.getRuleContext(i, ColumnRefOrderContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_sortByClause;
    }
    enterRule(listener) {
        if (listener.enterSortByClause) {
            listener.enterSortByClause(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSortByClause) {
            listener.exitSortByClause(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSortByClause) {
            return visitor.visitSortByClause(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Function_Context extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_TRIM() {
        return this.getToken(HiveSqlParser.KW_TRIM, 0);
    }
    LPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.LPAREN, i);
        }
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    RPAREN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RPAREN);
        }
        else {
            return this.getToken(HiveSqlParser.RPAREN, i);
        }
    }
    selectExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(SelectExpressionContext);
        }
        return this.getRuleContext(i, SelectExpressionContext);
    }
    KW_BOTH() {
        return this.getToken(HiveSqlParser.KW_BOTH, 0);
    }
    KW_LEADING() {
        return this.getToken(HiveSqlParser.KW_LEADING, 0);
    }
    KW_TRAILING() {
        return this.getToken(HiveSqlParser.KW_TRAILING, 0);
    }
    functionNameForInvoke() {
        return this.getRuleContext(0, FunctionNameForInvokeContext);
    }
    KW_GROUP() {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    KW_OVER() {
        return this.getToken(HiveSqlParser.KW_OVER, 0);
    }
    STAR() {
        return this.getToken(HiveSqlParser.STAR, 0);
    }
    KW_WITHIN() {
        return this.getToken(HiveSqlParser.KW_WITHIN, 0);
    }
    orderByClause() {
        return this.getRuleContext(0, OrderByClauseContext);
    }
    window_specification() {
        return this.getRuleContext(0, Window_specificationContext);
    }
    null_treatment() {
        return this.getRuleContext(0, Null_treatmentContext);
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    KW_DISTINCT() {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_function_;
    }
    enterRule(listener) {
        if (listener.enterFunction_) {
            listener.enterFunction_(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFunction_) {
            listener.exitFunction_(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFunction_) {
            return visitor.visitFunction_(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Null_treatmentContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_NULLS() {
        return this.getToken(HiveSqlParser.KW_NULLS, 0);
    }
    KW_RESPECT() {
        return this.getToken(HiveSqlParser.KW_RESPECT, 0);
    }
    KW_IGNORE() {
        return this.getToken(HiveSqlParser.KW_IGNORE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_null_treatment;
    }
    enterRule(listener) {
        if (listener.enterNull_treatment) {
            listener.enterNull_treatment(this);
        }
    }
    exitRule(listener) {
        if (listener.exitNull_treatment) {
            listener.exitNull_treatment(this);
        }
    }
    accept(visitor) {
        if (visitor.visitNull_treatment) {
            return visitor.visitNull_treatment(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FunctionNameCreateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    functionIdentifier() {
        return this.getRuleContext(0, FunctionIdentifierContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_functionNameCreate;
    }
    enterRule(listener) {
        if (listener.enterFunctionNameCreate) {
            listener.enterFunctionNameCreate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFunctionNameCreate) {
            listener.exitFunctionNameCreate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFunctionNameCreate) {
            return visitor.visitFunctionNameCreate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FunctionNameForDDLContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    functionIdentifier() {
        return this.getRuleContext(0, FunctionIdentifierContext);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_functionNameForDDL;
    }
    enterRule(listener) {
        if (listener.enterFunctionNameForDDL) {
            listener.enterFunctionNameForDDL(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFunctionNameForDDL) {
            listener.exitFunctionNameForDDL(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFunctionNameForDDL) {
            return visitor.visitFunctionNameForDDL(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FunctionNameForInvokeContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    functionIdentifier() {
        return this.getRuleContext(0, FunctionIdentifierContext);
    }
    sql11ReservedKeywordsUsedAsFunctionName() {
        return this.getRuleContext(0, Sql11ReservedKeywordsUsedAsFunctionNameContext);
    }
    sysFuncNames() {
        return this.getRuleContext(0, SysFuncNamesContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_functionNameForInvoke;
    }
    enterRule(listener) {
        if (listener.enterFunctionNameForInvoke) {
            listener.enterFunctionNameForInvoke(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFunctionNameForInvoke) {
            listener.exitFunctionNameForInvoke(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFunctionNameForInvoke) {
            return visitor.visitFunctionNameForInvoke(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CastExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CAST() {
        return this.getToken(HiveSqlParser.KW_CAST, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    primitiveType() {
        return this.getRuleContext(0, PrimitiveTypeContext);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_FORMAT() {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_castExpression;
    }
    enterRule(listener) {
        if (listener.enterCastExpression) {
            listener.enterCastExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCastExpression) {
            listener.exitCastExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCastExpression) {
            return visitor.visitCastExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class CaseExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CASE() {
        return this.getToken(HiveSqlParser.KW_CASE, 0);
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    KW_END() {
        return this.getToken(HiveSqlParser.KW_END, 0);
    }
    KW_WHEN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_WHEN);
        }
        else {
            return this.getToken(HiveSqlParser.KW_WHEN, i);
        }
    }
    KW_THEN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_THEN);
        }
        else {
            return this.getToken(HiveSqlParser.KW_THEN, i);
        }
    }
    KW_ELSE() {
        return this.getToken(HiveSqlParser.KW_ELSE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_caseExpression;
    }
    enterRule(listener) {
        if (listener.enterCaseExpression) {
            listener.enterCaseExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitCaseExpression) {
            listener.exitCaseExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitCaseExpression) {
            return visitor.visitCaseExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WhenExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CASE() {
        return this.getToken(HiveSqlParser.KW_CASE, 0);
    }
    KW_END() {
        return this.getToken(HiveSqlParser.KW_END, 0);
    }
    KW_WHEN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_WHEN);
        }
        else {
            return this.getToken(HiveSqlParser.KW_WHEN, i);
        }
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    KW_THEN(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_THEN);
        }
        else {
            return this.getToken(HiveSqlParser.KW_THEN, i);
        }
    }
    KW_ELSE() {
        return this.getToken(HiveSqlParser.KW_ELSE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_whenExpression;
    }
    enterRule(listener) {
        if (listener.enterWhenExpression) {
            listener.enterWhenExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWhenExpression) {
            listener.exitWhenExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWhenExpression) {
            return visitor.visitWhenExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FloorExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_FLOOR() {
        return this.getToken(HiveSqlParser.KW_FLOOR, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    timeQualifiers() {
        return this.getRuleContext(0, TimeQualifiersContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_floorExpression;
    }
    enterRule(listener) {
        if (listener.enterFloorExpression) {
            listener.enterFloorExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFloorExpression) {
            listener.exitFloorExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFloorExpression) {
            return visitor.visitFloorExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExtractExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_EXTRACT() {
        return this.getToken(HiveSqlParser.KW_EXTRACT, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    timeQualifiers() {
        return this.getRuleContext(0, TimeQualifiersContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_extractExpression;
    }
    enterRule(listener) {
        if (listener.enterExtractExpression) {
            listener.enterExtractExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExtractExpression) {
            listener.exitExtractExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExtractExpression) {
            return visitor.visitExtractExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TimeQualifiersContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    year() {
        return this.getRuleContext(0, YearContext);
    }
    KW_QUARTER() {
        return this.getToken(HiveSqlParser.KW_QUARTER, 0);
    }
    month() {
        return this.getRuleContext(0, MonthContext);
    }
    week() {
        return this.getRuleContext(0, WeekContext);
    }
    day() {
        return this.getRuleContext(0, DayContext);
    }
    hour() {
        return this.getRuleContext(0, HourContext);
    }
    minute() {
        return this.getRuleContext(0, MinuteContext);
    }
    second() {
        return this.getRuleContext(0, SecondContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_timeQualifiers;
    }
    enterRule(listener) {
        if (listener.enterTimeQualifiers) {
            listener.enterTimeQualifiers(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTimeQualifiers) {
            listener.exitTimeQualifiers(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTimeQualifiers) {
            return visitor.visitTimeQualifiers(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ConstantContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    intervalValue() {
        return this.getRuleContext(0, IntervalValueContext);
    }
    intervalQualifiers() {
        return this.getRuleContext(0, IntervalQualifiersContext);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    KW_DATE() {
        return this.getToken(HiveSqlParser.KW_DATE, 0);
    }
    StringLiteral(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.StringLiteral);
        }
        else {
            return this.getToken(HiveSqlParser.StringLiteral, i);
        }
    }
    KW_CURRENT_DATE() {
        return this.getToken(HiveSqlParser.KW_CURRENT_DATE, 0);
    }
    KW_TIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    KW_CURRENT_TIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0);
    }
    KW_TIMESTAMPLOCALTZ() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0);
    }
    IntegralLiteral() {
        return this.getToken(HiveSqlParser.IntegralLiteral, 0);
    }
    NumberLiteral() {
        return this.getToken(HiveSqlParser.NumberLiteral, 0);
    }
    CharSetName() {
        return this.getToken(HiveSqlParser.CharSetName, 0);
    }
    CharSetLiteral() {
        return this.getToken(HiveSqlParser.CharSetLiteral, 0);
    }
    KW_TRUE() {
        return this.getToken(HiveSqlParser.KW_TRUE, 0);
    }
    KW_FALSE() {
        return this.getToken(HiveSqlParser.KW_FALSE, 0);
    }
    KW_NULL() {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    QUESTION() {
        return this.getToken(HiveSqlParser.QUESTION, 0);
    }
    columnNamePath() {
        return this.getRuleContext(0, ColumnNamePathContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_constant;
    }
    enterRule(listener) {
        if (listener.enterConstant) {
            listener.enterConstant(this);
        }
    }
    exitRule(listener) {
        if (listener.exitConstant) {
            listener.exitConstant(this);
        }
    }
    accept(visitor) {
        if (visitor.visitConstant) {
            return visitor.visitConstant(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class IntervalValueContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_intervalValue;
    }
    enterRule(listener) {
        if (listener.enterIntervalValue) {
            listener.enterIntervalValue(this);
        }
    }
    exitRule(listener) {
        if (listener.exitIntervalValue) {
            listener.exitIntervalValue(this);
        }
    }
    accept(visitor) {
        if (visitor.visitIntervalValue) {
            return visitor.visitIntervalValue(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class IntervalExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    intervalValue() {
        return this.getRuleContext(0, IntervalValueContext);
    }
    intervalQualifiers() {
        return this.getRuleContext(0, IntervalQualifiersContext);
    }
    KW_INTERVAL() {
        return this.getToken(HiveSqlParser.KW_INTERVAL, 0);
    }
    expression() {
        return this.getRuleContext(0, ExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_intervalExpression;
    }
    enterRule(listener) {
        if (listener.enterIntervalExpression) {
            listener.enterIntervalExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitIntervalExpression) {
            listener.exitIntervalExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitIntervalExpression) {
            return visitor.visitIntervalExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class IntervalQualifiersContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    year() {
        return this.getRuleContext(0, YearContext);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    month() {
        return this.getRuleContext(0, MonthContext);
    }
    day() {
        return this.getRuleContext(0, DayContext);
    }
    second() {
        return this.getRuleContext(0, SecondContext);
    }
    hour() {
        return this.getRuleContext(0, HourContext);
    }
    minute() {
        return this.getRuleContext(0, MinuteContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_intervalQualifiers;
    }
    enterRule(listener) {
        if (listener.enterIntervalQualifiers) {
            listener.enterIntervalQualifiers(this);
        }
    }
    exitRule(listener) {
        if (listener.exitIntervalQualifiers) {
            listener.exitIntervalQualifiers(this);
        }
    }
    accept(visitor) {
        if (visitor.visitIntervalQualifiers) {
            return visitor.visitIntervalQualifiers(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceAndExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceAndExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceAndExpressionContext);
    }
    KW_OR(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_OR);
        }
        else {
            return this.getToken(HiveSqlParser.KW_OR, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_expression;
    }
    enterRule(listener) {
        if (listener.enterExpression) {
            listener.enterExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitExpression) {
            listener.exitExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitExpression) {
            return visitor.visitExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class AtomExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    constant() {
        return this.getRuleContext(0, ConstantContext);
    }
    intervalExpression() {
        return this.getRuleContext(0, IntervalExpressionContext);
    }
    castExpression() {
        return this.getRuleContext(0, CastExpressionContext);
    }
    extractExpression() {
        return this.getRuleContext(0, ExtractExpressionContext);
    }
    floorExpression() {
        return this.getRuleContext(0, FloorExpressionContext);
    }
    caseExpression() {
        return this.getRuleContext(0, CaseExpressionContext);
    }
    whenExpression() {
        return this.getRuleContext(0, WhenExpressionContext);
    }
    subQueryExpression() {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    function_() {
        return this.getRuleContext(0, Function_Context);
    }
    expressionsInParenthesis() {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_atomExpression;
    }
    enterRule(listener) {
        if (listener.enterAtomExpression) {
            listener.enterAtomExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitAtomExpression) {
            listener.exitAtomExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitAtomExpression) {
            return visitor.visitAtomExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceUnaryPrefixExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    atomExpression() {
        return this.getRuleContext(0, AtomExpressionContext);
    }
    LSQUARE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.LSQUARE);
        }
        else {
            return this.getToken(HiveSqlParser.LSQUARE, i);
        }
    }
    expression(i) {
        if (i === undefined) {
            return this.getRuleContexts(ExpressionContext);
        }
        return this.getRuleContext(i, ExpressionContext);
    }
    RSQUARE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.RSQUARE);
        }
        else {
            return this.getToken(HiveSqlParser.RSQUARE, i);
        }
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    PLUS(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.PLUS);
        }
        else {
            return this.getToken(HiveSqlParser.PLUS, i);
        }
    }
    MINUS(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.MINUS);
        }
        else {
            return this.getToken(HiveSqlParser.MINUS, i);
        }
    }
    TILDE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.TILDE);
        }
        else {
            return this.getToken(HiveSqlParser.TILDE, i);
        }
    }
    BITWISENOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.BITWISENOT);
        }
        else {
            return this.getToken(HiveSqlParser.BITWISENOT, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceUnaryPrefixExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceUnaryPrefixExpression) {
            listener.enterPrecedenceUnaryPrefixExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceUnaryPrefixExpression) {
            listener.exitPrecedenceUnaryPrefixExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceUnaryPrefixExpression) {
            return visitor.visitPrecedenceUnaryPrefixExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceBitwiseXorExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceUnaryPrefixExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceUnaryPrefixExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceUnaryPrefixExpressionContext);
    }
    BITWISEXOR(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.BITWISEXOR);
        }
        else {
            return this.getToken(HiveSqlParser.BITWISEXOR, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceBitwiseXorExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceBitwiseXorExpression) {
            listener.enterPrecedenceBitwiseXorExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceBitwiseXorExpression) {
            listener.exitPrecedenceBitwiseXorExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceBitwiseXorExpression) {
            return visitor.visitPrecedenceBitwiseXorExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceStarExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceBitwiseXorExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceBitwiseXorExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceBitwiseXorExpressionContext);
    }
    STAR(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.STAR);
        }
        else {
            return this.getToken(HiveSqlParser.STAR, i);
        }
    }
    DIVIDE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DIVIDE);
        }
        else {
            return this.getToken(HiveSqlParser.DIVIDE, i);
        }
    }
    MOD(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.MOD);
        }
        else {
            return this.getToken(HiveSqlParser.MOD, i);
        }
    }
    DIV(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DIV);
        }
        else {
            return this.getToken(HiveSqlParser.DIV, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceStarExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceStarExpression) {
            listener.enterPrecedenceStarExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceStarExpression) {
            listener.exitPrecedenceStarExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceStarExpression) {
            return visitor.visitPrecedenceStarExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedencePlusExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceStarExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceStarExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceStarExpressionContext);
    }
    PLUS(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.PLUS);
        }
        else {
            return this.getToken(HiveSqlParser.PLUS, i);
        }
    }
    MINUS(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.MINUS);
        }
        else {
            return this.getToken(HiveSqlParser.MINUS, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedencePlusExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedencePlusExpression) {
            listener.enterPrecedencePlusExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedencePlusExpression) {
            listener.exitPrecedencePlusExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedencePlusExpression) {
            return visitor.visitPrecedencePlusExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceConcatenateExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedencePlusExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedencePlusExpressionContext);
        }
        return this.getRuleContext(i, PrecedencePlusExpressionContext);
    }
    CONCATENATE(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.CONCATENATE);
        }
        else {
            return this.getToken(HiveSqlParser.CONCATENATE, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceConcatenateExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceConcatenateExpression) {
            listener.enterPrecedenceConcatenateExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceConcatenateExpression) {
            listener.exitPrecedenceConcatenateExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceConcatenateExpression) {
            return visitor.visitPrecedenceConcatenateExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceAmpersandExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceConcatenateExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceConcatenateExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceConcatenateExpressionContext);
    }
    AMPERSAND(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.AMPERSAND);
        }
        else {
            return this.getToken(HiveSqlParser.AMPERSAND, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceAmpersandExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceAmpersandExpression) {
            listener.enterPrecedenceAmpersandExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceAmpersandExpression) {
            listener.exitPrecedenceAmpersandExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceAmpersandExpression) {
            return visitor.visitPrecedenceAmpersandExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceBitwiseOrExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceAmpersandExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceAmpersandExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceAmpersandExpressionContext);
    }
    BITWISEOR(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.BITWISEOR);
        }
        else {
            return this.getToken(HiveSqlParser.BITWISEOR, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceBitwiseOrExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceBitwiseOrExpression) {
            listener.enterPrecedenceBitwiseOrExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceBitwiseOrExpression) {
            listener.exitPrecedenceBitwiseOrExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceBitwiseOrExpression) {
            return visitor.visitPrecedenceBitwiseOrExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceSimilarOperatorContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    KW_RLIKE() {
        return this.getToken(HiveSqlParser.KW_RLIKE, 0);
    }
    KW_REGEXP() {
        return this.getToken(HiveSqlParser.KW_REGEXP, 0);
    }
    LESSTHANOREQUALTO() {
        return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    GREATERTHANOREQUALTO() {
        return this.getToken(HiveSqlParser.GREATERTHANOREQUALTO, 0);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceSimilarOperator;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceSimilarOperator) {
            listener.enterPrecedenceSimilarOperator(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceSimilarOperator) {
            listener.exitPrecedenceSimilarOperator(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceSimilarOperator) {
            return visitor.visitPrecedenceSimilarOperator(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SubQueryExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    selectStatement() {
        return this.getRuleContext(0, SelectStatementContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_subQueryExpression;
    }
    enterRule(listener) {
        if (listener.enterSubQueryExpression) {
            listener.enterSubQueryExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSubQueryExpression) {
            listener.exitSubQueryExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSubQueryExpression) {
            return visitor.visitSubQueryExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceSimilarExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceBitwiseOrExpression() {
        return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext);
    }
    precedenceSimilarExpressionPart() {
        return this.getRuleContext(0, PrecedenceSimilarExpressionPartContext);
    }
    KW_EXISTS() {
        return this.getToken(HiveSqlParser.KW_EXISTS, 0);
    }
    subQueryExpression() {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceSimilarExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceSimilarExpression) {
            listener.enterPrecedenceSimilarExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceSimilarExpression) {
            listener.exitPrecedenceSimilarExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceSimilarExpression) {
            return visitor.visitPrecedenceSimilarExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceSimilarExpressionPartContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceSimilarOperator() {
        return this.getRuleContext(0, PrecedenceSimilarOperatorContext);
    }
    precedenceBitwiseOrExpression() {
        return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext);
    }
    precedenceSimilarExpressionAtom() {
        return this.getRuleContext(0, PrecedenceSimilarExpressionAtomContext);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    precedenceSimilarExpressionPartNot() {
        return this.getRuleContext(0, PrecedenceSimilarExpressionPartNotContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceSimilarExpressionPart;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceSimilarExpressionPart) {
            listener.enterPrecedenceSimilarExpressionPart(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceSimilarExpressionPart) {
            listener.exitPrecedenceSimilarExpressionPart(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceSimilarExpressionPart) {
            return visitor.visitPrecedenceSimilarExpressionPart(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceSimilarExpressionAtomContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_IN() {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    precedenceSimilarExpressionIn() {
        return this.getRuleContext(0, PrecedenceSimilarExpressionInContext);
    }
    KW_BETWEEN() {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    KW_AND() {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    precedenceBitwiseOrExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceBitwiseOrExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceBitwiseOrExpressionContext);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    KW_ANY() {
        return this.getToken(HiveSqlParser.KW_ANY, 0);
    }
    KW_ALL() {
        return this.getToken(HiveSqlParser.KW_ALL, 0);
    }
    expressionsInParenthesis() {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    subQuerySelectorOperator() {
        return this.getRuleContext(0, SubQuerySelectorOperatorContext);
    }
    subQueryExpression() {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    KW_SOME() {
        return this.getToken(HiveSqlParser.KW_SOME, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceSimilarExpressionAtom;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceSimilarExpressionAtom) {
            listener.enterPrecedenceSimilarExpressionAtom(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceSimilarExpressionAtom) {
            listener.exitPrecedenceSimilarExpressionAtom(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceSimilarExpressionAtom) {
            return visitor.visitPrecedenceSimilarExpressionAtom(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceSimilarExpressionInContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    subQueryExpression() {
        return this.getRuleContext(0, SubQueryExpressionContext);
    }
    expressionsInParenthesis() {
        return this.getRuleContext(0, ExpressionsInParenthesisContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceSimilarExpressionIn;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceSimilarExpressionIn) {
            listener.enterPrecedenceSimilarExpressionIn(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceSimilarExpressionIn) {
            listener.exitPrecedenceSimilarExpressionIn(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceSimilarExpressionIn) {
            return visitor.visitPrecedenceSimilarExpressionIn(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceSimilarExpressionPartNotContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    KW_RLIKE() {
        return this.getToken(HiveSqlParser.KW_RLIKE, 0);
    }
    KW_REGEXP() {
        return this.getToken(HiveSqlParser.KW_REGEXP, 0);
    }
    precedenceBitwiseOrExpression() {
        return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext);
    }
    precedenceSimilarExpressionAtom() {
        return this.getRuleContext(0, PrecedenceSimilarExpressionAtomContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceSimilarExpressionPartNot;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceSimilarExpressionPartNot) {
            listener.enterPrecedenceSimilarExpressionPartNot(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceSimilarExpressionPartNot) {
            listener.exitPrecedenceSimilarExpressionPartNot(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceSimilarExpressionPartNot) {
            return visitor.visitPrecedenceSimilarExpressionPartNot(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceDistinctOperatorContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_IS() {
        return this.getToken(HiveSqlParser.KW_IS, 0);
    }
    KW_DISTINCT() {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceDistinctOperator;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceDistinctOperator) {
            listener.enterPrecedenceDistinctOperator(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceDistinctOperator) {
            listener.exitPrecedenceDistinctOperator(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceDistinctOperator) {
            return visitor.visitPrecedenceDistinctOperator(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceEqualOperatorContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    EQUAL_NS() {
        return this.getToken(HiveSqlParser.EQUAL_NS, 0);
    }
    NOTEQUAL() {
        return this.getToken(HiveSqlParser.NOTEQUAL, 0);
    }
    KW_IS() {
        return this.getToken(HiveSqlParser.KW_IS, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_DISTINCT() {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceEqualOperator;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceEqualOperator) {
            listener.enterPrecedenceEqualOperator(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceEqualOperator) {
            listener.exitPrecedenceEqualOperator(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceEqualOperator) {
            return visitor.visitPrecedenceEqualOperator(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceEqualExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
        this._equal = [];
        this._p = [];
        this._dist = [];
    }
    precedenceSimilarExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceSimilarExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceSimilarExpressionContext);
    }
    precedenceEqualOperator(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceEqualOperatorContext);
        }
        return this.getRuleContext(i, PrecedenceEqualOperatorContext);
    }
    precedenceDistinctOperator(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceDistinctOperatorContext);
        }
        return this.getRuleContext(i, PrecedenceDistinctOperatorContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceEqualExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceEqualExpression) {
            listener.enterPrecedenceEqualExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceEqualExpression) {
            listener.exitPrecedenceEqualExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceEqualExpression) {
            return visitor.visitPrecedenceEqualExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class IsConditionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_NULL() {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    KW_TRUE() {
        return this.getToken(HiveSqlParser.KW_TRUE, 0);
    }
    KW_FALSE() {
        return this.getToken(HiveSqlParser.KW_FALSE, 0);
    }
    KW_UNKNOWN() {
        return this.getToken(HiveSqlParser.KW_UNKNOWN, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_isCondition;
    }
    enterRule(listener) {
        if (listener.enterIsCondition) {
            listener.enterIsCondition(this);
        }
    }
    exitRule(listener) {
        if (listener.exitIsCondition) {
            listener.exitIsCondition(this);
        }
    }
    accept(visitor) {
        if (visitor.visitIsCondition) {
            return visitor.visitIsCondition(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceNotExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceEqualExpression() {
        return this.getRuleContext(0, PrecedenceEqualExpressionContext);
    }
    KW_NOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_NOT);
        }
        else {
            return this.getToken(HiveSqlParser.KW_NOT, i);
        }
    }
    isCondition() {
        return this.getRuleContext(0, IsConditionContext);
    }
    KW_IS() {
        return this.getToken(HiveSqlParser.KW_IS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceNotExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceNotExpression) {
            listener.enterPrecedenceNotExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceNotExpression) {
            listener.exitPrecedenceNotExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceNotExpression) {
            return visitor.visitPrecedenceNotExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrecedenceAndExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    precedenceNotExpression(i) {
        if (i === undefined) {
            return this.getRuleContexts(PrecedenceNotExpressionContext);
        }
        return this.getRuleContext(i, PrecedenceNotExpressionContext);
    }
    KW_AND(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.KW_AND);
        }
        else {
            return this.getToken(HiveSqlParser.KW_AND, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_precedenceAndExpression;
    }
    enterRule(listener) {
        if (listener.enterPrecedenceAndExpression) {
            listener.enterPrecedenceAndExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrecedenceAndExpression) {
            listener.exitPrecedenceAndExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrecedenceAndExpression) {
            return visitor.visitPrecedenceAndExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TableOrPartitionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    tableName() {
        return this.getRuleContext(0, TableNameContext);
    }
    partitionSpec() {
        return this.getRuleContext(0, PartitionSpecContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_tableOrPartition;
    }
    enterRule(listener) {
        if (listener.enterTableOrPartition) {
            listener.enterTableOrPartition(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTableOrPartition) {
            listener.exitTableOrPartition(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTableOrPartition) {
            return visitor.visitTableOrPartition(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_PARTITION() {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    partitionVal(i) {
        if (i === undefined) {
            return this.getRuleContexts(PartitionValContext);
        }
        return this.getRuleContext(i, PartitionValContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionSpec;
    }
    enterRule(listener) {
        if (listener.enterPartitionSpec) {
            listener.enterPartitionSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionSpec) {
            listener.exitPartitionSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionSpec) {
            return visitor.visitPartitionSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionValContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    constant() {
        return this.getRuleContext(0, ConstantContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionVal;
    }
    enterRule(listener) {
        if (listener.enterPartitionVal) {
            listener.enterPartitionVal(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionVal) {
            listener.exitPartitionVal(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionVal) {
            return visitor.visitPartitionVal(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionSelectorSpecContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    LPAREN() {
        return this.getToken(HiveSqlParser.LPAREN, 0);
    }
    partitionSelectorVal(i) {
        if (i === undefined) {
            return this.getRuleContexts(PartitionSelectorValContext);
        }
        return this.getRuleContext(i, PartitionSelectorValContext);
    }
    RPAREN() {
        return this.getToken(HiveSqlParser.RPAREN, 0);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionSelectorSpec;
    }
    enterRule(listener) {
        if (listener.enterPartitionSelectorSpec) {
            listener.enterPartitionSelectorSpec(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionSelectorSpec) {
            listener.exitPartitionSelectorSpec(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionSelectorSpec) {
            return visitor.visitPartitionSelectorSpec(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PartitionSelectorValContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    constant() {
        return this.getRuleContext(0, ConstantContext);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    subQuerySelectorOperator() {
        return this.getRuleContext(0, SubQuerySelectorOperatorContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_partitionSelectorVal;
    }
    enterRule(listener) {
        if (listener.enterPartitionSelectorVal) {
            listener.enterPartitionSelectorVal(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPartitionSelectorVal) {
            listener.exitPartitionSelectorVal(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPartitionSelectorVal) {
            return visitor.visitPartitionSelectorVal(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SubQuerySelectorOperatorContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    NOTEQUAL() {
        return this.getToken(HiveSqlParser.NOTEQUAL, 0);
    }
    LESSTHANOREQUALTO() {
        return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    GREATERTHANOREQUALTO() {
        return this.getToken(HiveSqlParser.GREATERTHANOREQUALTO, 0);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_subQuerySelectorOperator;
    }
    enterRule(listener) {
        if (listener.enterSubQuerySelectorOperator) {
            listener.enterSubQuerySelectorOperator(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSubQuerySelectorOperator) {
            listener.exitSubQuerySelectorOperator(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSubQuerySelectorOperator) {
            return visitor.visitSubQuerySelectorOperator(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SysFuncNamesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_AND() {
        return this.getToken(HiveSqlParser.KW_AND, 0);
    }
    KW_OR() {
        return this.getToken(HiveSqlParser.KW_OR, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    KW_IF() {
        return this.getToken(HiveSqlParser.KW_IF, 0);
    }
    KW_CASE() {
        return this.getToken(HiveSqlParser.KW_CASE, 0);
    }
    KW_WHEN() {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    KW_FLOOR() {
        return this.getToken(HiveSqlParser.KW_FLOOR, 0);
    }
    KW_TINYINT() {
        return this.getToken(HiveSqlParser.KW_TINYINT, 0);
    }
    KW_SMALLINT() {
        return this.getToken(HiveSqlParser.KW_SMALLINT, 0);
    }
    KW_INT() {
        return this.getToken(HiveSqlParser.KW_INT, 0);
    }
    KW_INTEGER() {
        return this.getToken(HiveSqlParser.KW_INTEGER, 0);
    }
    KW_BIGINT() {
        return this.getToken(HiveSqlParser.KW_BIGINT, 0);
    }
    KW_FLOAT() {
        return this.getToken(HiveSqlParser.KW_FLOAT, 0);
    }
    KW_REAL() {
        return this.getToken(HiveSqlParser.KW_REAL, 0);
    }
    KW_DOUBLE() {
        return this.getToken(HiveSqlParser.KW_DOUBLE, 0);
    }
    KW_BOOLEAN() {
        return this.getToken(HiveSqlParser.KW_BOOLEAN, 0);
    }
    KW_STRING() {
        return this.getToken(HiveSqlParser.KW_STRING, 0);
    }
    KW_BINARY() {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    KW_ARRAY() {
        return this.getToken(HiveSqlParser.KW_ARRAY, 0);
    }
    KW_MAP() {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    KW_STRUCT() {
        return this.getToken(HiveSqlParser.KW_STRUCT, 0);
    }
    KW_UNIONTYPE() {
        return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    EQUAL_NS() {
        return this.getToken(HiveSqlParser.EQUAL_NS, 0);
    }
    NOTEQUAL() {
        return this.getToken(HiveSqlParser.NOTEQUAL, 0);
    }
    LESSTHANOREQUALTO() {
        return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0);
    }
    LESSTHAN() {
        return this.getToken(HiveSqlParser.LESSTHAN, 0);
    }
    GREATERTHANOREQUALTO() {
        return this.getToken(HiveSqlParser.GREATERTHANOREQUALTO, 0);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    DIVIDE() {
        return this.getToken(HiveSqlParser.DIVIDE, 0);
    }
    PLUS() {
        return this.getToken(HiveSqlParser.PLUS, 0);
    }
    MINUS() {
        return this.getToken(HiveSqlParser.MINUS, 0);
    }
    STAR() {
        return this.getToken(HiveSqlParser.STAR, 0);
    }
    MOD() {
        return this.getToken(HiveSqlParser.MOD, 0);
    }
    DIV() {
        return this.getToken(HiveSqlParser.DIV, 0);
    }
    AMPERSAND() {
        return this.getToken(HiveSqlParser.AMPERSAND, 0);
    }
    TILDE() {
        return this.getToken(HiveSqlParser.TILDE, 0);
    }
    BITWISEOR() {
        return this.getToken(HiveSqlParser.BITWISEOR, 0);
    }
    BITWISEXOR() {
        return this.getToken(HiveSqlParser.BITWISEXOR, 0);
    }
    KW_RLIKE() {
        return this.getToken(HiveSqlParser.KW_RLIKE, 0);
    }
    KW_REGEXP() {
        return this.getToken(HiveSqlParser.KW_REGEXP, 0);
    }
    KW_IN() {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    KW_BETWEEN() {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_sysFuncNames;
    }
    enterRule(listener) {
        if (listener.enterSysFuncNames) {
            listener.enterSysFuncNames(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSysFuncNames) {
            listener.exitSysFuncNames(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSysFuncNames) {
            return visitor.visitSysFuncNames(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Id_Context extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    Identifier() {
        return this.getToken(HiveSqlParser.Identifier, 0);
    }
    nonReserved() {
        return this.getRuleContext(0, NonReservedContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_id_;
    }
    enterRule(listener) {
        if (listener.enterId_) {
            listener.enterId_(this);
        }
    }
    exitRule(listener) {
        if (listener.exitId_) {
            listener.exitId_(this);
        }
    }
    accept(visitor) {
        if (visitor.visitId_) {
            return visitor.visitId_(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class FunctionIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    DOT() {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_functionIdentifier;
    }
    enterRule(listener) {
        if (listener.enterFunctionIdentifier) {
            listener.enterFunctionIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitFunctionIdentifier) {
            listener.exitFunctionIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitFunctionIdentifier) {
            return visitor.visitFunctionIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PrincipalIdentifierContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_principalIdentifier;
    }
    enterRule(listener) {
        if (listener.enterPrincipalIdentifier) {
            listener.enterPrincipalIdentifier(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPrincipalIdentifier) {
            listener.exitPrincipalIdentifier(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPrincipalIdentifier) {
            return visitor.visitPrincipalIdentifier(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class NonReservedContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ABORT() {
        return this.getToken(HiveSqlParser.KW_ABORT, 0);
    }
    KW_ACTIVATE() {
        return this.getToken(HiveSqlParser.KW_ACTIVATE, 0);
    }
    KW_ACTIVE() {
        return this.getToken(HiveSqlParser.KW_ACTIVE, 0);
    }
    KW_ADD() {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    KW_ADMIN() {
        return this.getToken(HiveSqlParser.KW_ADMIN, 0);
    }
    KW_AFTER() {
        return this.getToken(HiveSqlParser.KW_AFTER, 0);
    }
    KW_ALLOC_FRACTION() {
        return this.getToken(HiveSqlParser.KW_ALLOC_FRACTION, 0);
    }
    KW_ANALYZE() {
        return this.getToken(HiveSqlParser.KW_ANALYZE, 0);
    }
    KW_ARCHIVE() {
        return this.getToken(HiveSqlParser.KW_ARCHIVE, 0);
    }
    KW_ASC() {
        return this.getToken(HiveSqlParser.KW_ASC, 0);
    }
    KW_AST() {
        return this.getToken(HiveSqlParser.KW_AST, 0);
    }
    KW_AT() {
        return this.getToken(HiveSqlParser.KW_AT, 0);
    }
    KW_AUTOCOMMIT() {
        return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0);
    }
    KW_BATCH() {
        return this.getToken(HiveSqlParser.KW_BATCH, 0);
    }
    KW_BEFORE() {
        return this.getToken(HiveSqlParser.KW_BEFORE, 0);
    }
    KW_BUCKET() {
        return this.getToken(HiveSqlParser.KW_BUCKET, 0);
    }
    KW_BUCKETS() {
        return this.getToken(HiveSqlParser.KW_BUCKETS, 0);
    }
    KW_CACHE() {
        return this.getToken(HiveSqlParser.KW_CACHE, 0);
    }
    KW_CASCADE() {
        return this.getToken(HiveSqlParser.KW_CASCADE, 0);
    }
    KW_CBO() {
        return this.getToken(HiveSqlParser.KW_CBO, 0);
    }
    KW_CHANGE() {
        return this.getToken(HiveSqlParser.KW_CHANGE, 0);
    }
    KW_CHECK() {
        return this.getToken(HiveSqlParser.KW_CHECK, 0);
    }
    KW_CLUSTER() {
        return this.getToken(HiveSqlParser.KW_CLUSTER, 0);
    }
    KW_CLUSTERED() {
        return this.getToken(HiveSqlParser.KW_CLUSTERED, 0);
    }
    KW_CLUSTERSTATUS() {
        return this.getToken(HiveSqlParser.KW_CLUSTERSTATUS, 0);
    }
    KW_COLLECTION() {
        return this.getToken(HiveSqlParser.KW_COLLECTION, 0);
    }
    KW_COLUMNS() {
        return this.getToken(HiveSqlParser.KW_COLUMNS, 0);
    }
    KW_COMMENT() {
        return this.getToken(HiveSqlParser.KW_COMMENT, 0);
    }
    KW_COMPACT() {
        return this.getToken(HiveSqlParser.KW_COMPACT, 0);
    }
    KW_COMPACTIONS() {
        return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0);
    }
    KW_COMPUTE() {
        return this.getToken(HiveSqlParser.KW_COMPUTE, 0);
    }
    KW_CONCATENATE() {
        return this.getToken(HiveSqlParser.KW_CONCATENATE, 0);
    }
    KW_CONTINUE() {
        return this.getToken(HiveSqlParser.KW_CONTINUE, 0);
    }
    KW_COST() {
        return this.getToken(HiveSqlParser.KW_COST, 0);
    }
    KW_CRON() {
        return this.getToken(HiveSqlParser.KW_CRON, 0);
    }
    KW_DATA() {
        return this.getToken(HiveSqlParser.KW_DATA, 0);
    }
    KW_DATABASES() {
        return this.getToken(HiveSqlParser.KW_DATABASES, 0);
    }
    KW_DATETIME() {
        return this.getToken(HiveSqlParser.KW_DATETIME, 0);
    }
    KW_DAY() {
        return this.getToken(HiveSqlParser.KW_DAY, 0);
    }
    KW_DAYS() {
        return this.getToken(HiveSqlParser.KW_DAYS, 0);
    }
    KW_DAYOFWEEK() {
        return this.getToken(HiveSqlParser.KW_DAYOFWEEK, 0);
    }
    KW_DBPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0);
    }
    KW_DCPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0);
    }
    KW_DEBUG() {
        return this.getToken(HiveSqlParser.KW_DEBUG, 0);
    }
    KW_DEFAULT() {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    KW_DEFERRED() {
        return this.getToken(HiveSqlParser.KW_DEFERRED, 0);
    }
    KW_DEFINED() {
        return this.getToken(HiveSqlParser.KW_DEFINED, 0);
    }
    KW_DELIMITED() {
        return this.getToken(HiveSqlParser.KW_DELIMITED, 0);
    }
    KW_DEPENDENCY() {
        return this.getToken(HiveSqlParser.KW_DEPENDENCY, 0);
    }
    KW_DESC() {
        return this.getToken(HiveSqlParser.KW_DESC, 0);
    }
    KW_DETAIL() {
        return this.getToken(HiveSqlParser.KW_DETAIL, 0);
    }
    KW_DIRECTORIES() {
        return this.getToken(HiveSqlParser.KW_DIRECTORIES, 0);
    }
    KW_DIRECTORY() {
        return this.getToken(HiveSqlParser.KW_DIRECTORY, 0);
    }
    KW_DISABLE() {
        return this.getToken(HiveSqlParser.KW_DISABLE, 0);
    }
    KW_DISABLED() {
        return this.getToken(HiveSqlParser.KW_DISABLED, 0);
    }
    KW_DISTRIBUTE() {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTE, 0);
    }
    KW_DISTRIBUTED() {
        return this.getToken(HiveSqlParser.KW_DISTRIBUTED, 0);
    }
    KW_DO() {
        return this.getToken(HiveSqlParser.KW_DO, 0);
    }
    KW_DUMP() {
        return this.getToken(HiveSqlParser.KW_DUMP, 0);
    }
    KW_ELEM_TYPE() {
        return this.getToken(HiveSqlParser.KW_ELEM_TYPE, 0);
    }
    KW_ENABLE() {
        return this.getToken(HiveSqlParser.KW_ENABLE, 0);
    }
    KW_ENABLED() {
        return this.getToken(HiveSqlParser.KW_ENABLED, 0);
    }
    KW_ENFORCED() {
        return this.getToken(HiveSqlParser.KW_ENFORCED, 0);
    }
    KW_ESCAPED() {
        return this.getToken(HiveSqlParser.KW_ESCAPED, 0);
    }
    KW_EVERY() {
        return this.getToken(HiveSqlParser.KW_EVERY, 0);
    }
    KW_EXCLUSIVE() {
        return this.getToken(HiveSqlParser.KW_EXCLUSIVE, 0);
    }
    KW_EXECUTE() {
        return this.getToken(HiveSqlParser.KW_EXECUTE, 0);
    }
    KW_EXECUTED() {
        return this.getToken(HiveSqlParser.KW_EXECUTED, 0);
    }
    KW_EXPIRE_SNAPSHOTS() {
        return this.getToken(HiveSqlParser.KW_EXPIRE_SNAPSHOTS, 0);
    }
    KW_EXPLAIN() {
        return this.getToken(HiveSqlParser.KW_EXPLAIN, 0);
    }
    KW_EXPORT() {
        return this.getToken(HiveSqlParser.KW_EXPORT, 0);
    }
    KW_EXPRESSION() {
        return this.getToken(HiveSqlParser.KW_EXPRESSION, 0);
    }
    KW_FIELDS() {
        return this.getToken(HiveSqlParser.KW_FIELDS, 0);
    }
    KW_FILE() {
        return this.getToken(HiveSqlParser.KW_FILE, 0);
    }
    KW_FILEFORMAT() {
        return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0);
    }
    KW_FIRST() {
        return this.getToken(HiveSqlParser.KW_FIRST, 0);
    }
    KW_FORMAT() {
        return this.getToken(HiveSqlParser.KW_FORMAT, 0);
    }
    KW_FORMATTED() {
        return this.getToken(HiveSqlParser.KW_FORMATTED, 0);
    }
    KW_FUNCTIONS() {
        return this.getToken(HiveSqlParser.KW_FUNCTIONS, 0);
    }
    KW_HOLD_DDLTIME() {
        return this.getToken(HiveSqlParser.KW_HOLD_DDLTIME, 0);
    }
    KW_HOUR() {
        return this.getToken(HiveSqlParser.KW_HOUR, 0);
    }
    KW_HOURS() {
        return this.getToken(HiveSqlParser.KW_HOURS, 0);
    }
    KW_IDXPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_IDXPROPERTIES, 0);
    }
    KW_IGNORE() {
        return this.getToken(HiveSqlParser.KW_IGNORE, 0);
    }
    KW_INDEX() {
        return this.getToken(HiveSqlParser.KW_INDEX, 0);
    }
    KW_INDEXES() {
        return this.getToken(HiveSqlParser.KW_INDEXES, 0);
    }
    KW_INPATH() {
        return this.getToken(HiveSqlParser.KW_INPATH, 0);
    }
    KW_INPUTDRIVER() {
        return this.getToken(HiveSqlParser.KW_INPUTDRIVER, 0);
    }
    KW_INPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0);
    }
    KW_ISOLATION() {
        return this.getToken(HiveSqlParser.KW_ISOLATION, 0);
    }
    KW_ITEMS() {
        return this.getToken(HiveSqlParser.KW_ITEMS, 0);
    }
    KW_JAR() {
        return this.getToken(HiveSqlParser.KW_JAR, 0);
    }
    KW_JOINCOST() {
        return this.getToken(HiveSqlParser.KW_JOINCOST, 0);
    }
    KW_KEY() {
        return this.getToken(HiveSqlParser.KW_KEY, 0);
    }
    KW_KEYS() {
        return this.getToken(HiveSqlParser.KW_KEYS, 0);
    }
    KW_KEY_TYPE() {
        return this.getToken(HiveSqlParser.KW_KEY_TYPE, 0);
    }
    KW_KILL() {
        return this.getToken(HiveSqlParser.KW_KILL, 0);
    }
    KW_LAST() {
        return this.getToken(HiveSqlParser.KW_LAST, 0);
    }
    KW_LEVEL() {
        return this.getToken(HiveSqlParser.KW_LEVEL, 0);
    }
    KW_LIFECYCLE() {
        return this.getToken(HiveSqlParser.KW_LIFECYCLE, 0);
    }
    KW_LIMIT() {
        return this.getToken(HiveSqlParser.KW_LIMIT, 0);
    }
    KW_LINES() {
        return this.getToken(HiveSqlParser.KW_LINES, 0);
    }
    KW_LOAD() {
        return this.getToken(HiveSqlParser.KW_LOAD, 0);
    }
    KW_LOCATION() {
        return this.getToken(HiveSqlParser.KW_LOCATION, 0);
    }
    KW_LOCK() {
        return this.getToken(HiveSqlParser.KW_LOCK, 0);
    }
    KW_LOCKS() {
        return this.getToken(HiveSqlParser.KW_LOCKS, 0);
    }
    KW_LOGICAL() {
        return this.getToken(HiveSqlParser.KW_LOGICAL, 0);
    }
    KW_LONG() {
        return this.getToken(HiveSqlParser.KW_LONG, 0);
    }
    KW_MANAGED() {
        return this.getToken(HiveSqlParser.KW_MANAGED, 0);
    }
    KW_MANAGEDLOCATION() {
        return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0);
    }
    KW_MANAGEMENT() {
        return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0);
    }
    KW_MAPJOIN() {
        return this.getToken(HiveSqlParser.KW_MAPJOIN, 0);
    }
    KW_MAPPING() {
        return this.getToken(HiveSqlParser.KW_MAPPING, 0);
    }
    KW_MATCHED() {
        return this.getToken(HiveSqlParser.KW_MATCHED, 0);
    }
    KW_MATERIALIZED() {
        return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0);
    }
    KW_METADATA() {
        return this.getToken(HiveSqlParser.KW_METADATA, 0);
    }
    KW_MINUTE() {
        return this.getToken(HiveSqlParser.KW_MINUTE, 0);
    }
    KW_MINUTES() {
        return this.getToken(HiveSqlParser.KW_MINUTES, 0);
    }
    KW_MONTH() {
        return this.getToken(HiveSqlParser.KW_MONTH, 0);
    }
    KW_MONTHS() {
        return this.getToken(HiveSqlParser.KW_MONTHS, 0);
    }
    KW_MOVE() {
        return this.getToken(HiveSqlParser.KW_MOVE, 0);
    }
    KW_MSCK() {
        return this.getToken(HiveSqlParser.KW_MSCK, 0);
    }
    KW_NORELY() {
        return this.getToken(HiveSqlParser.KW_NORELY, 0);
    }
    KW_NOSCAN() {
        return this.getToken(HiveSqlParser.KW_NOSCAN, 0);
    }
    KW_NOVALIDATE() {
        return this.getToken(HiveSqlParser.KW_NOVALIDATE, 0);
    }
    KW_NO_DROP() {
        return this.getToken(HiveSqlParser.KW_NO_DROP, 0);
    }
    KW_NULLS() {
        return this.getToken(HiveSqlParser.KW_NULLS, 0);
    }
    KW_OFFLINE() {
        return this.getToken(HiveSqlParser.KW_OFFLINE, 0);
    }
    KW_OFFSET() {
        return this.getToken(HiveSqlParser.KW_OFFSET, 0);
    }
    KW_OPERATOR() {
        return this.getToken(HiveSqlParser.KW_OPERATOR, 0);
    }
    KW_OPTION() {
        return this.getToken(HiveSqlParser.KW_OPTION, 0);
    }
    KW_OUTPUTDRIVER() {
        return this.getToken(HiveSqlParser.KW_OUTPUTDRIVER, 0);
    }
    KW_OUTPUTFORMAT() {
        return this.getToken(HiveSqlParser.KW_OUTPUTFORMAT, 0);
    }
    KW_OVERWRITE() {
        return this.getToken(HiveSqlParser.KW_OVERWRITE, 0);
    }
    KW_OWNER() {
        return this.getToken(HiveSqlParser.KW_OWNER, 0);
    }
    KW_PARTITIONED() {
        return this.getToken(HiveSqlParser.KW_PARTITIONED, 0);
    }
    KW_PARTITIONS() {
        return this.getToken(HiveSqlParser.KW_PARTITIONS, 0);
    }
    KW_PATH() {
        return this.getToken(HiveSqlParser.KW_PATH, 0);
    }
    KW_PLAN() {
        return this.getToken(HiveSqlParser.KW_PLAN, 0);
    }
    KW_PLANS() {
        return this.getToken(HiveSqlParser.KW_PLANS, 0);
    }
    KW_PLUS() {
        return this.getToken(HiveSqlParser.KW_PLUS, 0);
    }
    KW_POOL() {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    KW_PRINCIPALS() {
        return this.getToken(HiveSqlParser.KW_PRINCIPALS, 0);
    }
    KW_PROTECTION() {
        return this.getToken(HiveSqlParser.KW_PROTECTION, 0);
    }
    KW_PURGE() {
        return this.getToken(HiveSqlParser.KW_PURGE, 0);
    }
    KW_QUARTER() {
        return this.getToken(HiveSqlParser.KW_QUARTER, 0);
    }
    KW_QUERY() {
        return this.getToken(HiveSqlParser.KW_QUERY, 0);
    }
    KW_QUERY_PARALLELISM() {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    KW_READ() {
        return this.getToken(HiveSqlParser.KW_READ, 0);
    }
    KW_READONLY() {
        return this.getToken(HiveSqlParser.KW_READONLY, 0);
    }
    KW_REBUILD() {
        return this.getToken(HiveSqlParser.KW_REBUILD, 0);
    }
    KW_RECORDREADER() {
        return this.getToken(HiveSqlParser.KW_RECORDREADER, 0);
    }
    KW_RECORDWRITER() {
        return this.getToken(HiveSqlParser.KW_RECORDWRITER, 0);
    }
    KW_RELOAD() {
        return this.getToken(HiveSqlParser.KW_RELOAD, 0);
    }
    KW_RELY() {
        return this.getToken(HiveSqlParser.KW_RELY, 0);
    }
    KW_REMOTE() {
        return this.getToken(HiveSqlParser.KW_REMOTE, 0);
    }
    KW_RENAME() {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    KW_REOPTIMIZATION() {
        return this.getToken(HiveSqlParser.KW_REOPTIMIZATION, 0);
    }
    KW_REPAIR() {
        return this.getToken(HiveSqlParser.KW_REPAIR, 0);
    }
    KW_REPL() {
        return this.getToken(HiveSqlParser.KW_REPL, 0);
    }
    KW_REPLACE() {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    KW_REPLICATION() {
        return this.getToken(HiveSqlParser.KW_REPLICATION, 0);
    }
    KW_RESOURCE() {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0);
    }
    KW_RESPECT() {
        return this.getToken(HiveSqlParser.KW_RESPECT, 0);
    }
    KW_RESTRICT() {
        return this.getToken(HiveSqlParser.KW_RESTRICT, 0);
    }
    KW_REWRITE() {
        return this.getToken(HiveSqlParser.KW_REWRITE, 0);
    }
    KW_ROLE() {
        return this.getToken(HiveSqlParser.KW_ROLE, 0);
    }
    KW_ROLES() {
        return this.getToken(HiveSqlParser.KW_ROLES, 0);
    }
    KW_SCHEDULED() {
        return this.getToken(HiveSqlParser.KW_SCHEDULED, 0);
    }
    KW_SCHEDULING_POLICY() {
        return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0);
    }
    KW_SCHEMA() {
        return this.getToken(HiveSqlParser.KW_SCHEMA, 0);
    }
    KW_SCHEMAS() {
        return this.getToken(HiveSqlParser.KW_SCHEMAS, 0);
    }
    KW_SECOND() {
        return this.getToken(HiveSqlParser.KW_SECOND, 0);
    }
    KW_SECONDS() {
        return this.getToken(HiveSqlParser.KW_SECONDS, 0);
    }
    KW_SEMI() {
        return this.getToken(HiveSqlParser.KW_SEMI, 0);
    }
    KW_SERDE() {
        return this.getToken(HiveSqlParser.KW_SERDE, 0);
    }
    KW_SERDEPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0);
    }
    KW_SERVER() {
        return this.getToken(HiveSqlParser.KW_SERVER, 0);
    }
    KW_SETS() {
        return this.getToken(HiveSqlParser.KW_SETS, 0);
    }
    KW_SET_CURRENT_SNAPSHOT() {
        return this.getToken(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT, 0);
    }
    KW_SHARED() {
        return this.getToken(HiveSqlParser.KW_SHARED, 0);
    }
    KW_SHOW() {
        return this.getToken(HiveSqlParser.KW_SHOW, 0);
    }
    KW_SHOW_DATABASE() {
        return this.getToken(HiveSqlParser.KW_SHOW_DATABASE, 0);
    }
    KW_SKEWED() {
        return this.getToken(HiveSqlParser.KW_SKEWED, 0);
    }
    KW_SNAPSHOT() {
        return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0);
    }
    KW_SORT() {
        return this.getToken(HiveSqlParser.KW_SORT, 0);
    }
    KW_SORTED() {
        return this.getToken(HiveSqlParser.KW_SORTED, 0);
    }
    KW_SPEC() {
        return this.getToken(HiveSqlParser.KW_SPEC, 0);
    }
    KW_SSL() {
        return this.getToken(HiveSqlParser.KW_SSL, 0);
    }
    KW_STATISTICS() {
        return this.getToken(HiveSqlParser.KW_STATISTICS, 0);
    }
    KW_STATUS() {
        return this.getToken(HiveSqlParser.KW_STATUS, 0);
    }
    KW_STORED() {
        return this.getToken(HiveSqlParser.KW_STORED, 0);
    }
    KW_STREAMTABLE() {
        return this.getToken(HiveSqlParser.KW_STREAMTABLE, 0);
    }
    KW_STRING() {
        return this.getToken(HiveSqlParser.KW_STRING, 0);
    }
    KW_STRUCT() {
        return this.getToken(HiveSqlParser.KW_STRUCT, 0);
    }
    KW_SUMMARY() {
        return this.getToken(HiveSqlParser.KW_SUMMARY, 0);
    }
    KW_SYSTEM_TIME() {
        return this.getToken(HiveSqlParser.KW_SYSTEM_TIME, 0);
    }
    KW_SYSTEM_VERSION() {
        return this.getToken(HiveSqlParser.KW_SYSTEM_VERSION, 0);
    }
    KW_TABLES() {
        return this.getToken(HiveSqlParser.KW_TABLES, 0);
    }
    KW_TBLPROPERTIES() {
        return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0);
    }
    KW_TEMPORARY() {
        return this.getToken(HiveSqlParser.KW_TEMPORARY, 0);
    }
    KW_TERMINATED() {
        return this.getToken(HiveSqlParser.KW_TERMINATED, 0);
    }
    KW_TIMESTAMPTZ() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMPTZ, 0);
    }
    KW_TINYINT() {
        return this.getToken(HiveSqlParser.KW_TINYINT, 0);
    }
    KW_TOUCH() {
        return this.getToken(HiveSqlParser.KW_TOUCH, 0);
    }
    KW_TRANSACTION() {
        return this.getToken(HiveSqlParser.KW_TRANSACTION, 0);
    }
    KW_TRANSACTIONAL() {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONAL, 0);
    }
    KW_TRANSACTIONS() {
        return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0);
    }
    KW_TRIM() {
        return this.getToken(HiveSqlParser.KW_TRIM, 0);
    }
    KW_TYPE() {
        return this.getToken(HiveSqlParser.KW_TYPE, 0);
    }
    KW_UNARCHIVE() {
        return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0);
    }
    KW_UNDO() {
        return this.getToken(HiveSqlParser.KW_UNDO, 0);
    }
    KW_UNIONTYPE() {
        return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0);
    }
    KW_UNKNOWN() {
        return this.getToken(HiveSqlParser.KW_UNKNOWN, 0);
    }
    KW_UNLOCK() {
        return this.getToken(HiveSqlParser.KW_UNLOCK, 0);
    }
    KW_UNMANAGED() {
        return this.getToken(HiveSqlParser.KW_UNMANAGED, 0);
    }
    KW_UNSET() {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    KW_UNSIGNED() {
        return this.getToken(HiveSqlParser.KW_UNSIGNED, 0);
    }
    KW_URI() {
        return this.getToken(HiveSqlParser.KW_URI, 0);
    }
    KW_URL() {
        return this.getToken(HiveSqlParser.KW_URL, 0);
    }
    KW_USE() {
        return this.getToken(HiveSqlParser.KW_USE, 0);
    }
    KW_UTC() {
        return this.getToken(HiveSqlParser.KW_UTC, 0);
    }
    KW_UTCTIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_UTCTIMESTAMP, 0);
    }
    KW_VALIDATE() {
        return this.getToken(HiveSqlParser.KW_VALIDATE, 0);
    }
    KW_VALUE_TYPE() {
        return this.getToken(HiveSqlParser.KW_VALUE_TYPE, 0);
    }
    KW_VECTORIZATION() {
        return this.getToken(HiveSqlParser.KW_VECTORIZATION, 0);
    }
    KW_VIEW() {
        return this.getToken(HiveSqlParser.KW_VIEW, 0);
    }
    KW_VIEWS() {
        return this.getToken(HiveSqlParser.KW_VIEWS, 0);
    }
    KW_WAIT() {
        return this.getToken(HiveSqlParser.KW_WAIT, 0);
    }
    KW_WEEK() {
        return this.getToken(HiveSqlParser.KW_WEEK, 0);
    }
    KW_WEEKS() {
        return this.getToken(HiveSqlParser.KW_WEEKS, 0);
    }
    KW_WHILE() {
        return this.getToken(HiveSqlParser.KW_WHILE, 0);
    }
    KW_WITHIN() {
        return this.getToken(HiveSqlParser.KW_WITHIN, 0);
    }
    KW_WORK() {
        return this.getToken(HiveSqlParser.KW_WORK, 0);
    }
    KW_WORKLOAD() {
        return this.getToken(HiveSqlParser.KW_WORKLOAD, 0);
    }
    KW_WRITE() {
        return this.getToken(HiveSqlParser.KW_WRITE, 0);
    }
    KW_YEAR() {
        return this.getToken(HiveSqlParser.KW_YEAR, 0);
    }
    KW_YEARS() {
        return this.getToken(HiveSqlParser.KW_YEARS, 0);
    }
    KW_ZONE() {
        return this.getToken(HiveSqlParser.KW_ZONE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_nonReserved;
    }
    enterRule(listener) {
        if (listener.enterNonReserved) {
            listener.enterNonReserved(this);
        }
    }
    exitRule(listener) {
        if (listener.exitNonReserved) {
            listener.exitNonReserved(this);
        }
    }
    accept(visitor) {
        if (visitor.visitNonReserved) {
            return visitor.visitNonReserved(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class Sql11ReservedKeywordsUsedAsFunctionNameContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ARRAY() {
        return this.getToken(HiveSqlParser.KW_ARRAY, 0);
    }
    KW_BIGINT() {
        return this.getToken(HiveSqlParser.KW_BIGINT, 0);
    }
    KW_BINARY() {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    KW_BOOLEAN() {
        return this.getToken(HiveSqlParser.KW_BOOLEAN, 0);
    }
    KW_CURRENT_DATE() {
        return this.getToken(HiveSqlParser.KW_CURRENT_DATE, 0);
    }
    KW_CURRENT_TIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0);
    }
    KW_DATE() {
        return this.getToken(HiveSqlParser.KW_DATE, 0);
    }
    KW_DOUBLE() {
        return this.getToken(HiveSqlParser.KW_DOUBLE, 0);
    }
    KW_FLOAT() {
        return this.getToken(HiveSqlParser.KW_FLOAT, 0);
    }
    KW_GROUPING() {
        return this.getToken(HiveSqlParser.KW_GROUPING, 0);
    }
    KW_IF() {
        return this.getToken(HiveSqlParser.KW_IF, 0);
    }
    KW_INT() {
        return this.getToken(HiveSqlParser.KW_INT, 0);
    }
    KW_INTEGER() {
        return this.getToken(HiveSqlParser.KW_INTEGER, 0);
    }
    KW_MAP() {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    KW_REAL() {
        return this.getToken(HiveSqlParser.KW_REAL, 0);
    }
    KW_SMALLINT() {
        return this.getToken(HiveSqlParser.KW_SMALLINT, 0);
    }
    KW_TIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName;
    }
    enterRule(listener) {
        if (listener.enterSql11ReservedKeywordsUsedAsFunctionName) {
            listener.enterSql11ReservedKeywordsUsedAsFunctionName(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSql11ReservedKeywordsUsedAsFunctionName) {
            listener.exitSql11ReservedKeywordsUsedAsFunctionName(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSql11ReservedKeywordsUsedAsFunctionName) {
            return visitor.visitSql11ReservedKeywordsUsedAsFunctionName(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ConfigPropertiesItemContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    KW_SELECT() {
        return this.getToken(HiveSqlParser.KW_SELECT, 0);
    }
    KW_JOIN() {
        return this.getToken(HiveSqlParser.KW_JOIN, 0);
    }
    KW_PARTITION() {
        return this.getToken(HiveSqlParser.KW_PARTITION, 0);
    }
    KW_MAP() {
        return this.getToken(HiveSqlParser.KW_MAP, 0);
    }
    KW_REDUCE() {
        return this.getToken(HiveSqlParser.KW_REDUCE, 0);
    }
    KW_USER() {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    KW_PERCENT() {
        return this.getToken(HiveSqlParser.KW_PERCENT, 0);
    }
    KW_INTERVAL() {
        return this.getToken(HiveSqlParser.KW_INTERVAL, 0);
    }
    KW_ROWS() {
        return this.getToken(HiveSqlParser.KW_ROWS, 0);
    }
    KW_UNION() {
        return this.getToken(HiveSqlParser.KW_UNION, 0);
    }
    KW_GROUP() {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    KW_MERGE() {
        return this.getToken(HiveSqlParser.KW_MERGE, 0);
    }
    KW_NULL() {
        return this.getToken(HiveSqlParser.KW_NULL, 0);
    }
    KW_FETCH() {
        return this.getToken(HiveSqlParser.KW_FETCH, 0);
    }
    KW_LOCAL() {
        return this.getToken(HiveSqlParser.KW_LOCAL, 0);
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    KW_TABLE() {
        return this.getToken(HiveSqlParser.KW_TABLE, 0);
    }
    KW_ON() {
        return this.getToken(HiveSqlParser.KW_ON, 0);
    }
    KW_ROW() {
        return this.getToken(HiveSqlParser.KW_ROW, 0);
    }
    KW_GROUPING() {
        return this.getToken(HiveSqlParser.KW_GROUPING, 0);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_FORCE() {
        return this.getToken(HiveSqlParser.KW_FORCE, 0);
    }
    KW_START() {
        return this.getToken(HiveSqlParser.KW_START, 0);
    }
    KW_INSERT() {
        return this.getToken(HiveSqlParser.KW_INSERT, 0);
    }
    KW_CONF() {
        return this.getToken(HiveSqlParser.KW_CONF, 0);
    }
    KW_INTO() {
        return this.getToken(HiveSqlParser.KW_INTO, 0);
    }
    KW_UNIQUE() {
        return this.getToken(HiveSqlParser.KW_UNIQUE, 0);
    }
    KW_COLUMN() {
        return this.getToken(HiveSqlParser.KW_COLUMN, 0);
    }
    KW_TRANSFORM() {
        return this.getToken(HiveSqlParser.KW_TRANSFORM, 0);
    }
    KW_DISTINCT() {
        return this.getToken(HiveSqlParser.KW_DISTINCT, 0);
    }
    KW_IN() {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    KW_REFERENCES() {
        return this.getToken(HiveSqlParser.KW_REFERENCES, 0);
    }
    KW_TIMESTAMP() {
        return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0);
    }
    KW_ONLY() {
        return this.getToken(HiveSqlParser.KW_ONLY, 0);
    }
    KW_END() {
        return this.getToken(HiveSqlParser.KW_END, 0);
    }
    KW_FUNCTION() {
        return this.getToken(HiveSqlParser.KW_FUNCTION, 0);
    }
    KW_UPDATE() {
        return this.getToken(HiveSqlParser.KW_UPDATE, 0);
    }
    KW_AUTHORIZATION() {
        return this.getToken(HiveSqlParser.KW_AUTHORIZATION, 0);
    }
    KW_DDL() {
        return this.getToken(HiveSqlParser.KW_DDL, 0);
    }
    KW_VALUES() {
        return this.getToken(HiveSqlParser.KW_VALUES, 0);
    }
    KW_TIME() {
        return this.getToken(HiveSqlParser.KW_TIME, 0);
    }
    KW_IS() {
        return this.getToken(HiveSqlParser.KW_IS, 0);
    }
    KW_FOR() {
        return this.getToken(HiveSqlParser.KW_FOR, 0);
    }
    KW_NOT() {
        return this.getToken(HiveSqlParser.KW_NOT, 0);
    }
    KW_BINARY() {
        return this.getToken(HiveSqlParser.KW_BINARY, 0);
    }
    KW_USING() {
        return this.getToken(HiveSqlParser.KW_USING, 0);
    }
    KW_READS() {
        return this.getToken(HiveSqlParser.KW_READS, 0);
    }
    KW_BETWEEN() {
        return this.getToken(HiveSqlParser.KW_BETWEEN, 0);
    }
    KW_CURRENT() {
        return this.getToken(HiveSqlParser.KW_CURRENT, 0);
    }
    KW_AS() {
        return this.getToken(HiveSqlParser.KW_AS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_configPropertiesItem;
    }
    enterRule(listener) {
        if (listener.enterConfigPropertiesItem) {
            listener.enterConfigPropertiesItem(this);
        }
    }
    exitRule(listener) {
        if (listener.exitConfigPropertiesItem) {
            listener.exitConfigPropertiesItem(this);
        }
    }
    accept(visitor) {
        if (visitor.visitConfigPropertiesItem) {
            return visitor.visitConfigPropertiesItem(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ResourcePlanDdlStatementsContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_CREATE() {
        return this.getToken(HiveSqlParser.KW_CREATE, 0);
    }
    KW_RESOURCE() {
        return this.getToken(HiveSqlParser.KW_RESOURCE, 0);
    }
    KW_PLAN() {
        return this.getToken(HiveSqlParser.KW_PLAN, 0);
    }
    KW_LIKE() {
        return this.getToken(HiveSqlParser.KW_LIKE, 0);
    }
    ifNotExists() {
        return this.getRuleContext(0, IfNotExistsContext);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    rpAssignList() {
        return this.getRuleContext(0, RpAssignListContext);
    }
    KW_ALTER() {
        return this.getToken(HiveSqlParser.KW_ALTER, 0);
    }
    KW_VALIDATE() {
        return this.getToken(HiveSqlParser.KW_VALIDATE, 0);
    }
    disable() {
        return this.getRuleContext(0, DisableContext);
    }
    KW_SET() {
        return this.getToken(HiveSqlParser.KW_SET, 0);
    }
    KW_UNSET() {
        return this.getToken(HiveSqlParser.KW_UNSET, 0);
    }
    rpUnassign(i) {
        if (i === undefined) {
            return this.getRuleContexts(RpUnassignContext);
        }
        return this.getRuleContext(i, RpUnassignContext);
    }
    KW_RENAME() {
        return this.getToken(HiveSqlParser.KW_RENAME, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    activate() {
        return this.getRuleContext(0, ActivateContext);
    }
    enable() {
        return this.getRuleContext(0, EnableContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    KW_DROP() {
        return this.getToken(HiveSqlParser.KW_DROP, 0);
    }
    ifExists() {
        return this.getRuleContext(0, IfExistsContext);
    }
    KW_WORKLOAD() {
        return this.getToken(HiveSqlParser.KW_WORKLOAD, 0);
    }
    KW_MANAGEMENT() {
        return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0);
    }
    KW_REPLACE() {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    KW_ACTIVE() {
        return this.getToken(HiveSqlParser.KW_ACTIVE, 0);
    }
    KW_TRIGGER() {
        return this.getToken(HiveSqlParser.KW_TRIGGER, 0);
    }
    DOT() {
        return this.getToken(HiveSqlParser.DOT, 0);
    }
    KW_WHEN() {
        return this.getToken(HiveSqlParser.KW_WHEN, 0);
    }
    triggerAtomExpression() {
        return this.getRuleContext(0, TriggerAtomExpressionContext);
    }
    KW_DO() {
        return this.getToken(HiveSqlParser.KW_DO, 0);
    }
    triggerActionExpression() {
        return this.getRuleContext(0, TriggerActionExpressionContext);
    }
    KW_ADD() {
        return this.getToken(HiveSqlParser.KW_ADD, 0);
    }
    KW_FROM() {
        return this.getToken(HiveSqlParser.KW_FROM, 0);
    }
    KW_POOL() {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    KW_UNMANAGED() {
        return this.getToken(HiveSqlParser.KW_UNMANAGED, 0);
    }
    poolPath() {
        return this.getRuleContext(0, PoolPathContext);
    }
    poolAssignList() {
        return this.getRuleContext(0, PoolAssignListContext);
    }
    KW_SCHEDULING_POLICY() {
        return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0);
    }
    KW_MAPPING() {
        return this.getToken(HiveSqlParser.KW_MAPPING, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    KW_IN() {
        return this.getToken(HiveSqlParser.KW_IN, 0);
    }
    mappingTypes() {
        return this.getRuleContext(0, MappingTypesContext);
    }
    KW_ORDER() {
        return this.getToken(HiveSqlParser.KW_ORDER, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_resourcePlanDdlStatements;
    }
    enterRule(listener) {
        if (listener.enterResourcePlanDdlStatements) {
            listener.enterResourcePlanDdlStatements(this);
        }
    }
    exitRule(listener) {
        if (listener.exitResourcePlanDdlStatements) {
            listener.exitResourcePlanDdlStatements(this);
        }
    }
    accept(visitor) {
        if (visitor.visitResourcePlanDdlStatements) {
            return visitor.visitResourcePlanDdlStatements(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class MappingTypesContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_USER() {
        return this.getToken(HiveSqlParser.KW_USER, 0);
    }
    KW_GROUP() {
        return this.getToken(HiveSqlParser.KW_GROUP, 0);
    }
    KW_APPLICATION() {
        return this.getToken(HiveSqlParser.KW_APPLICATION, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_mappingTypes;
    }
    enterRule(listener) {
        if (listener.enterMappingTypes) {
            listener.enterMappingTypes(this);
        }
    }
    exitRule(listener) {
        if (listener.exitMappingTypes) {
            listener.exitMappingTypes(this);
        }
    }
    accept(visitor) {
        if (visitor.visitMappingTypes) {
            return visitor.visitMappingTypes(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RpAssignContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_QUERY_PARALLELISM() {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    KW_DEFAULT() {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    KW_POOL() {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    poolPath() {
        return this.getRuleContext(0, PoolPathContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rpAssign;
    }
    enterRule(listener) {
        if (listener.enterRpAssign) {
            listener.enterRpAssign(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRpAssign) {
            listener.exitRpAssign(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRpAssign) {
            return visitor.visitRpAssign(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RpAssignListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    rpAssign(i) {
        if (i === undefined) {
            return this.getRuleContexts(RpAssignContext);
        }
        return this.getRuleContext(i, RpAssignContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rpAssignList;
    }
    enterRule(listener) {
        if (listener.enterRpAssignList) {
            listener.enterRpAssignList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRpAssignList) {
            listener.exitRpAssignList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRpAssignList) {
            return visitor.visitRpAssignList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class RpUnassignContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_QUERY_PARALLELISM() {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    KW_DEFAULT() {
        return this.getToken(HiveSqlParser.KW_DEFAULT, 0);
    }
    KW_POOL() {
        return this.getToken(HiveSqlParser.KW_POOL, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_rpUnassign;
    }
    enterRule(listener) {
        if (listener.enterRpUnassign) {
            listener.enterRpUnassign(this);
        }
    }
    exitRule(listener) {
        if (listener.exitRpUnassign) {
            listener.exitRpUnassign(this);
        }
    }
    accept(visitor) {
        if (visitor.visitRpUnassign) {
            return visitor.visitRpUnassign(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class ActivateContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ACTIVATE() {
        return this.getToken(HiveSqlParser.KW_ACTIVATE, 0);
    }
    KW_WITH() {
        return this.getToken(HiveSqlParser.KW_WITH, 0);
    }
    KW_REPLACE() {
        return this.getToken(HiveSqlParser.KW_REPLACE, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_activate;
    }
    enterRule(listener) {
        if (listener.enterActivate) {
            listener.enterActivate(this);
        }
    }
    exitRule(listener) {
        if (listener.exitActivate) {
            listener.exitActivate(this);
        }
    }
    accept(visitor) {
        if (visitor.visitActivate) {
            return visitor.visitActivate(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class EnableContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ENABLE() {
        return this.getToken(HiveSqlParser.KW_ENABLE, 0);
    }
    KW_ENABLED() {
        return this.getToken(HiveSqlParser.KW_ENABLED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_enable;
    }
    enterRule(listener) {
        if (listener.enterEnable) {
            listener.enterEnable(this);
        }
    }
    exitRule(listener) {
        if (listener.exitEnable) {
            listener.exitEnable(this);
        }
    }
    accept(visitor) {
        if (visitor.visitEnable) {
            return visitor.visitEnable(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DisableContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DISABLE() {
        return this.getToken(HiveSqlParser.KW_DISABLE, 0);
    }
    KW_DISABLED() {
        return this.getToken(HiveSqlParser.KW_DISABLED, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_disable;
    }
    enterRule(listener) {
        if (listener.enterDisable) {
            listener.enterDisable(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDisable) {
            listener.exitDisable(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDisable) {
            return visitor.visitDisable(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class YearContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_YEAR() {
        return this.getToken(HiveSqlParser.KW_YEAR, 0);
    }
    KW_YEARS() {
        return this.getToken(HiveSqlParser.KW_YEARS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_year;
    }
    enterRule(listener) {
        if (listener.enterYear) {
            listener.enterYear(this);
        }
    }
    exitRule(listener) {
        if (listener.exitYear) {
            listener.exitYear(this);
        }
    }
    accept(visitor) {
        if (visitor.visitYear) {
            return visitor.visitYear(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class MonthContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_MONTH() {
        return this.getToken(HiveSqlParser.KW_MONTH, 0);
    }
    KW_MONTHS() {
        return this.getToken(HiveSqlParser.KW_MONTHS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_month;
    }
    enterRule(listener) {
        if (listener.enterMonth) {
            listener.enterMonth(this);
        }
    }
    exitRule(listener) {
        if (listener.exitMonth) {
            listener.exitMonth(this);
        }
    }
    accept(visitor) {
        if (visitor.visitMonth) {
            return visitor.visitMonth(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class WeekContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_WEEK() {
        return this.getToken(HiveSqlParser.KW_WEEK, 0);
    }
    KW_WEEKS() {
        return this.getToken(HiveSqlParser.KW_WEEKS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_week;
    }
    enterRule(listener) {
        if (listener.enterWeek) {
            listener.enterWeek(this);
        }
    }
    exitRule(listener) {
        if (listener.exitWeek) {
            listener.exitWeek(this);
        }
    }
    accept(visitor) {
        if (visitor.visitWeek) {
            return visitor.visitWeek(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DayContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DAY() {
        return this.getToken(HiveSqlParser.KW_DAY, 0);
    }
    KW_DAYS() {
        return this.getToken(HiveSqlParser.KW_DAYS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_day;
    }
    enterRule(listener) {
        if (listener.enterDay) {
            listener.enterDay(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDay) {
            listener.exitDay(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDay) {
            return visitor.visitDay(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class HourContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_HOUR() {
        return this.getToken(HiveSqlParser.KW_HOUR, 0);
    }
    KW_HOURS() {
        return this.getToken(HiveSqlParser.KW_HOURS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_hour;
    }
    enterRule(listener) {
        if (listener.enterHour) {
            listener.enterHour(this);
        }
    }
    exitRule(listener) {
        if (listener.exitHour) {
            listener.exitHour(this);
        }
    }
    accept(visitor) {
        if (visitor.visitHour) {
            return visitor.visitHour(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class MinuteContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_MINUTE() {
        return this.getToken(HiveSqlParser.KW_MINUTE, 0);
    }
    KW_MINUTES() {
        return this.getToken(HiveSqlParser.KW_MINUTES, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_minute;
    }
    enterRule(listener) {
        if (listener.enterMinute) {
            listener.enterMinute(this);
        }
    }
    exitRule(listener) {
        if (listener.exitMinute) {
            listener.exitMinute(this);
        }
    }
    accept(visitor) {
        if (visitor.visitMinute) {
            return visitor.visitMinute(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class SecondContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_SECOND() {
        return this.getToken(HiveSqlParser.KW_SECOND, 0);
    }
    KW_SECONDS() {
        return this.getToken(HiveSqlParser.KW_SECONDS, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_second;
    }
    enterRule(listener) {
        if (listener.enterSecond) {
            listener.enterSecond(this);
        }
    }
    exitRule(listener) {
        if (listener.exitSecond) {
            listener.exitSecond(this);
        }
    }
    accept(visitor) {
        if (visitor.visitSecond) {
            return visitor.visitSecond(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class DecimalContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_DEC() {
        return this.getToken(HiveSqlParser.KW_DEC, 0);
    }
    KW_DECIMAL() {
        return this.getToken(HiveSqlParser.KW_DECIMAL, 0);
    }
    KW_NUMERIC() {
        return this.getToken(HiveSqlParser.KW_NUMERIC, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_decimal;
    }
    enterRule(listener) {
        if (listener.enterDecimal) {
            listener.enterDecimal(this);
        }
    }
    exitRule(listener) {
        if (listener.exitDecimal) {
            listener.exitDecimal(this);
        }
    }
    accept(visitor) {
        if (visitor.visitDecimal) {
            return visitor.visitDecimal(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PoolPathContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_(i) {
        if (i === undefined) {
            return this.getRuleContexts(Id_Context);
        }
        return this.getRuleContext(i, Id_Context);
    }
    DOT(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.DOT);
        }
        else {
            return this.getToken(HiveSqlParser.DOT, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_poolPath;
    }
    enterRule(listener) {
        if (listener.enterPoolPath) {
            listener.enterPoolPath(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPoolPath) {
            listener.exitPoolPath(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPoolPath) {
            return visitor.visitPoolPath(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TriggerAtomExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    id_() {
        return this.getRuleContext(0, Id_Context);
    }
    GREATERTHAN() {
        return this.getToken(HiveSqlParser.GREATERTHAN, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_triggerAtomExpression;
    }
    enterRule(listener) {
        if (listener.enterTriggerAtomExpression) {
            listener.enterTriggerAtomExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTriggerAtomExpression) {
            listener.exitTriggerAtomExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTriggerAtomExpression) {
            return visitor.visitTriggerAtomExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class TriggerActionExpressionContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_KILL() {
        return this.getToken(HiveSqlParser.KW_KILL, 0);
    }
    KW_MOVE() {
        return this.getToken(HiveSqlParser.KW_MOVE, 0);
    }
    KW_TO() {
        return this.getToken(HiveSqlParser.KW_TO, 0);
    }
    poolPath() {
        return this.getRuleContext(0, PoolPathContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_triggerActionExpression;
    }
    enterRule(listener) {
        if (listener.enterTriggerActionExpression) {
            listener.enterTriggerActionExpression(this);
        }
    }
    exitRule(listener) {
        if (listener.exitTriggerActionExpression) {
            listener.exitTriggerActionExpression(this);
        }
    }
    accept(visitor) {
        if (visitor.visitTriggerActionExpression) {
            return visitor.visitTriggerActionExpression(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PoolAssignContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    KW_ALLOC_FRACTION() {
        return this.getToken(HiveSqlParser.KW_ALLOC_FRACTION, 0);
    }
    EQUAL() {
        return this.getToken(HiveSqlParser.EQUAL, 0);
    }
    KW_QUERY_PARALLELISM() {
        return this.getToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0);
    }
    KW_SCHEDULING_POLICY() {
        return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0);
    }
    KW_PATH() {
        return this.getToken(HiveSqlParser.KW_PATH, 0);
    }
    Number() {
        return this.getToken(HiveSqlParser.Number, 0);
    }
    StringLiteral() {
        return this.getToken(HiveSqlParser.StringLiteral, 0);
    }
    poolPath() {
        return this.getRuleContext(0, PoolPathContext);
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_poolAssign;
    }
    enterRule(listener) {
        if (listener.enterPoolAssign) {
            listener.enterPoolAssign(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPoolAssign) {
            listener.exitPoolAssign(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPoolAssign) {
            return visitor.visitPoolAssign(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}
export class PoolAssignListContext extends antlr.ParserRuleContext {
    constructor(parent, invokingState) {
        super(parent, invokingState);
    }
    poolAssign(i) {
        if (i === undefined) {
            return this.getRuleContexts(PoolAssignContext);
        }
        return this.getRuleContext(i, PoolAssignContext);
    }
    COMMA(i) {
        if (i === undefined) {
            return this.getTokens(HiveSqlParser.COMMA);
        }
        else {
            return this.getToken(HiveSqlParser.COMMA, i);
        }
    }
    get ruleIndex() {
        return HiveSqlParser.RULE_poolAssignList;
    }
    enterRule(listener) {
        if (listener.enterPoolAssignList) {
            listener.enterPoolAssignList(this);
        }
    }
    exitRule(listener) {
        if (listener.exitPoolAssignList) {
            listener.exitPoolAssignList(this);
        }
    }
    accept(visitor) {
        if (visitor.visitPoolAssignList) {
            return visitor.visitPoolAssignList(this);
        }
        else {
            return visitor.visitChildren(this);
        }
    }
}