// Generated from dt-sql-parser/src/grammar/mysql/MySqlParser.g4 by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { FailedPredicateException } from "antlr4ts/FailedPredicateException";
import { NotNull } from "antlr4ts/Decorators";
import { NoViableAltException } from "antlr4ts/NoViableAltException";
import { Override } from "antlr4ts/Decorators";
import { Parser } from "antlr4ts/Parser";
import { ParserRuleContext } from "antlr4ts/ParserRuleContext";
import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator";
import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";
import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";
import { RecognitionException } from "antlr4ts/RecognitionException";
import { RuleContext } from "antlr4ts/RuleContext";
//import { RuleVersion } from "antlr4ts/RuleVersion";
import { TerminalNode } from "antlr4ts/tree/TerminalNode";
import { Token } from "antlr4ts/Token";
import { TokenStream } from "antlr4ts/TokenStream";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";

import { MySqlParserListener } from "./MySqlParserListener";
import { MySqlParserVisitor } from "./MySqlParserVisitor";


export class MySqlParser extends Parser {
	public static readonly SPACE = 1;
	public static readonly SPEC_MYSQL_COMMENT = 2;
	public static readonly COMMENT_INPUT = 3;
	public static readonly LINE_COMMENT = 4;
	public static readonly KW_ACTIVE = 5;
	public static readonly KW_ADD = 6;
	public static readonly KW_ALL = 7;
	public static readonly KW_ALTER = 8;
	public static readonly KW_ALWAYS = 9;
	public static readonly KW_ANALYZE = 10;
	public static readonly KW_AND = 11;
	public static readonly KW_ARRAY = 12;
	public static readonly KW_AS = 13;
	public static readonly KW_ASC = 14;
	public static readonly KW_ATTRIBUTE = 15;
	public static readonly KW_BEFORE = 16;
	public static readonly KW_BETWEEN = 17;
	public static readonly KW_BOTH = 18;
	public static readonly KW_BUCKETS = 19;
	public static readonly KW_BY = 20;
	public static readonly KW_CALL = 21;
	public static readonly KW_CASCADE = 22;
	public static readonly KW_CASE = 23;
	public static readonly KW_CAST = 24;
	public static readonly KW_CHANGE = 25;
	public static readonly KW_CHARACTER = 26;
	public static readonly KW_CHECK = 27;
	public static readonly KW_COLLATE = 28;
	public static readonly KW_COLUMN = 29;
	public static readonly KW_CONDITION = 30;
	public static readonly KW_CONSTRAINT = 31;
	public static readonly KW_CONTINUE = 32;
	public static readonly KW_CONVERT = 33;
	public static readonly KW_CREATE = 34;
	public static readonly KW_CROSS = 35;
	public static readonly KW_CURRENT = 36;
	public static readonly KW_CURRENT_USER = 37;
	public static readonly KW_CURSOR = 38;
	public static readonly KW_DATABASE = 39;
	public static readonly KW_DATABASES = 40;
	public static readonly KW_DECLARE = 41;
	public static readonly KW_DEFAULT = 42;
	public static readonly KW_DELAYED = 43;
	public static readonly KW_DELETE = 44;
	public static readonly KW_DESC = 45;
	public static readonly KW_DESCRIBE = 46;
	public static readonly KW_DETERMINISTIC = 47;
	public static readonly KW_DIAGNOSTICS = 48;
	public static readonly KW_DISTINCT = 49;
	public static readonly KW_DISTINCTROW = 50;
	public static readonly KW_DROP = 51;
	public static readonly KW_EACH = 52;
	public static readonly KW_ELSE = 53;
	public static readonly KW_ELSEIF = 54;
	public static readonly KW_EMPTY = 55;
	public static readonly KW_ENCLOSED = 56;
	public static readonly KW_ENFORCED = 57;
	public static readonly KW_ESCAPED = 58;
	public static readonly KW_EXCEPT = 59;
	public static readonly KW_EXISTS = 60;
	public static readonly KW_EXIT = 61;
	public static readonly KW_EXPLAIN = 62;
	public static readonly KW_FALSE = 63;
	public static readonly KW_FETCH = 64;
	public static readonly KW_FOR = 65;
	public static readonly KW_FORCE = 66;
	public static readonly KW_FOREIGN = 67;
	public static readonly KW_FROM = 68;
	public static readonly KW_FULLTEXT = 69;
	public static readonly KW_GENERATE = 70;
	public static readonly KW_GENERATED = 71;
	public static readonly KW_GET = 72;
	public static readonly KW_GRANT = 73;
	public static readonly KW_GROUP = 74;
	public static readonly KW_HAVING = 75;
	public static readonly KW_HIGH_PRIORITY = 76;
	public static readonly KW_HISTOGRAM = 77;
	public static readonly KW_IF = 78;
	public static readonly KW_IGNORE = 79;
	public static readonly KW_IN = 80;
	public static readonly KW_INACTIVE = 81;
	public static readonly KW_INDEX = 82;
	public static readonly KW_INFILE = 83;
	public static readonly KW_INNER = 84;
	public static readonly KW_INOUT = 85;
	public static readonly KW_INSERT = 86;
	public static readonly KW_INTERVAL = 87;
	public static readonly KW_INTO = 88;
	public static readonly KW_IS = 89;
	public static readonly KW_ITERATE = 90;
	public static readonly KW_JOIN = 91;
	public static readonly KW_KEY = 92;
	public static readonly KW_KEYS = 93;
	public static readonly KW_KILL = 94;
	public static readonly KW_LATERAL = 95;
	public static readonly KW_LEADING = 96;
	public static readonly KW_LEAVE = 97;
	public static readonly KW_LEFT = 98;
	public static readonly KW_LIKE = 99;
	public static readonly KW_LIMIT = 100;
	public static readonly KW_LINEAR = 101;
	public static readonly KW_LINES = 102;
	public static readonly KW_LOAD = 103;
	public static readonly KW_LOCK = 104;
	public static readonly KW_LOCKED = 105;
	public static readonly KW_LOOP = 106;
	public static readonly KW_LOW_PRIORITY = 107;
	public static readonly KW_MASTER_BIND = 108;
	public static readonly KW_MASTER_SSL_VERIFY_SERVER_CERT = 109;
	public static readonly KW_MATCH = 110;
	public static readonly KW_MAXVALUE = 111;
	public static readonly KW_MODIFIES = 112;
	public static readonly KW_NATURAL = 113;
	public static readonly KW_NOT = 114;
	public static readonly KW_NO_WRITE_TO_BINLOG = 115;
	public static readonly KW_NULL_LITERAL = 116;
	public static readonly KW_NUMBER = 117;
	public static readonly KW_STREAM = 118;
	public static readonly KW_ON = 119;
	public static readonly KW_OPTIMIZE = 120;
	public static readonly KW_OPTION = 121;
	public static readonly KW_OPTIONAL = 122;
	public static readonly KW_OPTIONALLY = 123;
	public static readonly KW_OR = 124;
	public static readonly KW_ORDER = 125;
	public static readonly KW_OUT = 126;
	public static readonly KW_OUTER = 127;
	public static readonly KW_OUTFILE = 128;
	public static readonly KW_OVER = 129;
	public static readonly KW_PARTITION = 130;
	public static readonly KW_PRIMARY = 131;
	public static readonly KW_PROCEDURE = 132;
	public static readonly KW_PURGE = 133;
	public static readonly KW_RANGE = 134;
	public static readonly KW_READ = 135;
	public static readonly KW_READS = 136;
	public static readonly KW_REFERENCE = 137;
	public static readonly KW_REFERENCES = 138;
	public static readonly KW_REGEXP = 139;
	public static readonly KW_RELEASE = 140;
	public static readonly KW_RENAME = 141;
	public static readonly KW_REPEAT = 142;
	public static readonly KW_REPLACE = 143;
	public static readonly KW_REQUIRE = 144;
	public static readonly KW_RESIGNAL = 145;
	public static readonly KW_RESTRICT = 146;
	public static readonly KW_RETAIN = 147;
	public static readonly KW_RETURN = 148;
	public static readonly KW_REVOKE = 149;
	public static readonly KW_RIGHT = 150;
	public static readonly KW_RLIKE = 151;
	public static readonly KW_SCHEMA = 152;
	public static readonly KW_SCHEMAS = 153;
	public static readonly KW_SELECT = 154;
	public static readonly KW_SET = 155;
	public static readonly KW_SEPARATOR = 156;
	public static readonly KW_SHOW = 157;
	public static readonly KW_SIGNAL = 158;
	public static readonly KW_SKIP = 159;
	public static readonly KW_SKIP_QUERY_REWRITE = 160;
	public static readonly KW_SPATIAL = 161;
	public static readonly KW_SQL = 162;
	public static readonly KW_SQLEXCEPTION = 163;
	public static readonly KW_SQLSTATE = 164;
	public static readonly KW_SQLWARNING = 165;
	public static readonly KW_SQL_BIG_RESULT = 166;
	public static readonly KW_SQL_CALC_FOUND_ROWS = 167;
	public static readonly KW_SQL_SMALL_RESULT = 168;
	public static readonly KW_SSL = 169;
	public static readonly KW_STACKED = 170;
	public static readonly KW_STARTING = 171;
	public static readonly KW_STRAIGHT_JOIN = 172;
	public static readonly KW_TABLE = 173;
	public static readonly KW_TERMINATED = 174;
	public static readonly KW_THEN = 175;
	public static readonly KW_TO = 176;
	public static readonly KW_TRAILING = 177;
	public static readonly KW_TRIGGER = 178;
	public static readonly KW_TRUE = 179;
	public static readonly KW_UNDO = 180;
	public static readonly KW_UNION = 181;
	public static readonly KW_UNIQUE = 182;
	public static readonly KW_UNLOCK = 183;
	public static readonly KW_UNSIGNED = 184;
	public static readonly KW_UPDATE = 185;
	public static readonly KW_USAGE = 186;
	public static readonly KW_USE = 187;
	public static readonly KW_USING = 188;
	public static readonly KW_VALUES = 189;
	public static readonly KW_VCPU = 190;
	public static readonly KW_WHEN = 191;
	public static readonly KW_WHERE = 192;
	public static readonly KW_WHILE = 193;
	public static readonly KW_WITH = 194;
	public static readonly KW_WRITE = 195;
	public static readonly KW_XOR = 196;
	public static readonly KW_ZEROFILL = 197;
	public static readonly KW_TINYINT = 198;
	public static readonly KW_SMALLINT = 199;
	public static readonly KW_MEDIUMINT = 200;
	public static readonly KW_MIDDLEINT = 201;
	public static readonly KW_INT = 202;
	public static readonly KW_INT1 = 203;
	public static readonly KW_INT2 = 204;
	public static readonly KW_INT3 = 205;
	public static readonly KW_INT4 = 206;
	public static readonly KW_INT8 = 207;
	public static readonly KW_INTEGER = 208;
	public static readonly KW_BIGINT = 209;
	public static readonly KW_REAL = 210;
	public static readonly KW_DOUBLE = 211;
	public static readonly KW_PRECISION = 212;
	public static readonly KW_FLOAT = 213;
	public static readonly KW_FLOAT4 = 214;
	public static readonly KW_FLOAT8 = 215;
	public static readonly KW_DECIMAL = 216;
	public static readonly KW_DEC = 217;
	public static readonly KW_NUMERIC = 218;
	public static readonly KW_DATE = 219;
	public static readonly KW_TIME = 220;
	public static readonly KW_TIMESTAMP = 221;
	public static readonly KW_DATETIME = 222;
	public static readonly KW_YEAR = 223;
	public static readonly KW_CHAR = 224;
	public static readonly KW_VARCHAR = 225;
	public static readonly KW_NVARCHAR = 226;
	public static readonly KW_NATIONAL = 227;
	public static readonly KW_BINARY = 228;
	public static readonly KW_VARBINARY = 229;
	public static readonly KW_TINYBLOB = 230;
	public static readonly KW_BLOB = 231;
	public static readonly KW_MEDIUMBLOB = 232;
	public static readonly KW_LONG = 233;
	public static readonly KW_LONGBLOB = 234;
	public static readonly KW_TINYTEXT = 235;
	public static readonly KW_TEXT = 236;
	public static readonly KW_MEDIUMTEXT = 237;
	public static readonly KW_LONGTEXT = 238;
	public static readonly KW_ENUM = 239;
	public static readonly KW_VARYING = 240;
	public static readonly KW_SERIAL = 241;
	public static readonly KW_YEAR_MONTH = 242;
	public static readonly KW_DAY_HOUR = 243;
	public static readonly KW_DAY_MINUTE = 244;
	public static readonly KW_DAY_SECOND = 245;
	public static readonly KW_HOUR_MINUTE = 246;
	public static readonly KW_HOUR_SECOND = 247;
	public static readonly KW_MINUTE_SECOND = 248;
	public static readonly KW_SECOND_MICROSECOND = 249;
	public static readonly KW_MINUTE_MICROSECOND = 250;
	public static readonly KW_HOUR_MICROSECOND = 251;
	public static readonly KW_DAY_MICROSECOND = 252;
	public static readonly KW_JSON_TABLE = 253;
	public static readonly KW_JSON_VALUE = 254;
	public static readonly KW_NESTED = 255;
	public static readonly KW_ORDINALITY = 256;
	public static readonly KW_PATH = 257;
	public static readonly KW_AVG = 258;
	public static readonly KW_BIT_AND = 259;
	public static readonly KW_BIT_OR = 260;
	public static readonly KW_BIT_XOR = 261;
	public static readonly KW_COUNT = 262;
	public static readonly KW_CUME_DIST = 263;
	public static readonly KW_DENSE_RANK = 264;
	public static readonly KW_FIRST_VALUE = 265;
	public static readonly KW_GROUP_CONCAT = 266;
	public static readonly KW_LAG = 267;
	public static readonly KW_LAST_VALUE = 268;
	public static readonly KW_LEAD = 269;
	public static readonly KW_MAX = 270;
	public static readonly KW_MIN = 271;
	public static readonly KW_NTILE = 272;
	public static readonly KW_NTH_VALUE = 273;
	public static readonly KW_PERCENT_RANK = 274;
	public static readonly KW_RANK = 275;
	public static readonly KW_ROW_NUMBER = 276;
	public static readonly KW_STD = 277;
	public static readonly KW_STDDEV = 278;
	public static readonly KW_STDDEV_POP = 279;
	public static readonly KW_STDDEV_SAMP = 280;
	public static readonly KW_SUM = 281;
	public static readonly KW_VAR_POP = 282;
	public static readonly KW_VAR_SAMP = 283;
	public static readonly KW_VARIANCE = 284;
	public static readonly KW_CURRENT_DATE = 285;
	public static readonly KW_CURRENT_TIME = 286;
	public static readonly KW_CURRENT_TIMESTAMP = 287;
	public static readonly KW_LOCALTIME = 288;
	public static readonly KW_CURDATE = 289;
	public static readonly KW_CURTIME = 290;
	public static readonly KW_DATE_ADD = 291;
	public static readonly KW_DATE_SUB = 292;
	public static readonly KW_EXTRACT = 293;
	public static readonly KW_LOCALTIMESTAMP = 294;
	public static readonly KW_NOW = 295;
	public static readonly KW_POSITION = 296;
	public static readonly KW_SUBSTR = 297;
	public static readonly KW_SUBSTRING = 298;
	public static readonly KW_SYSDATE = 299;
	public static readonly KW_TRIM = 300;
	public static readonly KW_UTC_DATE = 301;
	public static readonly KW_UTC_TIME = 302;
	public static readonly KW_UTC_TIMESTAMP = 303;
	public static readonly KW_ACCOUNT = 304;
	public static readonly KW_ACTION = 305;
	public static readonly KW_AFTER = 306;
	public static readonly KW_AGGREGATE = 307;
	public static readonly KW_ALGORITHM = 308;
	public static readonly KW_ANY = 309;
	public static readonly KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = 310;
	public static readonly KW_AT = 311;
	public static readonly KW_AUTHORS = 312;
	public static readonly KW_AUTOCOMMIT = 313;
	public static readonly KW_AUTOEXTEND_SIZE = 314;
	public static readonly KW_AUTO_INCREMENT = 315;
	public static readonly KW_AVG_ROW_LENGTH = 316;
	public static readonly KW_BEGIN = 317;
	public static readonly KW_BINLOG = 318;
	public static readonly KW_BIT = 319;
	public static readonly KW_BLOCK = 320;
	public static readonly KW_BOOL = 321;
	public static readonly KW_BOOLEAN = 322;
	public static readonly KW_BTREE = 323;
	public static readonly KW_CACHE = 324;
	public static readonly KW_CASCADED = 325;
	public static readonly KW_CHAIN = 326;
	public static readonly KW_CHANGED = 327;
	public static readonly KW_CHANNEL = 328;
	public static readonly KW_CHECKSUM = 329;
	public static readonly KW_CHALLENGE_RESPONSE = 330;
	public static readonly KW_CIPHER = 331;
	public static readonly KW_CLASS_ORIGIN = 332;
	public static readonly KW_CLIENT = 333;
	public static readonly KW_CLOSE = 334;
	public static readonly KW_COALESCE = 335;
	public static readonly KW_CODE = 336;
	public static readonly KW_COLUMNS = 337;
	public static readonly KW_COLUMN_FORMAT = 338;
	public static readonly KW_COLUMN_NAME = 339;
	public static readonly KW_COMMENT = 340;
	public static readonly KW_COMMIT = 341;
	public static readonly KW_COMPACT = 342;
	public static readonly KW_COMPLETION = 343;
	public static readonly KW_COMPONENT = 344;
	public static readonly KW_COMPRESSED = 345;
	public static readonly KW_COMPRESSION = 346;
	public static readonly KW_CONCURRENT = 347;
	public static readonly KW_CONNECT = 348;
	public static readonly KW_CONNECTION = 349;
	public static readonly KW_CONSISTENT = 350;
	public static readonly KW_CONSTRAINT_CATALOG = 351;
	public static readonly KW_CONSTRAINT_SCHEMA = 352;
	public static readonly KW_CONSTRAINT_NAME = 353;
	public static readonly KW_CONTAINS = 354;
	public static readonly KW_CONTEXT = 355;
	public static readonly KW_CONTRIBUTORS = 356;
	public static readonly KW_COPY = 357;
	public static readonly KW_CPU = 358;
	public static readonly KW_CURSOR_NAME = 359;
	public static readonly KW_DATA = 360;
	public static readonly KW_DATAFILE = 361;
	public static readonly KW_DEALLOCATE = 362;
	public static readonly KW_DEFAULT_AUTH = 363;
	public static readonly KW_DEFINER = 364;
	public static readonly KW_DELAY_KEY_WRITE = 365;
	public static readonly KW_DES_KEY_FILE = 366;
	public static readonly KW_DIRECTORY = 367;
	public static readonly KW_DISABLE = 368;
	public static readonly KW_DISCARD = 369;
	public static readonly KW_DISK = 370;
	public static readonly KW_DO = 371;
	public static readonly KW_DUMPFILE = 372;
	public static readonly KW_DUPLICATE = 373;
	public static readonly KW_DYNAMIC = 374;
	public static readonly KW_ENABLE = 375;
	public static readonly KW_ENCRYPTION = 376;
	public static readonly KW_ENCRYPTION_KEY_ID = 377;
	public static readonly KW_END = 378;
	public static readonly KW_ENDS = 379;
	public static readonly KW_ENGINE = 380;
	public static readonly KW_ENGINES = 381;
	public static readonly KW_ERROR = 382;
	public static readonly KW_ERRORS = 383;
	public static readonly KW_ESCAPE = 384;
	public static readonly KW_EVENT = 385;
	public static readonly KW_EVENTS = 386;
	public static readonly KW_EVERY = 387;
	public static readonly KW_EXCHANGE = 388;
	public static readonly KW_EXCLUSIVE = 389;
	public static readonly KW_EXPIRE = 390;
	public static readonly KW_EXPORT = 391;
	public static readonly KW_EXTENDED = 392;
	public static readonly KW_EXTENT_SIZE = 393;
	public static readonly KW_FACTOR = 394;
	public static readonly KW_FAILED_LOGIN_ATTEMPTS = 395;
	public static readonly KW_FAST = 396;
	public static readonly KW_FAULTS = 397;
	public static readonly KW_FIELDS = 398;
	public static readonly KW_FILE_BLOCK_SIZE = 399;
	public static readonly KW_FILTER = 400;
	public static readonly KW_FINISH = 401;
	public static readonly KW_FIRST = 402;
	public static readonly KW_FIXED = 403;
	public static readonly KW_FLUSH = 404;
	public static readonly KW_FOLLOWING = 405;
	public static readonly KW_FOLLOWS = 406;
	public static readonly KW_FOUND = 407;
	public static readonly KW_FULL = 408;
	public static readonly KW_FUNCTION = 409;
	public static readonly KW_GENERAL = 410;
	public static readonly KW_GET_MASTER_PUBLIC_KEY = 411;
	public static readonly KW_GET_SOURCE_PUBLIC_KEY = 412;
	public static readonly KW_GLOBAL = 413;
	public static readonly KW_GRANTS = 414;
	public static readonly KW_GROUP_REPLICATION = 415;
	public static readonly KW_GTID_ONLY = 416;
	public static readonly KW_HANDLER = 417;
	public static readonly KW_HASH = 418;
	public static readonly KW_HELP = 419;
	public static readonly KW_HISTORY = 420;
	public static readonly KW_HOST = 421;
	public static readonly KW_HOSTS = 422;
	public static readonly KW_IDENTIFIED = 423;
	public static readonly KW_IGNORE_SERVER_IDS = 424;
	public static readonly KW_IMPORT = 425;
	public static readonly KW_INDEXES = 426;
	public static readonly KW_INITIAL = 427;
	public static readonly KW_INITIAL_SIZE = 428;
	public static readonly KW_INITIATE = 429;
	public static readonly KW_INPLACE = 430;
	public static readonly KW_INSERT_METHOD = 431;
	public static readonly KW_INSTALL = 432;
	public static readonly KW_INSTANCE = 433;
	public static readonly KW_INSTANT = 434;
	public static readonly KW_INVISIBLE = 435;
	public static readonly KW_INVOKER = 436;
	public static readonly KW_IO = 437;
	public static readonly KW_IO_THREAD = 438;
	public static readonly KW_IPC = 439;
	public static readonly KW_ISOLATION = 440;
	public static readonly KW_ISSUER = 441;
	public static readonly KW_JSON = 442;
	public static readonly KW_KEY_BLOCK_SIZE = 443;
	public static readonly KW_LANGUAGE = 444;
	public static readonly KW_LAST = 445;
	public static readonly KW_LEAVES = 446;
	public static readonly KW_LESS = 447;
	public static readonly KW_LEVEL = 448;
	public static readonly KW_LIST = 449;
	public static readonly KW_LOCAL = 450;
	public static readonly KW_LOGFILE = 451;
	public static readonly KW_LOGS = 452;
	public static readonly KW_MASTER = 453;
	public static readonly KW_MASTER_AUTO_POSITION = 454;
	public static readonly KW_MASTER_COMPRESSION_ALGORITHMS = 455;
	public static readonly KW_MASTER_CONNECT_RETRY = 456;
	public static readonly KW_MASTER_DELAY = 457;
	public static readonly KW_MASTER_HEARTBEAT_PERIOD = 458;
	public static readonly KW_MASTER_HOST = 459;
	public static readonly KW_MASTER_LOG_FILE = 460;
	public static readonly KW_MASTER_LOG_POS = 461;
	public static readonly KW_MASTER_PASSWORD = 462;
	public static readonly KW_MASTER_PORT = 463;
	public static readonly KW_MASTER_PUBLIC_KEY_PATH = 464;
	public static readonly KW_MASTER_RETRY_COUNT = 465;
	public static readonly KW_MASTER_SSL = 466;
	public static readonly KW_MASTER_SSL_CA = 467;
	public static readonly KW_MASTER_SSL_CAPATH = 468;
	public static readonly KW_MASTER_SSL_CERT = 469;
	public static readonly KW_MASTER_SSL_CIPHER = 470;
	public static readonly KW_MASTER_SSL_CRL = 471;
	public static readonly KW_MASTER_SSL_CRLPATH = 472;
	public static readonly KW_MASTER_SSL_KEY = 473;
	public static readonly KW_MASTER_TLS_CIPHERSUITES = 474;
	public static readonly KW_MASTER_TLS_VERSION = 475;
	public static readonly KW_MASTER_USER = 476;
	public static readonly KW_MASTER_ZSTD_COMPRESSION_LEVEL = 477;
	public static readonly KW_MAX_CONNECTIONS_PER_HOUR = 478;
	public static readonly KW_MAX_QUERIES_PER_HOUR = 479;
	public static readonly KW_MAX_ROWS = 480;
	public static readonly KW_MAX_SIZE = 481;
	public static readonly KW_MAX_UPDATES_PER_HOUR = 482;
	public static readonly KW_MAX_USER_CONNECTIONS = 483;
	public static readonly KW_MEDIUM = 484;
	public static readonly KW_MEMBER = 485;
	public static readonly KW_MERGE = 486;
	public static readonly KW_MESSAGE_TEXT = 487;
	public static readonly KW_MID = 488;
	public static readonly KW_MIGRATE = 489;
	public static readonly KW_MIN_ROWS = 490;
	public static readonly KW_MODE = 491;
	public static readonly KW_MODIFY = 492;
	public static readonly KW_MUTEX = 493;
	public static readonly KW_MYSQL = 494;
	public static readonly KW_MYSQL_ERRNO = 495;
	public static readonly KW_NAME = 496;
	public static readonly KW_NAMES = 497;
	public static readonly KW_NCHAR = 498;
	public static readonly KW_NETWORK_NAMESPACE = 499;
	public static readonly KW_NEVER = 500;
	public static readonly KW_NEXT = 501;
	public static readonly KW_NO = 502;
	public static readonly KW_NOWAIT = 503;
	public static readonly KW_NODEGROUP = 504;
	public static readonly KW_NONE = 505;
	public static readonly KW_ODBC = 506;
	public static readonly KW_OFF = 507;
	public static readonly KW_OFFLINE = 508;
	public static readonly KW_OFFSET = 509;
	public static readonly KW_OF = 510;
	public static readonly KW_OLD = 511;
	public static readonly KW_OLD_PASSWORD = 512;
	public static readonly KW_ONE = 513;
	public static readonly KW_ONLINE = 514;
	public static readonly KW_ONLY = 515;
	public static readonly KW_OPEN = 516;
	public static readonly KW_OPTIMIZER_COSTS = 517;
	public static readonly KW_OPTIONS = 518;
	public static readonly KW_OWNER = 519;
	public static readonly KW_PACK_KEYS = 520;
	public static readonly KW_PAGE = 521;
	public static readonly KW_PAGE_CHECKSUM = 522;
	public static readonly KW_PAGE_COMPRESSED = 523;
	public static readonly KW_PAGE_COMPRESSION_LEVEL = 524;
	public static readonly KW_PARSER = 525;
	public static readonly KW_PARTIAL = 526;
	public static readonly KW_PARTITIONING = 527;
	public static readonly KW_PARTITIONS = 528;
	public static readonly KW_PASSWORD = 529;
	public static readonly KW_PASSWORD_LOCK_TIME = 530;
	public static readonly KW_PERSIST = 531;
	public static readonly KW_PERSIST_ONLY = 532;
	public static readonly KW_PHASE = 533;
	public static readonly KW_PLUGIN = 534;
	public static readonly KW_PLUGIN_DIR = 535;
	public static readonly KW_PLUGINS = 536;
	public static readonly KW_PORT = 537;
	public static readonly KW_PRECEDES = 538;
	public static readonly KW_PRECEDING = 539;
	public static readonly KW_PREPARE = 540;
	public static readonly KW_PRESERVE = 541;
	public static readonly KW_PREV = 542;
	public static readonly KW_PRIVILEGE_CHECKS_USER = 543;
	public static readonly KW_PROCESSLIST = 544;
	public static readonly KW_PROFILE = 545;
	public static readonly KW_PROFILES = 546;
	public static readonly KW_PROXY = 547;
	public static readonly KW_QUERY = 548;
	public static readonly KW_QUICK = 549;
	public static readonly KW_REBUILD = 550;
	public static readonly KW_RECOVER = 551;
	public static readonly KW_RECURSIVE = 552;
	public static readonly KW_REDO_BUFFER_SIZE = 553;
	public static readonly KW_REDUNDANT = 554;
	public static readonly KW_REGISTRATION = 555;
	public static readonly KW_RELAY = 556;
	public static readonly KW_RELAY_LOG_FILE = 557;
	public static readonly KW_RELAY_LOG_POS = 558;
	public static readonly KW_RELAYLOG = 559;
	public static readonly KW_REMOVE = 560;
	public static readonly KW_REORGANIZE = 561;
	public static readonly KW_REPAIR = 562;
	public static readonly KW_REPLICA = 563;
	public static readonly KW_REPLICAS = 564;
	public static readonly KW_REPLICATE_DO_DB = 565;
	public static readonly KW_REPLICATE_DO_TABLE = 566;
	public static readonly KW_REPLICATE_IGNORE_DB = 567;
	public static readonly KW_REPLICATE_IGNORE_TABLE = 568;
	public static readonly KW_REPLICATE_REWRITE_DB = 569;
	public static readonly KW_REPLICATE_WILD_DO_TABLE = 570;
	public static readonly KW_REPLICATE_WILD_IGNORE_TABLE = 571;
	public static readonly KW_REPLICATION = 572;
	public static readonly KW_REQUIRE_ROW_FORMAT = 573;
	public static readonly KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK = 574;
	public static readonly KW_RESET = 575;
	public static readonly KW_RESTART = 576;
	public static readonly KW_RESUME = 577;
	public static readonly KW_RETURNED_SQLSTATE = 578;
	public static readonly KW_RETURNING = 579;
	public static readonly KW_RETURNS = 580;
	public static readonly KW_REUSE = 581;
	public static readonly KW_ROLE = 582;
	public static readonly KW_ROLLBACK = 583;
	public static readonly KW_ROLLUP = 584;
	public static readonly KW_ROTATE = 585;
	public static readonly KW_ROW = 586;
	public static readonly KW_ROWS = 587;
	public static readonly KW_ROW_FORMAT = 588;
	public static readonly KW_SAVEPOINT = 589;
	public static readonly KW_SCHEDULE = 590;
	public static readonly KW_SECURITY = 591;
	public static readonly KW_SERVER = 592;
	public static readonly KW_SESSION = 593;
	public static readonly KW_SHARE = 594;
	public static readonly KW_SHARED = 595;
	public static readonly KW_SIGNED = 596;
	public static readonly KW_SIMPLE = 597;
	public static readonly KW_SLAVE = 598;
	public static readonly KW_SLOW = 599;
	public static readonly KW_SNAPSHOT = 600;
	public static readonly KW_SOCKET = 601;
	public static readonly KW_SOME = 602;
	public static readonly KW_SONAME = 603;
	public static readonly KW_SOUNDS = 604;
	public static readonly KW_SOURCE = 605;
	public static readonly KW_SOURCE_BIND = 606;
	public static readonly KW_SOURCE_HOST = 607;
	public static readonly KW_SOURCE_USER = 608;
	public static readonly KW_SOURCE_PASSWORD = 609;
	public static readonly KW_SOURCE_PORT = 610;
	public static readonly KW_SOURCE_LOG_FILE = 611;
	public static readonly KW_SOURCE_LOG_POS = 612;
	public static readonly KW_SOURCE_AUTO_POSITION = 613;
	public static readonly KW_SOURCE_HEARTBEAT_PERIOD = 614;
	public static readonly KW_SOURCE_CONNECT_RETRY = 615;
	public static readonly KW_SOURCE_RETRY_COUNT = 616;
	public static readonly KW_SOURCE_CONNECTION_AUTO_FAILOVER = 617;
	public static readonly KW_SOURCE_DELAY = 618;
	public static readonly KW_SOURCE_COMPRESSION_ALGORITHMS = 619;
	public static readonly KW_SOURCE_ZSTD_COMPRESSION_LEVEL = 620;
	public static readonly KW_SOURCE_SSL = 621;
	public static readonly KW_SOURCE_SSL_CA = 622;
	public static readonly KW_SOURCE_SSL_CAPATH = 623;
	public static readonly KW_SOURCE_SSL_CERT = 624;
	public static readonly KW_SOURCE_SSL_CRL = 625;
	public static readonly KW_SOURCE_SSL_CRLPATH = 626;
	public static readonly KW_SOURCE_SSL_KEY = 627;
	public static readonly KW_SOURCE_SSL_CIPHER = 628;
	public static readonly KW_SOURCE_SSL_VERIFY_SERVER_CERT = 629;
	public static readonly KW_SOURCE_TLS_VERSION = 630;
	public static readonly KW_SOURCE_TLS_CIPHERSUITES = 631;
	public static readonly KW_SOURCE_PUBLIC_KEY_PATH = 632;
	public static readonly KW_SQL_AFTER_GTIDS = 633;
	public static readonly KW_SQL_AFTER_MTS_GAPS = 634;
	public static readonly KW_SQL_BEFORE_GTIDS = 635;
	public static readonly KW_SQL_BUFFER_RESULT = 636;
	public static readonly KW_SQL_CACHE = 637;
	public static readonly KW_SQL_NO_CACHE = 638;
	public static readonly KW_SQL_THREAD = 639;
	public static readonly KW_START = 640;
	public static readonly KW_STARTS = 641;
	public static readonly KW_STATS_AUTO_RECALC = 642;
	public static readonly KW_STATS_PERSISTENT = 643;
	public static readonly KW_STATS_SAMPLE_PAGES = 644;
	public static readonly KW_STATUS = 645;
	public static readonly KW_STOP = 646;
	public static readonly KW_STORAGE = 647;
	public static readonly KW_STORED = 648;
	public static readonly KW_STRING = 649;
	public static readonly KW_SUBCLASS_ORIGIN = 650;
	public static readonly KW_SUBJECT = 651;
	public static readonly KW_SUBPARTITION = 652;
	public static readonly KW_SUBPARTITIONS = 653;
	public static readonly KW_SUSPEND = 654;
	public static readonly KW_SWAPS = 655;
	public static readonly KW_SWITCHES = 656;
	public static readonly KW_TABLE_NAME = 657;
	public static readonly KW_TABLESPACE = 658;
	public static readonly KW_TABLE_TYPE = 659;
	public static readonly KW_TEMPORARY = 660;
	public static readonly KW_TEMPTABLE = 661;
	public static readonly KW_THAN = 662;
	public static readonly KW_TRADITIONAL = 663;
	public static readonly KW_TRANSACTION = 664;
	public static readonly KW_TRANSACTIONAL = 665;
	public static readonly KW_TREE = 666;
	public static readonly KW_TRIGGERS = 667;
	public static readonly KW_TRUNCATE = 668;
	public static readonly KW_UNBOUNDED = 669;
	public static readonly KW_UNDEFINED = 670;
	public static readonly KW_UNDOFILE = 671;
	public static readonly KW_UNDO_BUFFER_SIZE = 672;
	public static readonly KW_UNINSTALL = 673;
	public static readonly KW_UNKNOWN = 674;
	public static readonly KW_UNREGISTER = 675;
	public static readonly KW_UNTIL = 676;
	public static readonly KW_UPGRADE = 677;
	public static readonly KW_USER = 678;
	public static readonly KW_USE_FRM = 679;
	public static readonly KW_USER_RESOURCES = 680;
	public static readonly KW_VALIDATION = 681;
	public static readonly KW_VALUE = 682;
	public static readonly KW_VARIABLES = 683;
	public static readonly KW_VIEW = 684;
	public static readonly KW_VIRTUAL = 685;
	public static readonly KW_VISIBLE = 686;
	public static readonly KW_WAIT = 687;
	public static readonly KW_WARNINGS = 688;
	public static readonly KW_WINDOW = 689;
	public static readonly KW_WITHOUT = 690;
	public static readonly KW_WORK = 691;
	public static readonly KW_WRAPPER = 692;
	public static readonly KW_X509 = 693;
	public static readonly KW_XA = 694;
	public static readonly KW_XML = 695;
	public static readonly KW_QUARTER = 696;
	public static readonly KW_MONTH = 697;
	public static readonly KW_DAY = 698;
	public static readonly KW_HOUR = 699;
	public static readonly KW_MINUTE = 700;
	public static readonly KW_WEEK = 701;
	public static readonly KW_SECOND = 702;
	public static readonly KW_MICROSECOND = 703;
	public static readonly KW_ADMIN = 704;
	public static readonly KW_APPLICATION_PASSWORD_ADMIN = 705;
	public static readonly KW_AUDIT_ABORT_EXEMPT = 706;
	public static readonly KW_AUDIT_ADMIN = 707;
	public static readonly KW_AUTHENTICATION = 708;
	public static readonly KW_AUTHENTICATION_POLICY_ADMIN = 709;
	public static readonly KW_BACKUP_ADMIN = 710;
	public static readonly KW_BINLOG_ADMIN = 711;
	public static readonly KW_BINLOG_ENCRYPTION_ADMIN = 712;
	public static readonly KW_CLONE = 713;
	public static readonly KW_CLONE_ADMIN = 714;
	public static readonly KW_CONNECTION_ADMIN = 715;
	public static readonly KW_ENCRYPTION_KEY_ADMIN = 716;
	public static readonly KW_EXECUTE = 717;
	public static readonly KW_FILE = 718;
	public static readonly KW_FIREWALL_ADMIN = 719;
	public static readonly KW_FIREWALL_EXEMPT = 720;
	public static readonly KW_FIREWALL_USER = 721;
	public static readonly KW_FLUSH_OPTIMIZER_COSTS = 722;
	public static readonly KW_FLUSH_STATUS = 723;
	public static readonly KW_FLUSH_TABLES = 724;
	public static readonly KW_FLUSH_USER_RESOURCES = 725;
	public static readonly KW_GROUP_REPLICATION_ADMIN = 726;
	public static readonly KW_INNODB_REDO_LOG_ARCHIVE = 727;
	public static readonly KW_INNODB_REDO_LOG_ENABLE = 728;
	public static readonly KW_INVOKE = 729;
	public static readonly KW_LAMBDA = 730;
	public static readonly KW_NDB_STORED_USER = 731;
	public static readonly KW_PASSWORDLESS_USER_ADMIN = 732;
	public static readonly KW_PERSIST_RO_VARIABLES_ADMIN = 733;
	public static readonly KW_PRIVILEGES = 734;
	public static readonly KW_PROCESS = 735;
	public static readonly KW_RELOAD = 736;
	public static readonly KW_REPLICATION_APPLIER = 737;
	public static readonly KW_REPLICATION_SLAVE_ADMIN = 738;
	public static readonly KW_RESOURCE = 739;
	public static readonly KW_RESOURCE_GROUP_ADMIN = 740;
	public static readonly KW_RESOURCE_GROUP_USER = 741;
	public static readonly KW_ROLE_ADMIN = 742;
	public static readonly KW_ROUTINE = 743;
	public static readonly KW_S3 = 744;
	public static readonly KW_SERVICE_CONNECTION_ADMIN = 745;
	public static readonly KW_SESSION_VARIABLES_ADMIN = 746;
	public static readonly KW_SET_USER_ID = 747;
	public static readonly KW_SHOW_ROUTINE = 748;
	public static readonly KW_SHUTDOWN = 749;
	public static readonly KW_SUPER = 750;
	public static readonly KW_SYSTEM_VARIABLES_ADMIN = 751;
	public static readonly KW_TABLES = 752;
	public static readonly KW_TABLE_ENCRYPTION_ADMIN = 753;
	public static readonly KW_VERSION_TOKEN_ADMIN = 754;
	public static readonly KW_XA_RECOVER_ADMIN = 755;
	public static readonly KW_ARMSCII8 = 756;
	public static readonly KW_ASCII = 757;
	public static readonly KW_BIG5 = 758;
	public static readonly KW_CP1250 = 759;
	public static readonly KW_CP1251 = 760;
	public static readonly KW_CP1256 = 761;
	public static readonly KW_CP1257 = 762;
	public static readonly KW_CP850 = 763;
	public static readonly KW_CP852 = 764;
	public static readonly KW_CP866 = 765;
	public static readonly KW_CP932 = 766;
	public static readonly KW_DEC8 = 767;
	public static readonly KW_EUCJPMS = 768;
	public static readonly KW_EUCKR = 769;
	public static readonly KW_GB18030 = 770;
	public static readonly KW_GB2312 = 771;
	public static readonly KW_GBK = 772;
	public static readonly KW_GEOSTD8 = 773;
	public static readonly KW_GREEK = 774;
	public static readonly KW_HEBREW = 775;
	public static readonly KW_HP8 = 776;
	public static readonly KW_KEYBCS2 = 777;
	public static readonly KW_KOI8R = 778;
	public static readonly KW_KOI8U = 779;
	public static readonly KW_LATIN1 = 780;
	public static readonly KW_LATIN2 = 781;
	public static readonly KW_LATIN5 = 782;
	public static readonly KW_LATIN7 = 783;
	public static readonly KW_MACCE = 784;
	public static readonly KW_MACROMAN = 785;
	public static readonly KW_SJIS = 786;
	public static readonly KW_SWE7 = 787;
	public static readonly KW_TIS620 = 788;
	public static readonly KW_UCS2 = 789;
	public static readonly KW_UJIS = 790;
	public static readonly KW_UTF16 = 791;
	public static readonly KW_UTF16LE = 792;
	public static readonly KW_UTF32 = 793;
	public static readonly KW_UTF8 = 794;
	public static readonly KW_UTF8MB3 = 795;
	public static readonly KW_UTF8MB4 = 796;
	public static readonly KW_ARCHIVE = 797;
	public static readonly KW_BLACKHOLE = 798;
	public static readonly KW_CSV = 799;
	public static readonly KW_FEDERATED = 800;
	public static readonly KW_INNODB = 801;
	public static readonly KW_MEMORY = 802;
	public static readonly KW_MRG_MYISAM = 803;
	public static readonly KW_MYISAM = 804;
	public static readonly KW_NDB = 805;
	public static readonly KW_NDBCLUSTER = 806;
	public static readonly KW_PERFORMANCE_SCHEMA = 807;
	public static readonly KW_TOKUDB = 808;
	public static readonly KW_REPEATABLE = 809;
	public static readonly KW_COMMITTED = 810;
	public static readonly KW_UNCOMMITTED = 811;
	public static readonly KW_SERIALIZABLE = 812;
	public static readonly KW_GEOMETRYCOLLECTION = 813;
	public static readonly KW_GEOMCOLLECTION = 814;
	public static readonly KW_GEOMETRY = 815;
	public static readonly KW_LINESTRING = 816;
	public static readonly KW_MULTILINESTRING = 817;
	public static readonly KW_MULTIPOINT = 818;
	public static readonly KW_MULTIPOLYGON = 819;
	public static readonly KW_POINT = 820;
	public static readonly KW_POLYGON = 821;
	public static readonly KW_CATALOG_NAME = 822;
	public static readonly KW_CHARSET = 823;
	public static readonly KW_COLLATION = 824;
	public static readonly KW_ENGINE_ATTRIBUTE = 825;
	public static readonly KW_FORMAT = 826;
	public static readonly KW_GET_FORMAT = 827;
	public static readonly KW_INTERSECT = 828;
	public static readonly KW_RANDOM = 829;
	public static readonly KW_REVERSE = 830;
	public static readonly KW_ROW_COUNT = 831;
	public static readonly KW_SCHEMA_NAME = 832;
	public static readonly KW_SECONDARY_ENGINE_ATTRIBUTE = 833;
	public static readonly KW_SRID = 834;
	public static readonly KW_SYSTEM = 835;
	public static readonly KW_SYSTEM_USER = 836;
	public static readonly KW_THREAD_PRIORITY = 837;
	public static readonly KW_TP_CONNECTION_ADMIN = 838;
	public static readonly KW_TYPE = 839;
	public static readonly KW_WEIGHT_STRING = 840;
	public static readonly VAR_ASSIGN = 841;
	public static readonly PLUS_ASSIGN = 842;
	public static readonly MINUS_ASSIGN = 843;
	public static readonly MULT_ASSIGN = 844;
	public static readonly DIV_ASSIGN = 845;
	public static readonly MOD_ASSIGN = 846;
	public static readonly AND_ASSIGN = 847;
	public static readonly XOR_ASSIGN = 848;
	public static readonly OR_ASSIGN = 849;
	public static readonly STAR = 850;
	public static readonly DIVIDE = 851;
	public static readonly MODULE = 852;
	public static readonly PLUS = 853;
	public static readonly MINUS = 854;
	public static readonly DIV = 855;
	public static readonly MOD = 856;
	public static readonly EQUAL_SYMBOL = 857;
	public static readonly GREATER_SYMBOL = 858;
	public static readonly LESS_SYMBOL = 859;
	public static readonly EXCLAMATION_SYMBOL = 860;
	public static readonly BIT_NOT_OP = 861;
	public static readonly BIT_OR_OP = 862;
	public static readonly BIT_AND_OP = 863;
	public static readonly BIT_XOR_OP = 864;
	public static readonly DOT = 865;
	public static readonly LR_BRACKET = 866;
	public static readonly RR_BRACKET = 867;
	public static readonly COMMA = 868;
	public static readonly SEMI = 869;
	public static readonly AT_SIGN = 870;
	public static readonly ZERO_DECIMAL = 871;
	public static readonly ONE_DECIMAL = 872;
	public static readonly TWO_DECIMAL = 873;
	public static readonly THREE_DECIMAL = 874;
	public static readonly SINGLE_QUOTE_SYMB = 875;
	public static readonly DOUBLE_QUOTE_SYMB = 876;
	public static readonly REVERSE_QUOTE_SYMB = 877;
	public static readonly COLON_SYMB = 878;
	public static readonly CHARSET_REVERSE_QOUTE_STRING = 879;
	public static readonly FILESIZE_LITERAL = 880;
	public static readonly START_NATIONAL_STRING_LITERAL = 881;
	public static readonly STRING_LITERAL = 882;
	public static readonly DECIMAL_LITERAL = 883;
	public static readonly HEXADECIMAL_LITERAL = 884;
	public static readonly REAL_LITERAL = 885;
	public static readonly NULL_SPEC_LITERAL = 886;
	public static readonly BIT_STRING = 887;
	public static readonly STRING_CHARSET_NAME = 888;
	public static readonly ID = 889;
	public static readonly REVERSE_QUOTE_ID = 890;
	public static readonly HOST_IP_ADDRESS = 891;
	public static readonly LOCAL_ID = 892;
	public static readonly GLOBAL_ID = 893;
	public static readonly PERSIST_ID = 894;
	public static readonly ERROR_RECONGNIGION = 895;
	public static readonly RULE_program = 0;
	public static readonly RULE_singleStatement = 1;
	public static readonly RULE_sqlStatement = 2;
	public static readonly RULE_emptyStatement_ = 3;
	public static readonly RULE_ddlStatement = 4;
	public static readonly RULE_dmlStatement = 5;
	public static readonly RULE_transactionStatement = 6;
	public static readonly RULE_replicationStatement = 7;
	public static readonly RULE_preparedStatement = 8;
	public static readonly RULE_compoundStatement = 9;
	public static readonly RULE_administrationStatement = 10;
	public static readonly RULE_utilityStatement = 11;
	public static readonly RULE_createDatabase = 12;
	public static readonly RULE_createEvent = 13;
	public static readonly RULE_createIndex = 14;
	public static readonly RULE_createLogfileGroup = 15;
	public static readonly RULE_createProcedure = 16;
	public static readonly RULE_createRole = 17;
	public static readonly RULE_createServer = 18;
	public static readonly RULE_createTable = 19;
	public static readonly RULE_createTablespaceInnodb = 20;
	public static readonly RULE_createTablespaceNdb = 21;
	public static readonly RULE_createTrigger = 22;
	public static readonly RULE_withClause = 23;
	public static readonly RULE_commonTableExpressions = 24;
	public static readonly RULE_createView = 25;
	public static readonly RULE_createDatabaseOption = 26;
	public static readonly RULE_charSet = 27;
	public static readonly RULE_currentUserExpression = 28;
	public static readonly RULE_ownerStatement = 29;
	public static readonly RULE_scheduleExpression = 30;
	public static readonly RULE_timestampValue = 31;
	public static readonly RULE_intervalExpr = 32;
	public static readonly RULE_intervalType = 33;
	public static readonly RULE_enableType = 34;
	public static readonly RULE_indexType = 35;
	public static readonly RULE_indexOption = 36;
	public static readonly RULE_procedureParameter = 37;
	public static readonly RULE_routineOption = 38;
	public static readonly RULE_serverOption = 39;
	public static readonly RULE_createDefinitions = 40;
	public static readonly RULE_createDefinition = 41;
	public static readonly RULE_checkConstraintDefinition = 42;
	public static readonly RULE_constraintSymbol = 43;
	public static readonly RULE_columnDefinition = 44;
	public static readonly RULE_columnConstraint = 45;
	public static readonly RULE_referenceDefinition = 46;
	public static readonly RULE_referenceAction = 47;
	public static readonly RULE_referenceControlType = 48;
	public static readonly RULE_tableOption = 49;
	public static readonly RULE_tableType = 50;
	public static readonly RULE_tablespaceStorage = 51;
	public static readonly RULE_partitionDefinitions = 52;
	public static readonly RULE_partitionFunctionDefinition = 53;
	public static readonly RULE_subpartitionFunctionDefinition = 54;
	public static readonly RULE_partitionDefinition = 55;
	public static readonly RULE_partitionDefinerAtom = 56;
	public static readonly RULE_partitionDefinerVector = 57;
	public static readonly RULE_subpartitionDefinition = 58;
	public static readonly RULE_partitionOption = 59;
	public static readonly RULE_alterDatabase = 60;
	public static readonly RULE_alterEvent = 61;
	public static readonly RULE_alterFunction = 62;
	public static readonly RULE_alterInstance = 63;
	public static readonly RULE_alterLogfileGroup = 64;
	public static readonly RULE_alterProcedure = 65;
	public static readonly RULE_alterServer = 66;
	public static readonly RULE_alterTable = 67;
	public static readonly RULE_alterTablespace = 68;
	public static readonly RULE_alterView = 69;
	public static readonly RULE_alterOption = 70;
	public static readonly RULE_alterPartitionSpecification = 71;
	public static readonly RULE_dropDatabase = 72;
	public static readonly RULE_dropEvent = 73;
	public static readonly RULE_dropIndex = 74;
	public static readonly RULE_dropLogfileGroup = 75;
	public static readonly RULE_dropProcedure = 76;
	public static readonly RULE_dropFunction = 77;
	public static readonly RULE_dropServer = 78;
	public static readonly RULE_dropSpatial = 79;
	public static readonly RULE_dropTable = 80;
	public static readonly RULE_dropTablespace = 81;
	public static readonly RULE_dropTrigger = 82;
	public static readonly RULE_dropView = 83;
	public static readonly RULE_dropRole = 84;
	public static readonly RULE_setRole = 85;
	public static readonly RULE_renameTable = 86;
	public static readonly RULE_renameTableClause = 87;
	public static readonly RULE_truncateTable = 88;
	public static readonly RULE_callStatement = 89;
	public static readonly RULE_deleteStatement = 90;
	public static readonly RULE_doStatement = 91;
	public static readonly RULE_handlerStatement = 92;
	public static readonly RULE_insertStatement = 93;
	public static readonly RULE_asRowAlias = 94;
	public static readonly RULE_selectOrTableOrValues = 95;
	public static readonly RULE_interSectStatement = 96;
	public static readonly RULE_interSectQuery = 97;
	public static readonly RULE_loadDataStatement = 98;
	public static readonly RULE_loadXmlStatement = 99;
	public static readonly RULE_parenthesizedQuery = 100;
	public static readonly RULE_replaceStatement = 101;
	public static readonly RULE_selectStatement = 102;
	public static readonly RULE_setOperations = 103;
	public static readonly RULE_queryExpressionBody = 104;
	public static readonly RULE_queryItem = 105;
	public static readonly RULE_queryPrimary = 106;
	public static readonly RULE_updateStatement = 107;
	public static readonly RULE_valuesStatement = 108;
	public static readonly RULE_parenthesizedQueryExpression = 109;
	public static readonly RULE_queryBlock = 110;
	public static readonly RULE_replaceStatementValuesOrSelectOrTable = 111;
	public static readonly RULE_rowValuesList = 112;
	public static readonly RULE_setAssignmentList = 113;
	public static readonly RULE_updatedElement = 114;
	public static readonly RULE_assignmentField = 115;
	public static readonly RULE_lockClause = 116;
	public static readonly RULE_singleDeleteStatement = 117;
	public static readonly RULE_multipleDeleteStatement = 118;
	public static readonly RULE_handlerOpenStatement = 119;
	public static readonly RULE_handlerReadIndexStatement = 120;
	public static readonly RULE_handlerReadStatement = 121;
	public static readonly RULE_handlerCloseStatement = 122;
	public static readonly RULE_importTableStatement = 123;
	public static readonly RULE_singleUpdateStatement = 124;
	public static readonly RULE_multipleUpdateStatement = 125;
	public static readonly RULE_orderByClause = 126;
	public static readonly RULE_orderByExpression = 127;
	public static readonly RULE_tableSources = 128;
	public static readonly RULE_tableSource = 129;
	public static readonly RULE_tableSourceItem = 130;
	public static readonly RULE_fullColumnNames = 131;
	public static readonly RULE_indexHint = 132;
	public static readonly RULE_indexHintType = 133;
	public static readonly RULE_joinPart = 134;
	public static readonly RULE_joinSpec = 135;
	public static readonly RULE_queryExpression = 136;
	public static readonly RULE_queryExpressionNointo = 137;
	public static readonly RULE_querySpecification = 138;
	public static readonly RULE_querySpecificationNointo = 139;
	public static readonly RULE_unionParenthesis = 140;
	public static readonly RULE_unionStatement = 141;
	public static readonly RULE_lateralStatement = 142;
	public static readonly RULE_jsonTable = 143;
	public static readonly RULE_jsonColumnList = 144;
	public static readonly RULE_jsonColumn = 145;
	public static readonly RULE_jsonOnEmpty = 146;
	public static readonly RULE_jsonOnError = 147;
	public static readonly RULE_selectSpec = 148;
	public static readonly RULE_selectElements = 149;
	public static readonly RULE_selectElement = 150;
	public static readonly RULE_intoClause = 151;
	public static readonly RULE_selectFieldsInto = 152;
	public static readonly RULE_selectLinesInto = 153;
	public static readonly RULE_fromClause = 154;
	public static readonly RULE_groupByClause = 155;
	public static readonly RULE_havingClause = 156;
	public static readonly RULE_windowClause = 157;
	public static readonly RULE_groupByItem = 158;
	public static readonly RULE_limitClause = 159;
	public static readonly RULE_limitClauseAtom = 160;
	public static readonly RULE_startTransaction = 161;
	public static readonly RULE_beginWork = 162;
	public static readonly RULE_commitWork = 163;
	public static readonly RULE_rollbackWork = 164;
	public static readonly RULE_savepointStatement = 165;
	public static readonly RULE_rollbackStatement = 166;
	public static readonly RULE_releaseStatement = 167;
	public static readonly RULE_lockTables = 168;
	public static readonly RULE_unlockTables = 169;
	public static readonly RULE_setAutocommitStatement = 170;
	public static readonly RULE_setTransactionStatement = 171;
	public static readonly RULE_transactionMode = 172;
	public static readonly RULE_lockTableElement = 173;
	public static readonly RULE_lockAction = 174;
	public static readonly RULE_transactionOption = 175;
	public static readonly RULE_transactionLevel = 176;
	public static readonly RULE_changeMaster = 177;
	public static readonly RULE_changeReplicationFilter = 178;
	public static readonly RULE_changeReplicationSource = 179;
	public static readonly RULE_purgeBinaryLogs = 180;
	public static readonly RULE_startSlaveOrReplica = 181;
	public static readonly RULE_stopSlaveOrReplica = 182;
	public static readonly RULE_startGroupReplication = 183;
	public static readonly RULE_stopGroupReplication = 184;
	public static readonly RULE_masterOption = 185;
	public static readonly RULE_stringMasterOption = 186;
	public static readonly RULE_decimalMasterOption = 187;
	public static readonly RULE_boolMasterOption = 188;
	public static readonly RULE_v8NewMasterOption = 189;
	public static readonly RULE_replicationSourceOption = 190;
	public static readonly RULE_stringSourceOption = 191;
	public static readonly RULE_decimalSourceOption = 192;
	public static readonly RULE_boolSourceOption = 193;
	public static readonly RULE_otherSourceOption = 194;
	public static readonly RULE_channelOption = 195;
	public static readonly RULE_replicationFilter = 196;
	public static readonly RULE_tablePair = 197;
	public static readonly RULE_threadType = 198;
	public static readonly RULE_untilOption = 199;
	public static readonly RULE_connectionOptions = 200;
	public static readonly RULE_gtuidSet = 201;
	public static readonly RULE_xaStartTransaction = 202;
	public static readonly RULE_xaEndTransaction = 203;
	public static readonly RULE_xaPrepareStatement = 204;
	public static readonly RULE_xaCommitWork = 205;
	public static readonly RULE_xaRollbackWork = 206;
	public static readonly RULE_xaRecoverWork = 207;
	public static readonly RULE_prepareStatement = 208;
	public static readonly RULE_executeStatement = 209;
	public static readonly RULE_deallocatePrepare = 210;
	public static readonly RULE_routineBody = 211;
	public static readonly RULE_blockStatement = 212;
	public static readonly RULE_caseStatement = 213;
	public static readonly RULE_ifStatement = 214;
	public static readonly RULE_iterateStatement = 215;
	public static readonly RULE_leaveStatement = 216;
	public static readonly RULE_loopStatement = 217;
	public static readonly RULE_repeatStatement = 218;
	public static readonly RULE_returnStatement = 219;
	public static readonly RULE_whileStatement = 220;
	public static readonly RULE_cursorStatement = 221;
	public static readonly RULE_declareVariable = 222;
	public static readonly RULE_declareCondition = 223;
	public static readonly RULE_declareCursor = 224;
	public static readonly RULE_declareHandler = 225;
	public static readonly RULE_handlerConditionValue = 226;
	public static readonly RULE_procedureSqlStatement = 227;
	public static readonly RULE_caseAlternative = 228;
	public static readonly RULE_elifAlternative = 229;
	public static readonly RULE_alterUser = 230;
	public static readonly RULE_createUser = 231;
	public static readonly RULE_dropUser = 232;
	public static readonly RULE_grantStatement = 233;
	public static readonly RULE_roleOption = 234;
	public static readonly RULE_grantProxy = 235;
	public static readonly RULE_alterResourceGroup = 236;
	public static readonly RULE_createResourceGroup = 237;
	public static readonly RULE_dropResourceGroup = 238;
	public static readonly RULE_setResourceGroup = 239;
	public static readonly RULE_resourceGroupVcpuSpec = 240;
	public static readonly RULE_renameUser = 241;
	public static readonly RULE_revokeStatement = 242;
	public static readonly RULE_ignoreUnknownUser = 243;
	public static readonly RULE_privilegeObjectType = 244;
	public static readonly RULE_setPasswordStatement = 245;
	public static readonly RULE_userSpecification = 246;
	public static readonly RULE_alterUserAuthOption = 247;
	public static readonly RULE_createUserAuthOption = 248;
	public static readonly RULE_createUserInitialAuthOption = 249;
	public static readonly RULE_userAuthOption = 250;
	public static readonly RULE_authOptionClause = 251;
	public static readonly RULE_authenticationRule = 252;
	public static readonly RULE_tlsOption = 253;
	public static readonly RULE_userResourceOption = 254;
	public static readonly RULE_userPasswordOption = 255;
	public static readonly RULE_userLockOption = 256;
	public static readonly RULE_factorAuthOption = 257;
	public static readonly RULE_registrationOption = 258;
	public static readonly RULE_factor = 259;
	public static readonly RULE_privelegeClause = 260;
	public static readonly RULE_privilege = 261;
	public static readonly RULE_privilegeLevel = 262;
	public static readonly RULE_renameUserClause = 263;
	public static readonly RULE_analyzeTable = 264;
	public static readonly RULE_checkTable = 265;
	public static readonly RULE_checksumTable = 266;
	public static readonly RULE_optimizeTable = 267;
	public static readonly RULE_repairTable = 268;
	public static readonly RULE_tableActionOption = 269;
	public static readonly RULE_checkTableOption = 270;
	public static readonly RULE_createFunction = 271;
	public static readonly RULE_installComponent = 272;
	public static readonly RULE_variableExpr = 273;
	public static readonly RULE_uninstallComponent = 274;
	public static readonly RULE_installPlugin = 275;
	public static readonly RULE_uninstallPlugin = 276;
	public static readonly RULE_cloneStatement = 277;
	public static readonly RULE_setStatement = 278;
	public static readonly RULE_showStatement = 279;
	public static readonly RULE_variableClause = 280;
	public static readonly RULE_showCommonEntity = 281;
	public static readonly RULE_showFilter = 282;
	public static readonly RULE_showGlobalInfoClause = 283;
	public static readonly RULE_showSchemaEntity = 284;
	public static readonly RULE_showProfileType = 285;
	public static readonly RULE_binlogStatement = 286;
	public static readonly RULE_cacheIndexStatement = 287;
	public static readonly RULE_flushStatement = 288;
	public static readonly RULE_killStatement = 289;
	public static readonly RULE_loadIndexIntoCache = 290;
	public static readonly RULE_resetStatement = 291;
	public static readonly RULE_resetOption = 292;
	public static readonly RULE_resetPersist = 293;
	public static readonly RULE_resetAllChannel = 294;
	public static readonly RULE_reStartStatement = 295;
	public static readonly RULE_shutdownStatement = 296;
	public static readonly RULE_tableIndex = 297;
	public static readonly RULE_flushOption = 298;
	public static readonly RULE_flushTableOption = 299;
	public static readonly RULE_loadedTableIndexes = 300;
	public static readonly RULE_simpleDescribeStatement = 301;
	public static readonly RULE_fullDescribeStatement = 302;
	public static readonly RULE_analyzeDescribeStatement = 303;
	public static readonly RULE_helpStatement = 304;
	public static readonly RULE_useStatement = 305;
	public static readonly RULE_signalStatement = 306;
	public static readonly RULE_resignalStatement = 307;
	public static readonly RULE_signalConditionInformation = 308;
	public static readonly RULE_withStatement = 309;
	public static readonly RULE_tableStatement = 310;
	public static readonly RULE_diagnosticsStatement = 311;
	public static readonly RULE_diagnosticsConditionInformationName = 312;
	public static readonly RULE_describeObjectClause = 313;
	public static readonly RULE_databaseNameCreate = 314;
	public static readonly RULE_databaseName = 315;
	public static readonly RULE_functionNameCreate = 316;
	public static readonly RULE_functionName = 317;
	public static readonly RULE_viewNameCreate = 318;
	public static readonly RULE_viewName = 319;
	public static readonly RULE_indexNameCreate = 320;
	public static readonly RULE_indexNames = 321;
	public static readonly RULE_indexName = 322;
	public static readonly RULE_groupNameCreate = 323;
	public static readonly RULE_groupName = 324;
	public static readonly RULE_tableNameCreate = 325;
	public static readonly RULE_tableNames = 326;
	public static readonly RULE_tableName = 327;
	public static readonly RULE_userOrRoleNames = 328;
	public static readonly RULE_userOrRoleName = 329;
	public static readonly RULE_columnNameCreate = 330;
	public static readonly RULE_columnNames = 331;
	public static readonly RULE_columnName = 332;
	public static readonly RULE_tablespaceNameCreate = 333;
	public static readonly RULE_tablespaceName = 334;
	public static readonly RULE_partitionNameCreate = 335;
	public static readonly RULE_partitionNames = 336;
	public static readonly RULE_partitionName = 337;
	public static readonly RULE_indexColumnName = 338;
	public static readonly RULE_userHostPort = 339;
	public static readonly RULE_userAtHost = 340;
	public static readonly RULE_simpleUserName = 341;
	public static readonly RULE_hostName = 342;
	public static readonly RULE_userName = 343;
	public static readonly RULE_mysqlVariable = 344;
	public static readonly RULE_charsetName = 345;
	public static readonly RULE_collationName = 346;
	public static readonly RULE_engineName = 347;
	public static readonly RULE_engineNameBase = 348;
	public static readonly RULE_uuidSet = 349;
	public static readonly RULE_xid = 350;
	public static readonly RULE_xuidStringId = 351;
	public static readonly RULE_fullId = 352;
	public static readonly RULE_uidList = 353;
	public static readonly RULE_uid = 354;
	public static readonly RULE_simpleId = 355;
	public static readonly RULE_dottedId = 356;
	public static readonly RULE_decimalLiteral = 357;
	public static readonly RULE_fileSizeLiteral = 358;
	public static readonly RULE_stringLiteral = 359;
	public static readonly RULE_booleanLiteral = 360;
	public static readonly RULE_hexadecimalLiteral = 361;
	public static readonly RULE_nullNotnull = 362;
	public static readonly RULE_constant = 363;
	public static readonly RULE_dataType = 364;
	public static readonly RULE_collectionOptions = 365;
	public static readonly RULE_convertedDataType = 366;
	public static readonly RULE_lengthOneDimension = 367;
	public static readonly RULE_lengthTwoDimension = 368;
	public static readonly RULE_lengthTwoOptionalDimension = 369;
	public static readonly RULE_indexColumnNames = 370;
	public static readonly RULE_expressions = 371;
	public static readonly RULE_valuesOrValueList = 372;
	public static readonly RULE_expressionsWithDefaults = 373;
	public static readonly RULE_expressionOrDefault = 374;
	public static readonly RULE_constants = 375;
	public static readonly RULE_simpleStrings = 376;
	public static readonly RULE_userVariables = 377;
	public static readonly RULE_defaultValue = 378;
	public static readonly RULE_currentTimestamp = 379;
	public static readonly RULE_ifExists = 380;
	public static readonly RULE_ifNotExists = 381;
	public static readonly RULE_orReplace = 382;
	public static readonly RULE_functionCall = 383;
	public static readonly RULE_specificFunction = 384;
	public static readonly RULE_caseFuncAlternative = 385;
	public static readonly RULE_levelsInWeightString = 386;
	public static readonly RULE_levelInWeightListElement = 387;
	public static readonly RULE_aggregateWindowedFunction = 388;
	public static readonly RULE_nonAggregateWindowedFunction = 389;
	public static readonly RULE_overClause = 390;
	public static readonly RULE_windowSpec = 391;
	public static readonly RULE_windowName = 392;
	public static readonly RULE_frameClause = 393;
	public static readonly RULE_frameUnits = 394;
	public static readonly RULE_frameExtent = 395;
	public static readonly RULE_frameBetween = 396;
	public static readonly RULE_frameRange = 397;
	public static readonly RULE_partitionClause = 398;
	public static readonly RULE_scalarFunctionName = 399;
	public static readonly RULE_passwordFunctionClause = 400;
	public static readonly RULE_functionArgs = 401;
	public static readonly RULE_functionArg = 402;
	public static readonly RULE_expression = 403;
	public static readonly RULE_predicate = 404;
	public static readonly RULE_expressionAtom = 405;
	public static readonly RULE_unaryOperator = 406;
	public static readonly RULE_comparisonOperator = 407;
	public static readonly RULE_comparisonBase = 408;
	public static readonly RULE_logicalOperator = 409;
	public static readonly RULE_bitOperator = 410;
	public static readonly RULE_mathOperator = 411;
	public static readonly RULE_jsonOperator = 412;
	public static readonly RULE_charsetNameBase = 413;
	public static readonly RULE_transactionLevelBase = 414;
	public static readonly RULE_privilegesBase = 415;
	public static readonly RULE_intervalTypeBase = 416;
	public static readonly RULE_dataTypeBase = 417;
	public static readonly RULE_keywordsCanBeId = 418;
	public static readonly RULE_functionNameBase = 419;
	// tslint:disable:no-trailing-whitespace
	public static readonly ruleNames: string[] = [
		"program", "singleStatement", "sqlStatement", "emptyStatement_", "ddlStatement", 
		"dmlStatement", "transactionStatement", "replicationStatement", "preparedStatement", 
		"compoundStatement", "administrationStatement", "utilityStatement", "createDatabase", 
		"createEvent", "createIndex", "createLogfileGroup", "createProcedure", 
		"createRole", "createServer", "createTable", "createTablespaceInnodb", 
		"createTablespaceNdb", "createTrigger", "withClause", "commonTableExpressions", 
		"createView", "createDatabaseOption", "charSet", "currentUserExpression", 
		"ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", 
		"intervalType", "enableType", "indexType", "indexOption", "procedureParameter", 
		"routineOption", "serverOption", "createDefinitions", "createDefinition", 
		"checkConstraintDefinition", "constraintSymbol", "columnDefinition", "columnConstraint", 
		"referenceDefinition", "referenceAction", "referenceControlType", "tableOption", 
		"tableType", "tablespaceStorage", "partitionDefinitions", "partitionFunctionDefinition", 
		"subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", 
		"partitionDefinerVector", "subpartitionDefinition", "partitionOption", 
		"alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", 
		"alterProcedure", "alterServer", "alterTable", "alterTablespace", "alterView", 
		"alterOption", "alterPartitionSpecification", "dropDatabase", "dropEvent", 
		"dropIndex", "dropLogfileGroup", "dropProcedure", "dropFunction", "dropServer", 
		"dropSpatial", "dropTable", "dropTablespace", "dropTrigger", "dropView", 
		"dropRole", "setRole", "renameTable", "renameTableClause", "truncateTable", 
		"callStatement", "deleteStatement", "doStatement", "handlerStatement", 
		"insertStatement", "asRowAlias", "selectOrTableOrValues", "interSectStatement", 
		"interSectQuery", "loadDataStatement", "loadXmlStatement", "parenthesizedQuery", 
		"replaceStatement", "selectStatement", "setOperations", "queryExpressionBody", 
		"queryItem", "queryPrimary", "updateStatement", "valuesStatement", "parenthesizedQueryExpression", 
		"queryBlock", "replaceStatementValuesOrSelectOrTable", "rowValuesList", 
		"setAssignmentList", "updatedElement", "assignmentField", "lockClause", 
		"singleDeleteStatement", "multipleDeleteStatement", "handlerOpenStatement", 
		"handlerReadIndexStatement", "handlerReadStatement", "handlerCloseStatement", 
		"importTableStatement", "singleUpdateStatement", "multipleUpdateStatement", 
		"orderByClause", "orderByExpression", "tableSources", "tableSource", "tableSourceItem", 
		"fullColumnNames", "indexHint", "indexHintType", "joinPart", "joinSpec", 
		"queryExpression", "queryExpressionNointo", "querySpecification", "querySpecificationNointo", 
		"unionParenthesis", "unionStatement", "lateralStatement", "jsonTable", 
		"jsonColumnList", "jsonColumn", "jsonOnEmpty", "jsonOnError", "selectSpec", 
		"selectElements", "selectElement", "intoClause", "selectFieldsInto", "selectLinesInto", 
		"fromClause", "groupByClause", "havingClause", "windowClause", "groupByItem", 
		"limitClause", "limitClauseAtom", "startTransaction", "beginWork", "commitWork", 
		"rollbackWork", "savepointStatement", "rollbackStatement", "releaseStatement", 
		"lockTables", "unlockTables", "setAutocommitStatement", "setTransactionStatement", 
		"transactionMode", "lockTableElement", "lockAction", "transactionOption", 
		"transactionLevel", "changeMaster", "changeReplicationFilter", "changeReplicationSource", 
		"purgeBinaryLogs", "startSlaveOrReplica", "stopSlaveOrReplica", "startGroupReplication", 
		"stopGroupReplication", "masterOption", "stringMasterOption", "decimalMasterOption", 
		"boolMasterOption", "v8NewMasterOption", "replicationSourceOption", "stringSourceOption", 
		"decimalSourceOption", "boolSourceOption", "otherSourceOption", "channelOption", 
		"replicationFilter", "tablePair", "threadType", "untilOption", "connectionOptions", 
		"gtuidSet", "xaStartTransaction", "xaEndTransaction", "xaPrepareStatement", 
		"xaCommitWork", "xaRollbackWork", "xaRecoverWork", "prepareStatement", 
		"executeStatement", "deallocatePrepare", "routineBody", "blockStatement", 
		"caseStatement", "ifStatement", "iterateStatement", "leaveStatement", 
		"loopStatement", "repeatStatement", "returnStatement", "whileStatement", 
		"cursorStatement", "declareVariable", "declareCondition", "declareCursor", 
		"declareHandler", "handlerConditionValue", "procedureSqlStatement", "caseAlternative", 
		"elifAlternative", "alterUser", "createUser", "dropUser", "grantStatement", 
		"roleOption", "grantProxy", "alterResourceGroup", "createResourceGroup", 
		"dropResourceGroup", "setResourceGroup", "resourceGroupVcpuSpec", "renameUser", 
		"revokeStatement", "ignoreUnknownUser", "privilegeObjectType", "setPasswordStatement", 
		"userSpecification", "alterUserAuthOption", "createUserAuthOption", "createUserInitialAuthOption", 
		"userAuthOption", "authOptionClause", "authenticationRule", "tlsOption", 
		"userResourceOption", "userPasswordOption", "userLockOption", "factorAuthOption", 
		"registrationOption", "factor", "privelegeClause", "privilege", "privilegeLevel", 
		"renameUserClause", "analyzeTable", "checkTable", "checksumTable", "optimizeTable", 
		"repairTable", "tableActionOption", "checkTableOption", "createFunction", 
		"installComponent", "variableExpr", "uninstallComponent", "installPlugin", 
		"uninstallPlugin", "cloneStatement", "setStatement", "showStatement", 
		"variableClause", "showCommonEntity", "showFilter", "showGlobalInfoClause", 
		"showSchemaEntity", "showProfileType", "binlogStatement", "cacheIndexStatement", 
		"flushStatement", "killStatement", "loadIndexIntoCache", "resetStatement", 
		"resetOption", "resetPersist", "resetAllChannel", "reStartStatement", 
		"shutdownStatement", "tableIndex", "flushOption", "flushTableOption", 
		"loadedTableIndexes", "simpleDescribeStatement", "fullDescribeStatement", 
		"analyzeDescribeStatement", "helpStatement", "useStatement", "signalStatement", 
		"resignalStatement", "signalConditionInformation", "withStatement", "tableStatement", 
		"diagnosticsStatement", "diagnosticsConditionInformationName", "describeObjectClause", 
		"databaseNameCreate", "databaseName", "functionNameCreate", "functionName", 
		"viewNameCreate", "viewName", "indexNameCreate", "indexNames", "indexName", 
		"groupNameCreate", "groupName", "tableNameCreate", "tableNames", "tableName", 
		"userOrRoleNames", "userOrRoleName", "columnNameCreate", "columnNames", 
		"columnName", "tablespaceNameCreate", "tablespaceName", "partitionNameCreate", 
		"partitionNames", "partitionName", "indexColumnName", "userHostPort", 
		"userAtHost", "simpleUserName", "hostName", "userName", "mysqlVariable", 
		"charsetName", "collationName", "engineName", "engineNameBase", "uuidSet", 
		"xid", "xuidStringId", "fullId", "uidList", "uid", "simpleId", "dottedId", 
		"decimalLiteral", "fileSizeLiteral", "stringLiteral", "booleanLiteral", 
		"hexadecimalLiteral", "nullNotnull", "constant", "dataType", "collectionOptions", 
		"convertedDataType", "lengthOneDimension", "lengthTwoDimension", "lengthTwoOptionalDimension", 
		"indexColumnNames", "expressions", "valuesOrValueList", "expressionsWithDefaults", 
		"expressionOrDefault", "constants", "simpleStrings", "userVariables", 
		"defaultValue", "currentTimestamp", "ifExists", "ifNotExists", "orReplace", 
		"functionCall", "specificFunction", "caseFuncAlternative", "levelsInWeightString", 
		"levelInWeightListElement", "aggregateWindowedFunction", "nonAggregateWindowedFunction", 
		"overClause", "windowSpec", "windowName", "frameClause", "frameUnits", 
		"frameExtent", "frameBetween", "frameRange", "partitionClause", "scalarFunctionName", 
		"passwordFunctionClause", "functionArgs", "functionArg", "expression", 
		"predicate", "expressionAtom", "unaryOperator", "comparisonOperator", 
		"comparisonBase", "logicalOperator", "bitOperator", "mathOperator", "jsonOperator", 
		"charsetNameBase", "transactionLevelBase", "privilegesBase", "intervalTypeBase", 
		"dataTypeBase", "keywordsCanBeId", "functionNameBase",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, undefined, undefined, "'ACTIVE'", "'ADD'", 
		"'ALL'", "'ALTER'", "'ALWAYS'", "'ANALYZE'", "'AND'", "'ARRAY'", "'AS'", 
		"'ASC'", "'ATTRIBUTE'", "'BEFORE'", "'BETWEEN'", "'BOTH'", "'BUCKETS'", 
		"'BY'", "'CALL'", "'CASCADE'", "'CASE'", "'CAST'", "'CHANGE'", "'CHARACTER'", 
		"'CHECK'", "'COLLATE'", "'COLUMN'", "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", 
		"'CONVERT'", "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_USER'", "'CURSOR'", 
		"'DATABASE'", "'DATABASES'", "'DECLARE'", "'DEFAULT'", "'DELAYED'", "'DELETE'", 
		"'DESC'", "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'", "'DISTINCT'", 
		"'DISTINCTROW'", "'DROP'", "'EACH'", "'ELSE'", "'ELSEIF'", "'EMPTY'", 
		"'ENCLOSED'", "'ENFORCED'", "'ESCAPED'", "'EXCEPT'", "'EXISTS'", "'EXIT'", 
		"'EXPLAIN'", "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", "'FOREIGN'", "'FROM'", 
		"'FULLTEXT'", "'GENERATE'", "'GENERATED'", "'GET'", "'GRANT'", "'GROUP'", 
		"'HAVING'", "'HIGH_PRIORITY'", "'HISTOGRAM'", "'IF'", "'IGNORE'", "'IN'", 
		"'INACTIVE'", "'INDEX'", "'INFILE'", "'INNER'", "'INOUT'", "'INSERT'", 
		"'INTERVAL'", "'INTO'", "'IS'", "'ITERATE'", "'JOIN'", "'KEY'", "'KEYS'", 
		"'KILL'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LIKE'", "'LIMIT'", 
		"'LINEAR'", "'LINES'", "'LOAD'", "'LOCK'", "'LOCKED'", "'LOOP'", "'LOW_PRIORITY'", 
		"'MASTER_BIND'", "'MASTER_SSL_VERIFY_SERVER_CERT'", "'MATCH'", "'MAXVALUE'", 
		"'MODIFIES'", "'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'", "'NULL'", 
		"'NUMBER'", "'STREAM'", "'ON'", "'OPTIMIZE'", "'OPTION'", "'OPTIONAL'", 
		"'OPTIONALLY'", "'OR'", "'ORDER'", "'OUT'", "'OUTER'", "'OUTFILE'", "'OVER'", 
		"'PARTITION'", "'PRIMARY'", "'PROCEDURE'", "'PURGE'", "'RANGE'", "'READ'", 
		"'READS'", "'REFERENCE'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", "'RENAME'", 
		"'REPEAT'", "'REPLACE'", "'REQUIRE'", "'RESIGNAL'", "'RESTRICT'", "'RETAIN'", 
		"'RETURN'", "'REVOKE'", "'RIGHT'", "'RLIKE'", "'SCHEMA'", "'SCHEMAS'", 
		"'SELECT'", "'SET'", "'SEPARATOR'", "'SHOW'", "'SIGNAL'", "'SKIP'", "'SKIP_QUERY_REWRITE'", 
		"'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'", "'SQLWARNING'", 
		"'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", "'SQL_SMALL_RESULT'", "'SSL'", 
		"'STACKED'", "'STARTING'", "'STRAIGHT_JOIN'", "'TABLE'", "'TERMINATED'", 
		"'THEN'", "'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", "'UNDO'", "'UNION'", 
		"'UNIQUE'", "'UNLOCK'", "'UNSIGNED'", "'UPDATE'", "'USAGE'", "'USE'", 
		"'USING'", "'VALUES'", "'VCPU'", "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", 
		"'WRITE'", "'XOR'", "'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", 
		"'MIDDLEINT'", "'INT'", "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", 
		"'INTEGER'", "'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", 
		"'FLOAT4'", "'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", 
		"'TIMESTAMP'", "'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", "'NVARCHAR'", 
		"'NATIONAL'", "'BINARY'", "'VARBINARY'", "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", 
		"'LONG'", "'LONGBLOB'", "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", 
		"'ENUM'", "'VARYING'", "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'", 
		"'DAY_SECOND'", "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", "'SECOND_MICROSECOND'", 
		"'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", "'DAY_MICROSECOND'", "'JSON_TABLE'", 
		"'JSON_VALUE'", "'NESTED'", "'ORDINALITY'", "'PATH'", "'AVG'", "'BIT_AND'", 
		"'BIT_OR'", "'BIT_XOR'", "'COUNT'", "'CUME_DIST'", "'DENSE_RANK'", "'FIRST_VALUE'", 
		"'GROUP_CONCAT'", "'LAG'", "'LAST_VALUE'", "'LEAD'", "'MAX'", "'MIN'", 
		"'NTILE'", "'NTH_VALUE'", "'PERCENT_RANK'", "'RANK'", "'ROW_NUMBER'", 
		"'STD'", "'STDDEV'", "'STDDEV_POP'", "'STDDEV_SAMP'", "'SUM'", "'VAR_POP'", 
		"'VAR_SAMP'", "'VARIANCE'", "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", 
		"'LOCALTIME'", "'CURDATE'", "'CURTIME'", "'DATE_ADD'", "'DATE_SUB'", "'EXTRACT'", 
		"'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", "'SUBSTR'", "'SUBSTRING'", 
		"'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", "'UTC_TIMESTAMP'", 
		"'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", "'ALGORITHM'", "'ANY'", 
		"'ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS'", "'AT'", "'AUTHORS'", "'AUTOCOMMIT'", 
		"'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'", "'AVG_ROW_LENGTH'", "'BEGIN'", 
		"'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'", "'BOOLEAN'", "'BTREE'", "'CACHE'", 
		"'CASCADED'", "'CHAIN'", "'CHANGED'", "'CHANNEL'", "'CHECKSUM'", "'CHALLENGE_RESPONSE'", 
		"'CIPHER'", "'CLASS_ORIGIN'", "'CLIENT'", "'CLOSE'", "'COALESCE'", "'CODE'", 
		"'COLUMNS'", "'COLUMN_FORMAT'", "'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", 
		"'COMPACT'", "'COMPLETION'", "'COMPONENT'", "'COMPRESSED'", "'COMPRESSION'", 
		"'CONCURRENT'", "'CONNECT'", "'CONNECTION'", "'CONSISTENT'", "'CONSTRAINT_CATALOG'", 
		"'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'", "'CONTAINS'", "'CONTEXT'", 
		"'CONTRIBUTORS'", "'COPY'", "'CPU'", "'CURSOR_NAME'", "'DATA'", "'DATAFILE'", 
		"'DEALLOCATE'", "'DEFAULT_AUTH'", "'DEFINER'", "'DELAY_KEY_WRITE'", "'DES_KEY_FILE'", 
		"'DIRECTORY'", "'DISABLE'", "'DISCARD'", "'DISK'", "'DO'", "'DUMPFILE'", 
		"'DUPLICATE'", "'DYNAMIC'", "'ENABLE'", "'ENCRYPTION'", "'ENCRYPTION_KEY_ID'", 
		"'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'", "'ERRORS'", "'ESCAPE'", 
		"'EVENT'", "'EVENTS'", "'EVERY'", "'EXCHANGE'", "'EXCLUSIVE'", "'EXPIRE'", 
		"'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", "'FACTOR'", "'FAILED_LOGIN_ATTEMPTS'", 
		"'FAST'", "'FAULTS'", "'FIELDS'", "'FILE_BLOCK_SIZE'", "'FILTER'", "'FINISH'", 
		"'FIRST'", "'FIXED'", "'FLUSH'", "'FOLLOWING'", "'FOLLOWS'", "'FOUND'", 
		"'FULL'", "'FUNCTION'", "'GENERAL'", "'GET_MASTER_PUBLIC_KEY'", "'GET_SOURCE_PUBLIC_KEY'", 
		"'GLOBAL'", "'GRANTS'", "'GROUP_REPLICATION'", "'GTID_ONLY'", "'HANDLER'", 
		"'HASH'", "'HELP'", "'HISTORY'", "'HOST'", "'HOSTS'", "'IDENTIFIED'", 
		"'IGNORE_SERVER_IDS'", "'IMPORT'", "'INDEXES'", "'INITIAL'", "'INITIAL_SIZE'", 
		"'INITIATE'", "'INPLACE'", "'INSERT_METHOD'", "'INSTALL'", "'INSTANCE'", 
		"'INSTANT'", "'INVISIBLE'", "'INVOKER'", "'IO'", "'IO_THREAD'", "'IPC'", 
		"'ISOLATION'", "'ISSUER'", "'JSON'", "'KEY_BLOCK_SIZE'", "'LANGUAGE'", 
		"'LAST'", "'LEAVES'", "'LESS'", "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'", 
		"'LOGS'", "'MASTER'", "'MASTER_AUTO_POSITION'", "'MASTER_COMPRESSION_ALGORITHMS'", 
		"'MASTER_CONNECT_RETRY'", "'MASTER_DELAY'", "'MASTER_HEARTBEAT_PERIOD'", 
		"'MASTER_HOST'", "'MASTER_LOG_FILE'", "'MASTER_LOG_POS'", "'MASTER_PASSWORD'", 
		"'MASTER_PORT'", "'MASTER_PUBLIC_KEY_PATH'", "'MASTER_RETRY_COUNT'", "'MASTER_SSL'", 
		"'MASTER_SSL_CA'", "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", "'MASTER_SSL_CIPHER'", 
		"'MASTER_SSL_CRL'", "'MASTER_SSL_CRLPATH'", "'MASTER_SSL_KEY'", "'MASTER_TLS_CIPHERSUITES'", 
		"'MASTER_TLS_VERSION'", "'MASTER_USER'", "'MASTER_ZSTD_COMPRESSION_LEVEL'", 
		"'MAX_CONNECTIONS_PER_HOUR'", "'MAX_QUERIES_PER_HOUR'", "'MAX_ROWS'", 
		"'MAX_SIZE'", "'MAX_UPDATES_PER_HOUR'", "'MAX_USER_CONNECTIONS'", "'MEDIUM'", 
		"'MEMBER'", "'MERGE'", "'MESSAGE_TEXT'", "'MID'", "'MIGRATE'", "'MIN_ROWS'", 
		"'MODE'", "'MODIFY'", "'MUTEX'", "'MYSQL'", "'MYSQL_ERRNO'", "'NAME'", 
		"'NAMES'", "'NCHAR'", "'NETWORK_NAMESPACE'", "'NEVER'", "'NEXT'", "'NO'", 
		"'NOWAIT'", "'NODEGROUP'", "'NONE'", "'ODBC'", "'OFF'", "'OFFLINE'", "'OFFSET'", 
		"'OF'", "'OLD'", "'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", "'OPEN'", 
		"'OPTIMIZER_COSTS'", "'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", 
		"'PAGE_CHECKSUM'", "'PAGE_COMPRESSED'", "'PAGE_COMPRESSION_LEVEL'", "'PARSER'", 
		"'PARTIAL'", "'PARTITIONING'", "'PARTITIONS'", "'PASSWORD'", "'PASSWORD_LOCK_TIME'", 
		"'PERSIST'", "'PERSIST_ONLY'", "'PHASE'", "'PLUGIN'", "'PLUGIN_DIR'", 
		"'PLUGINS'", "'PORT'", "'PRECEDES'", "'PRECEDING'", "'PREPARE'", "'PRESERVE'", 
		"'PREV'", "'PRIVILEGE_CHECKS_USER'", "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", 
		"'PROXY'", "'QUERY'", "'QUICK'", "'REBUILD'", "'RECOVER'", "'RECURSIVE'", 
		"'REDO_BUFFER_SIZE'", "'REDUNDANT'", "'REGISTRATION'", "'RELAY'", "'RELAY_LOG_FILE'", 
		"'RELAY_LOG_POS'", "'RELAYLOG'", "'REMOVE'", "'REORGANIZE'", "'REPAIR'", 
		"'REPLICA'", "'REPLICAS'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'", 
		"'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", "'REPLICATE_REWRITE_DB'", 
		"'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'", 
		"'REQUIRE_ROW_FORMAT'", "'REQUIRE_TABLE_PRIMARY_KEY_CHECK'", "'RESET'", 
		"'RESTART'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNING'", "'RETURNS'", 
		"'REUSE'", "'ROLE'", "'ROLLBACK'", "'ROLLUP'", "'ROTATE'", "'ROW'", "'ROWS'", 
		"'ROW_FORMAT'", "'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SERVER'", 
		"'SESSION'", "'SHARE'", "'SHARED'", "'SIGNED'", "'SIMPLE'", "'SLAVE'", 
		"'SLOW'", "'SNAPSHOT'", "'SOCKET'", "'SOME'", "'SONAME'", "'SOUNDS'", 
		"'SOURCE'", "'SOURCE_BIND'", "'SOURCE_HOST'", "'SOURCE_USER'", "'SOURCE_PASSWORD'", 
		"'SOURCE_PORT'", "'SOURCE_LOG_FILE'", "'SOURCE_LOG_POS'", "'SOURCE_AUTO_POSITION'", 
		"'SOURCE_HEARTBEAT_PERIOD'", "'SOURCE_CONNECT_RETRY'", "'SOURCE_RETRY_COUNT'", 
		"'SOURCE_CONNECTION_AUTO_FAILOVER'", "'SOURCE_DELAY'", "'SOURCE_COMPRESSION_ALGORITHMS'", 
		"'SOURCE_ZSTD_COMPRESSION_LEVEL'", "'SOURCE_SSL'", "'SOURCE_SSL_CA'", 
		"'SOURCE_SSL_CAPATH'", "'SOURCE_SSL_CERT'", "'SOURCE_SSL_CRL'", "'SOURCE_SSL_CRLPATH'", 
		"'SOURCE_SSL_KEY'", "'SOURCE_SSL_CIPHER'", "'SOURCE_SSL_VERIFY_SERVER_CERT'", 
		"'SOURCE_TLS_VERSION'", "'SOURCE_TLS_CIPHERSUITES'", "'SOURCE_PUBLIC_KEY_PATH'", 
		"'SQL_AFTER_GTIDS'", "'SQL_AFTER_MTS_GAPS'", "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", 
		"'SQL_CACHE'", "'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", "'STARTS'", 
		"'STATS_AUTO_RECALC'", "'STATS_PERSISTENT'", "'STATS_SAMPLE_PAGES'", "'STATUS'", 
		"'STOP'", "'STORAGE'", "'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", 
		"'SUBPARTITION'", "'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", "'SWITCHES'", 
		"'TABLE_NAME'", "'TABLESPACE'", "'TABLE_TYPE'", "'TEMPORARY'", "'TEMPTABLE'", 
		"'THAN'", "'TRADITIONAL'", "'TRANSACTION'", "'TRANSACTIONAL'", "'TREE'", 
		"'TRIGGERS'", "'TRUNCATE'", "'UNBOUNDED'", "'UNDEFINED'", "'UNDOFILE'", 
		"'UNDO_BUFFER_SIZE'", "'UNINSTALL'", "'UNKNOWN'", "'UNREGISTER'", "'UNTIL'", 
		"'UPGRADE'", "'USER'", "'USE_FRM'", "'USER_RESOURCES'", "'VALIDATION'", 
		"'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'", "'WAIT'", 
		"'WARNINGS'", "'WINDOW'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'X509'", 
		"'XA'", "'XML'", "'QUARTER'", "'MONTH'", "'DAY'", "'HOUR'", "'MINUTE'", 
		"'WEEK'", "'SECOND'", "'MICROSECOND'", "'ADMIN'", "'APPLICATION_PASSWORD_ADMIN'", 
		"'AUDIT_ABORT_EXEMPT'", "'AUDIT_ADMIN'", "'AUTHENTICATION'", "'AUTHENTICATION_POLICY_ADMIN'", 
		"'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", "'CLONE'", 
		"'CLONE_ADMIN'", "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", "'EXECUTE'", 
		"'FILE'", "'FIREWALL_ADMIN'", "'FIREWALL_EXEMPT'", "'FIREWALL_USER'", 
		"'FLUSH_OPTIMIZER_COSTS'", "'FLUSH_STATUS'", "'FLUSH_TABLES'", "'FLUSH_USER_RESOURCES'", 
		"'GROUP_REPLICATION_ADMIN'", "'INNODB_REDO_LOG_ARCHIVE'", "'INNODB_REDO_LOG_ENABLE'", 
		"'INVOKE'", "'LAMBDA'", "'NDB_STORED_USER'", "'PASSWORDLESS_USER_ADMIN'", 
		"'PERSIST_RO_VARIABLES_ADMIN'", "'PRIVILEGES'", "'PROCESS'", "'RELOAD'", 
		"'REPLICATION_APPLIER'", "'REPLICATION_SLAVE_ADMIN'", "'RESOURCE'", "'RESOURCE_GROUP_ADMIN'", 
		"'RESOURCE_GROUP_USER'", "'ROLE_ADMIN'", "'ROUTINE'", "'S3'", "'SERVICE_CONNECTION_ADMIN'", 
		undefined, "'SET_USER_ID'", "'SHOW_ROUTINE'", "'SHUTDOWN'", "'SUPER'", 
		"'SYSTEM_VARIABLES_ADMIN'", "'TABLES'", "'TABLE_ENCRYPTION_ADMIN'", "'VERSION_TOKEN_ADMIN'", 
		"'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'", "'BIG5'", "'CP1250'", "'CP1251'", 
		"'CP1256'", "'CP1257'", "'CP850'", "'CP852'", "'CP866'", "'CP932'", "'DEC8'", 
		"'EUCJPMS'", "'EUCKR'", "'GB18030'", "'GB2312'", "'GBK'", "'GEOSTD8'", 
		"'GREEK'", "'HEBREW'", "'HP8'", "'KEYBCS2'", "'KOI8R'", "'KOI8U'", "'LATIN1'", 
		"'LATIN2'", "'LATIN5'", "'LATIN7'", "'MACCE'", "'MACROMAN'", "'SJIS'", 
		"'SWE7'", "'TIS620'", "'UCS2'", "'UJIS'", "'UTF16'", "'UTF16LE'", "'UTF32'", 
		"'UTF8'", "'UTF8MB3'", "'UTF8MB4'", "'ARCHIVE'", "'BLACKHOLE'", "'CSV'", 
		"'FEDERATED'", "'INNODB'", "'MEMORY'", "'MRG_MYISAM'", "'MYISAM'", "'NDB'", 
		"'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", "'TOKUDB'", "'REPEATABLE'", "'COMMITTED'", 
		"'UNCOMMITTED'", "'SERIALIZABLE'", "'GEOMETRYCOLLECTION'", "'GEOMCOLLECTION'", 
		"'GEOMETRY'", "'LINESTRING'", "'MULTILINESTRING'", "'MULTIPOINT'", "'MULTIPOLYGON'", 
		"'POINT'", "'POLYGON'", "'CATALOG_NAME'", "'CHARSET'", "'COLLATION'", 
		"'ENGINE_ATTRIBUTE'", "'FORMAT'", "'GET_FORMAT'", "'INTERSECT'", "'RANDOM'", 
		"'REVERSE'", "'ROW_COUNT'", "'SCHEMA_NAME'", "'SECONDARY_ENGINE_ATTRIBUTE'", 
		"'SRID'", "'SYSTEM'", "'SYSTEM_USER'", "'THREAD_PRIORITY'", "'TP_CONNECTION_ADMIN'", 
		"'TYPE'", "'WEIGHT_STRING'", "':='", "'+='", "'-='", "'*='", "'/='", "'%='", 
		"'&='", "'^='", "'|='", "'*'", "'/'", "'%'", "'+'", "'-'", "'DIV'", "'MOD'", 
		"'='", "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", "'^'", "'.'", "'('", 
		"')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", "'3'", "'''", "'\"'", 
		"'`'", "':'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", 
		"KW_ACTIVE", "KW_ADD", "KW_ALL", "KW_ALTER", "KW_ALWAYS", "KW_ANALYZE", 
		"KW_AND", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_ATTRIBUTE", "KW_BEFORE", 
		"KW_BETWEEN", "KW_BOTH", "KW_BUCKETS", "KW_BY", "KW_CALL", "KW_CASCADE", 
		"KW_CASE", "KW_CAST", "KW_CHANGE", "KW_CHARACTER", "KW_CHECK", "KW_COLLATE", 
		"KW_COLUMN", "KW_CONDITION", "KW_CONSTRAINT", "KW_CONTINUE", "KW_CONVERT", 
		"KW_CREATE", "KW_CROSS", "KW_CURRENT", "KW_CURRENT_USER", "KW_CURSOR", 
		"KW_DATABASE", "KW_DATABASES", "KW_DECLARE", "KW_DEFAULT", "KW_DELAYED", 
		"KW_DELETE", "KW_DESC", "KW_DESCRIBE", "KW_DETERMINISTIC", "KW_DIAGNOSTICS", 
		"KW_DISTINCT", "KW_DISTINCTROW", "KW_DROP", "KW_EACH", "KW_ELSE", "KW_ELSEIF", 
		"KW_EMPTY", "KW_ENCLOSED", "KW_ENFORCED", "KW_ESCAPED", "KW_EXCEPT", "KW_EXISTS", 
		"KW_EXIT", "KW_EXPLAIN", "KW_FALSE", "KW_FETCH", "KW_FOR", "KW_FORCE", 
		"KW_FOREIGN", "KW_FROM", "KW_FULLTEXT", "KW_GENERATE", "KW_GENERATED", 
		"KW_GET", "KW_GRANT", "KW_GROUP", "KW_HAVING", "KW_HIGH_PRIORITY", "KW_HISTOGRAM", 
		"KW_IF", "KW_IGNORE", "KW_IN", "KW_INACTIVE", "KW_INDEX", "KW_INFILE", 
		"KW_INNER", "KW_INOUT", "KW_INSERT", "KW_INTERVAL", "KW_INTO", "KW_IS", 
		"KW_ITERATE", "KW_JOIN", "KW_KEY", "KW_KEYS", "KW_KILL", "KW_LATERAL", 
		"KW_LEADING", "KW_LEAVE", "KW_LEFT", "KW_LIKE", "KW_LIMIT", "KW_LINEAR", 
		"KW_LINES", "KW_LOAD", "KW_LOCK", "KW_LOCKED", "KW_LOOP", "KW_LOW_PRIORITY", 
		"KW_MASTER_BIND", "KW_MASTER_SSL_VERIFY_SERVER_CERT", "KW_MATCH", "KW_MAXVALUE", 
		"KW_MODIFIES", "KW_NATURAL", "KW_NOT", "KW_NO_WRITE_TO_BINLOG", "KW_NULL_LITERAL", 
		"KW_NUMBER", "KW_STREAM", "KW_ON", "KW_OPTIMIZE", "KW_OPTION", "KW_OPTIONAL", 
		"KW_OPTIONALLY", "KW_OR", "KW_ORDER", "KW_OUT", "KW_OUTER", "KW_OUTFILE", 
		"KW_OVER", "KW_PARTITION", "KW_PRIMARY", "KW_PROCEDURE", "KW_PURGE", "KW_RANGE", 
		"KW_READ", "KW_READS", "KW_REFERENCE", "KW_REFERENCES", "KW_REGEXP", "KW_RELEASE", 
		"KW_RENAME", "KW_REPEAT", "KW_REPLACE", "KW_REQUIRE", "KW_RESIGNAL", "KW_RESTRICT", 
		"KW_RETAIN", "KW_RETURN", "KW_REVOKE", "KW_RIGHT", "KW_RLIKE", "KW_SCHEMA", 
		"KW_SCHEMAS", "KW_SELECT", "KW_SET", "KW_SEPARATOR", "KW_SHOW", "KW_SIGNAL", 
		"KW_SKIP", "KW_SKIP_QUERY_REWRITE", "KW_SPATIAL", "KW_SQL", "KW_SQLEXCEPTION", 
		"KW_SQLSTATE", "KW_SQLWARNING", "KW_SQL_BIG_RESULT", "KW_SQL_CALC_FOUND_ROWS", 
		"KW_SQL_SMALL_RESULT", "KW_SSL", "KW_STACKED", "KW_STARTING", "KW_STRAIGHT_JOIN", 
		"KW_TABLE", "KW_TERMINATED", "KW_THEN", "KW_TO", "KW_TRAILING", "KW_TRIGGER", 
		"KW_TRUE", "KW_UNDO", "KW_UNION", "KW_UNIQUE", "KW_UNLOCK", "KW_UNSIGNED", 
		"KW_UPDATE", "KW_USAGE", "KW_USE", "KW_USING", "KW_VALUES", "KW_VCPU", 
		"KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WITH", "KW_WRITE", "KW_XOR", "KW_ZEROFILL", 
		"KW_TINYINT", "KW_SMALLINT", "KW_MEDIUMINT", "KW_MIDDLEINT", "KW_INT", 
		"KW_INT1", "KW_INT2", "KW_INT3", "KW_INT4", "KW_INT8", "KW_INTEGER", "KW_BIGINT", 
		"KW_REAL", "KW_DOUBLE", "KW_PRECISION", "KW_FLOAT", "KW_FLOAT4", "KW_FLOAT8", 
		"KW_DECIMAL", "KW_DEC", "KW_NUMERIC", "KW_DATE", "KW_TIME", "KW_TIMESTAMP", 
		"KW_DATETIME", "KW_YEAR", "KW_CHAR", "KW_VARCHAR", "KW_NVARCHAR", "KW_NATIONAL", 
		"KW_BINARY", "KW_VARBINARY", "KW_TINYBLOB", "KW_BLOB", "KW_MEDIUMBLOB", 
		"KW_LONG", "KW_LONGBLOB", "KW_TINYTEXT", "KW_TEXT", "KW_MEDIUMTEXT", "KW_LONGTEXT", 
		"KW_ENUM", "KW_VARYING", "KW_SERIAL", "KW_YEAR_MONTH", "KW_DAY_HOUR", 
		"KW_DAY_MINUTE", "KW_DAY_SECOND", "KW_HOUR_MINUTE", "KW_HOUR_SECOND", 
		"KW_MINUTE_SECOND", "KW_SECOND_MICROSECOND", "KW_MINUTE_MICROSECOND", 
		"KW_HOUR_MICROSECOND", "KW_DAY_MICROSECOND", "KW_JSON_TABLE", "KW_JSON_VALUE", 
		"KW_NESTED", "KW_ORDINALITY", "KW_PATH", "KW_AVG", "KW_BIT_AND", "KW_BIT_OR", 
		"KW_BIT_XOR", "KW_COUNT", "KW_CUME_DIST", "KW_DENSE_RANK", "KW_FIRST_VALUE", 
		"KW_GROUP_CONCAT", "KW_LAG", "KW_LAST_VALUE", "KW_LEAD", "KW_MAX", "KW_MIN", 
		"KW_NTILE", "KW_NTH_VALUE", "KW_PERCENT_RANK", "KW_RANK", "KW_ROW_NUMBER", 
		"KW_STD", "KW_STDDEV", "KW_STDDEV_POP", "KW_STDDEV_SAMP", "KW_SUM", "KW_VAR_POP", 
		"KW_VAR_SAMP", "KW_VARIANCE", "KW_CURRENT_DATE", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", 
		"KW_LOCALTIME", "KW_CURDATE", "KW_CURTIME", "KW_DATE_ADD", "KW_DATE_SUB", 
		"KW_EXTRACT", "KW_LOCALTIMESTAMP", "KW_NOW", "KW_POSITION", "KW_SUBSTR", 
		"KW_SUBSTRING", "KW_SYSDATE", "KW_TRIM", "KW_UTC_DATE", "KW_UTC_TIME", 
		"KW_UTC_TIMESTAMP", "KW_ACCOUNT", "KW_ACTION", "KW_AFTER", "KW_AGGREGATE", 
		"KW_ALGORITHM", "KW_ANY", "KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS", 
		"KW_AT", "KW_AUTHORS", "KW_AUTOCOMMIT", "KW_AUTOEXTEND_SIZE", "KW_AUTO_INCREMENT", 
		"KW_AVG_ROW_LENGTH", "KW_BEGIN", "KW_BINLOG", "KW_BIT", "KW_BLOCK", "KW_BOOL", 
		"KW_BOOLEAN", "KW_BTREE", "KW_CACHE", "KW_CASCADED", "KW_CHAIN", "KW_CHANGED", 
		"KW_CHANNEL", "KW_CHECKSUM", "KW_CHALLENGE_RESPONSE", "KW_CIPHER", "KW_CLASS_ORIGIN", 
		"KW_CLIENT", "KW_CLOSE", "KW_COALESCE", "KW_CODE", "KW_COLUMNS", "KW_COLUMN_FORMAT", 
		"KW_COLUMN_NAME", "KW_COMMENT", "KW_COMMIT", "KW_COMPACT", "KW_COMPLETION", 
		"KW_COMPONENT", "KW_COMPRESSED", "KW_COMPRESSION", "KW_CONCURRENT", "KW_CONNECT", 
		"KW_CONNECTION", "KW_CONSISTENT", "KW_CONSTRAINT_CATALOG", "KW_CONSTRAINT_SCHEMA", 
		"KW_CONSTRAINT_NAME", "KW_CONTAINS", "KW_CONTEXT", "KW_CONTRIBUTORS", 
		"KW_COPY", "KW_CPU", "KW_CURSOR_NAME", "KW_DATA", "KW_DATAFILE", "KW_DEALLOCATE", 
		"KW_DEFAULT_AUTH", "KW_DEFINER", "KW_DELAY_KEY_WRITE", "KW_DES_KEY_FILE", 
		"KW_DIRECTORY", "KW_DISABLE", "KW_DISCARD", "KW_DISK", "KW_DO", "KW_DUMPFILE", 
		"KW_DUPLICATE", "KW_DYNAMIC", "KW_ENABLE", "KW_ENCRYPTION", "KW_ENCRYPTION_KEY_ID", 
		"KW_END", "KW_ENDS", "KW_ENGINE", "KW_ENGINES", "KW_ERROR", "KW_ERRORS", 
		"KW_ESCAPE", "KW_EVENT", "KW_EVENTS", "KW_EVERY", "KW_EXCHANGE", "KW_EXCLUSIVE", 
		"KW_EXPIRE", "KW_EXPORT", "KW_EXTENDED", "KW_EXTENT_SIZE", "KW_FACTOR", 
		"KW_FAILED_LOGIN_ATTEMPTS", "KW_FAST", "KW_FAULTS", "KW_FIELDS", "KW_FILE_BLOCK_SIZE", 
		"KW_FILTER", "KW_FINISH", "KW_FIRST", "KW_FIXED", "KW_FLUSH", "KW_FOLLOWING", 
		"KW_FOLLOWS", "KW_FOUND", "KW_FULL", "KW_FUNCTION", "KW_GENERAL", "KW_GET_MASTER_PUBLIC_KEY", 
		"KW_GET_SOURCE_PUBLIC_KEY", "KW_GLOBAL", "KW_GRANTS", "KW_GROUP_REPLICATION", 
		"KW_GTID_ONLY", "KW_HANDLER", "KW_HASH", "KW_HELP", "KW_HISTORY", "KW_HOST", 
		"KW_HOSTS", "KW_IDENTIFIED", "KW_IGNORE_SERVER_IDS", "KW_IMPORT", "KW_INDEXES", 
		"KW_INITIAL", "KW_INITIAL_SIZE", "KW_INITIATE", "KW_INPLACE", "KW_INSERT_METHOD", 
		"KW_INSTALL", "KW_INSTANCE", "KW_INSTANT", "KW_INVISIBLE", "KW_INVOKER", 
		"KW_IO", "KW_IO_THREAD", "KW_IPC", "KW_ISOLATION", "KW_ISSUER", "KW_JSON", 
		"KW_KEY_BLOCK_SIZE", "KW_LANGUAGE", "KW_LAST", "KW_LEAVES", "KW_LESS", 
		"KW_LEVEL", "KW_LIST", "KW_LOCAL", "KW_LOGFILE", "KW_LOGS", "KW_MASTER", 
		"KW_MASTER_AUTO_POSITION", "KW_MASTER_COMPRESSION_ALGORITHMS", "KW_MASTER_CONNECT_RETRY", 
		"KW_MASTER_DELAY", "KW_MASTER_HEARTBEAT_PERIOD", "KW_MASTER_HOST", "KW_MASTER_LOG_FILE", 
		"KW_MASTER_LOG_POS", "KW_MASTER_PASSWORD", "KW_MASTER_PORT", "KW_MASTER_PUBLIC_KEY_PATH", 
		"KW_MASTER_RETRY_COUNT", "KW_MASTER_SSL", "KW_MASTER_SSL_CA", "KW_MASTER_SSL_CAPATH", 
		"KW_MASTER_SSL_CERT", "KW_MASTER_SSL_CIPHER", "KW_MASTER_SSL_CRL", "KW_MASTER_SSL_CRLPATH", 
		"KW_MASTER_SSL_KEY", "KW_MASTER_TLS_CIPHERSUITES", "KW_MASTER_TLS_VERSION", 
		"KW_MASTER_USER", "KW_MASTER_ZSTD_COMPRESSION_LEVEL", "KW_MAX_CONNECTIONS_PER_HOUR", 
		"KW_MAX_QUERIES_PER_HOUR", "KW_MAX_ROWS", "KW_MAX_SIZE", "KW_MAX_UPDATES_PER_HOUR", 
		"KW_MAX_USER_CONNECTIONS", "KW_MEDIUM", "KW_MEMBER", "KW_MERGE", "KW_MESSAGE_TEXT", 
		"KW_MID", "KW_MIGRATE", "KW_MIN_ROWS", "KW_MODE", "KW_MODIFY", "KW_MUTEX", 
		"KW_MYSQL", "KW_MYSQL_ERRNO", "KW_NAME", "KW_NAMES", "KW_NCHAR", "KW_NETWORK_NAMESPACE", 
		"KW_NEVER", "KW_NEXT", "KW_NO", "KW_NOWAIT", "KW_NODEGROUP", "KW_NONE", 
		"KW_ODBC", "KW_OFF", "KW_OFFLINE", "KW_OFFSET", "KW_OF", "KW_OLD", "KW_OLD_PASSWORD", 
		"KW_ONE", "KW_ONLINE", "KW_ONLY", "KW_OPEN", "KW_OPTIMIZER_COSTS", "KW_OPTIONS", 
		"KW_OWNER", "KW_PACK_KEYS", "KW_PAGE", "KW_PAGE_CHECKSUM", "KW_PAGE_COMPRESSED", 
		"KW_PAGE_COMPRESSION_LEVEL", "KW_PARSER", "KW_PARTIAL", "KW_PARTITIONING", 
		"KW_PARTITIONS", "KW_PASSWORD", "KW_PASSWORD_LOCK_TIME", "KW_PERSIST", 
		"KW_PERSIST_ONLY", "KW_PHASE", "KW_PLUGIN", "KW_PLUGIN_DIR", "KW_PLUGINS", 
		"KW_PORT", "KW_PRECEDES", "KW_PRECEDING", "KW_PREPARE", "KW_PRESERVE", 
		"KW_PREV", "KW_PRIVILEGE_CHECKS_USER", "KW_PROCESSLIST", "KW_PROFILE", 
		"KW_PROFILES", "KW_PROXY", "KW_QUERY", "KW_QUICK", "KW_REBUILD", "KW_RECOVER", 
		"KW_RECURSIVE", "KW_REDO_BUFFER_SIZE", "KW_REDUNDANT", "KW_REGISTRATION", 
		"KW_RELAY", "KW_RELAY_LOG_FILE", "KW_RELAY_LOG_POS", "KW_RELAYLOG", "KW_REMOVE", 
		"KW_REORGANIZE", "KW_REPAIR", "KW_REPLICA", "KW_REPLICAS", "KW_REPLICATE_DO_DB", 
		"KW_REPLICATE_DO_TABLE", "KW_REPLICATE_IGNORE_DB", "KW_REPLICATE_IGNORE_TABLE", 
		"KW_REPLICATE_REWRITE_DB", "KW_REPLICATE_WILD_DO_TABLE", "KW_REPLICATE_WILD_IGNORE_TABLE", 
		"KW_REPLICATION", "KW_REQUIRE_ROW_FORMAT", "KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK", 
		"KW_RESET", "KW_RESTART", "KW_RESUME", "KW_RETURNED_SQLSTATE", "KW_RETURNING", 
		"KW_RETURNS", "KW_REUSE", "KW_ROLE", "KW_ROLLBACK", "KW_ROLLUP", "KW_ROTATE", 
		"KW_ROW", "KW_ROWS", "KW_ROW_FORMAT", "KW_SAVEPOINT", "KW_SCHEDULE", "KW_SECURITY", 
		"KW_SERVER", "KW_SESSION", "KW_SHARE", "KW_SHARED", "KW_SIGNED", "KW_SIMPLE", 
		"KW_SLAVE", "KW_SLOW", "KW_SNAPSHOT", "KW_SOCKET", "KW_SOME", "KW_SONAME", 
		"KW_SOUNDS", "KW_SOURCE", "KW_SOURCE_BIND", "KW_SOURCE_HOST", "KW_SOURCE_USER", 
		"KW_SOURCE_PASSWORD", "KW_SOURCE_PORT", "KW_SOURCE_LOG_FILE", "KW_SOURCE_LOG_POS", 
		"KW_SOURCE_AUTO_POSITION", "KW_SOURCE_HEARTBEAT_PERIOD", "KW_SOURCE_CONNECT_RETRY", 
		"KW_SOURCE_RETRY_COUNT", "KW_SOURCE_CONNECTION_AUTO_FAILOVER", "KW_SOURCE_DELAY", 
		"KW_SOURCE_COMPRESSION_ALGORITHMS", "KW_SOURCE_ZSTD_COMPRESSION_LEVEL", 
		"KW_SOURCE_SSL", "KW_SOURCE_SSL_CA", "KW_SOURCE_SSL_CAPATH", "KW_SOURCE_SSL_CERT", 
		"KW_SOURCE_SSL_CRL", "KW_SOURCE_SSL_CRLPATH", "KW_SOURCE_SSL_KEY", "KW_SOURCE_SSL_CIPHER", 
		"KW_SOURCE_SSL_VERIFY_SERVER_CERT", "KW_SOURCE_TLS_VERSION", "KW_SOURCE_TLS_CIPHERSUITES", 
		"KW_SOURCE_PUBLIC_KEY_PATH", "KW_SQL_AFTER_GTIDS", "KW_SQL_AFTER_MTS_GAPS", 
		"KW_SQL_BEFORE_GTIDS", "KW_SQL_BUFFER_RESULT", "KW_SQL_CACHE", "KW_SQL_NO_CACHE", 
		"KW_SQL_THREAD", "KW_START", "KW_STARTS", "KW_STATS_AUTO_RECALC", "KW_STATS_PERSISTENT", 
		"KW_STATS_SAMPLE_PAGES", "KW_STATUS", "KW_STOP", "KW_STORAGE", "KW_STORED", 
		"KW_STRING", "KW_SUBCLASS_ORIGIN", "KW_SUBJECT", "KW_SUBPARTITION", "KW_SUBPARTITIONS", 
		"KW_SUSPEND", "KW_SWAPS", "KW_SWITCHES", "KW_TABLE_NAME", "KW_TABLESPACE", 
		"KW_TABLE_TYPE", "KW_TEMPORARY", "KW_TEMPTABLE", "KW_THAN", "KW_TRADITIONAL", 
		"KW_TRANSACTION", "KW_TRANSACTIONAL", "KW_TREE", "KW_TRIGGERS", "KW_TRUNCATE", 
		"KW_UNBOUNDED", "KW_UNDEFINED", "KW_UNDOFILE", "KW_UNDO_BUFFER_SIZE", 
		"KW_UNINSTALL", "KW_UNKNOWN", "KW_UNREGISTER", "KW_UNTIL", "KW_UPGRADE", 
		"KW_USER", "KW_USE_FRM", "KW_USER_RESOURCES", "KW_VALIDATION", "KW_VALUE", 
		"KW_VARIABLES", "KW_VIEW", "KW_VIRTUAL", "KW_VISIBLE", "KW_WAIT", "KW_WARNINGS", 
		"KW_WINDOW", "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_X509", "KW_XA", 
		"KW_XML", "KW_QUARTER", "KW_MONTH", "KW_DAY", "KW_HOUR", "KW_MINUTE", 
		"KW_WEEK", "KW_SECOND", "KW_MICROSECOND", "KW_ADMIN", "KW_APPLICATION_PASSWORD_ADMIN", 
		"KW_AUDIT_ABORT_EXEMPT", "KW_AUDIT_ADMIN", "KW_AUTHENTICATION", "KW_AUTHENTICATION_POLICY_ADMIN", 
		"KW_BACKUP_ADMIN", "KW_BINLOG_ADMIN", "KW_BINLOG_ENCRYPTION_ADMIN", "KW_CLONE", 
		"KW_CLONE_ADMIN", "KW_CONNECTION_ADMIN", "KW_ENCRYPTION_KEY_ADMIN", "KW_EXECUTE", 
		"KW_FILE", "KW_FIREWALL_ADMIN", "KW_FIREWALL_EXEMPT", "KW_FIREWALL_USER", 
		"KW_FLUSH_OPTIMIZER_COSTS", "KW_FLUSH_STATUS", "KW_FLUSH_TABLES", "KW_FLUSH_USER_RESOURCES", 
		"KW_GROUP_REPLICATION_ADMIN", "KW_INNODB_REDO_LOG_ARCHIVE", "KW_INNODB_REDO_LOG_ENABLE", 
		"KW_INVOKE", "KW_LAMBDA", "KW_NDB_STORED_USER", "KW_PASSWORDLESS_USER_ADMIN", 
		"KW_PERSIST_RO_VARIABLES_ADMIN", "KW_PRIVILEGES", "KW_PROCESS", "KW_RELOAD", 
		"KW_REPLICATION_APPLIER", "KW_REPLICATION_SLAVE_ADMIN", "KW_RESOURCE", 
		"KW_RESOURCE_GROUP_ADMIN", "KW_RESOURCE_GROUP_USER", "KW_ROLE_ADMIN", 
		"KW_ROUTINE", "KW_S3", "KW_SERVICE_CONNECTION_ADMIN", "KW_SESSION_VARIABLES_ADMIN", 
		"KW_SET_USER_ID", "KW_SHOW_ROUTINE", "KW_SHUTDOWN", "KW_SUPER", "KW_SYSTEM_VARIABLES_ADMIN", 
		"KW_TABLES", "KW_TABLE_ENCRYPTION_ADMIN", "KW_VERSION_TOKEN_ADMIN", "KW_XA_RECOVER_ADMIN", 
		"KW_ARMSCII8", "KW_ASCII", "KW_BIG5", "KW_CP1250", "KW_CP1251", "KW_CP1256", 
		"KW_CP1257", "KW_CP850", "KW_CP852", "KW_CP866", "KW_CP932", "KW_DEC8", 
		"KW_EUCJPMS", "KW_EUCKR", "KW_GB18030", "KW_GB2312", "KW_GBK", "KW_GEOSTD8", 
		"KW_GREEK", "KW_HEBREW", "KW_HP8", "KW_KEYBCS2", "KW_KOI8R", "KW_KOI8U", 
		"KW_LATIN1", "KW_LATIN2", "KW_LATIN5", "KW_LATIN7", "KW_MACCE", "KW_MACROMAN", 
		"KW_SJIS", "KW_SWE7", "KW_TIS620", "KW_UCS2", "KW_UJIS", "KW_UTF16", "KW_UTF16LE", 
		"KW_UTF32", "KW_UTF8", "KW_UTF8MB3", "KW_UTF8MB4", "KW_ARCHIVE", "KW_BLACKHOLE", 
		"KW_CSV", "KW_FEDERATED", "KW_INNODB", "KW_MEMORY", "KW_MRG_MYISAM", "KW_MYISAM", 
		"KW_NDB", "KW_NDBCLUSTER", "KW_PERFORMANCE_SCHEMA", "KW_TOKUDB", "KW_REPEATABLE", 
		"KW_COMMITTED", "KW_UNCOMMITTED", "KW_SERIALIZABLE", "KW_GEOMETRYCOLLECTION", 
		"KW_GEOMCOLLECTION", "KW_GEOMETRY", "KW_LINESTRING", "KW_MULTILINESTRING", 
		"KW_MULTIPOINT", "KW_MULTIPOLYGON", "KW_POINT", "KW_POLYGON", "KW_CATALOG_NAME", 
		"KW_CHARSET", "KW_COLLATION", "KW_ENGINE_ATTRIBUTE", "KW_FORMAT", "KW_GET_FORMAT", 
		"KW_INTERSECT", "KW_RANDOM", "KW_REVERSE", "KW_ROW_COUNT", "KW_SCHEMA_NAME", 
		"KW_SECONDARY_ENGINE_ATTRIBUTE", "KW_SRID", "KW_SYSTEM", "KW_SYSTEM_USER", 
		"KW_THREAD_PRIORITY", "KW_TP_CONNECTION_ADMIN", "KW_TYPE", "KW_WEIGHT_STRING", 
		"VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", "DIV_ASSIGN", 
		"MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", "DIVIDE", 
		"MODULE", "PLUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", "GREATER_SYMBOL", 
		"LESS_SYMBOL", "EXCLAMATION_SYMBOL", "BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP", 
		"BIT_XOR_OP", "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", "AT_SIGN", 
		"ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "THREE_DECIMAL", "SINGLE_QUOTE_SYMB", 
		"DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", 
		"FILESIZE_LITERAL", "START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", 
		"DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", "NULL_SPEC_LITERAL", 
		"BIT_STRING", "STRING_CHARSET_NAME", "ID", "REVERSE_QUOTE_ID", "HOST_IP_ADDRESS", 
		"LOCAL_ID", "GLOBAL_ID", "PERSIST_ID", "ERROR_RECONGNIGION",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(MySqlParser._LITERAL_NAMES, MySqlParser._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return MySqlParser.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace

	// @Override
	public get grammarFileName(): string { return "MySqlParser.g4"; }

	// @Override
	public get ruleNames(): string[] { return MySqlParser.ruleNames; }

	// @Override
	public get serializedATN(): string { return MySqlParser._serializedATN; }

	protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {
		return new FailedPredicateException(this, predicate, message);
	}

	constructor(input: TokenStream) {
		super(input);
		this._interp = new ParserATNSimulator(MySqlParser._ATN, this);
	}
	// @RuleVersion(0)
	public program(): ProgramContext {
		let _localctx: ProgramContext = new ProgramContext(this._ctx, this.state);
		this.enterRule(_localctx, 0, MySqlParser.RULE_program);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 843;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ALTER) | (1 << MySqlParser.KW_ANALYZE) | (1 << MySqlParser.KW_CALL) | (1 << MySqlParser.KW_CHANGE) | (1 << MySqlParser.KW_CHECK))) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & ((1 << (MySqlParser.KW_CREATE - 34)) | (1 << (MySqlParser.KW_DELETE - 34)) | (1 << (MySqlParser.KW_DESC - 34)) | (1 << (MySqlParser.KW_DESCRIBE - 34)) | (1 << (MySqlParser.KW_DROP - 34)) | (1 << (MySqlParser.KW_EXPLAIN - 34)))) !== 0) || ((((_la - 72)) & ~0x1F) === 0 && ((1 << (_la - 72)) & ((1 << (MySqlParser.KW_GET - 72)) | (1 << (MySqlParser.KW_GRANT - 72)) | (1 << (MySqlParser.KW_INSERT - 72)) | (1 << (MySqlParser.KW_KILL - 72)) | (1 << (MySqlParser.KW_LOAD - 72)))) !== 0) || ((((_la - 104)) & ~0x1F) === 0 && ((1 << (_la - 104)) & ((1 << (MySqlParser.KW_LOCK - 104)) | (1 << (MySqlParser.KW_OPTIMIZE - 104)) | (1 << (MySqlParser.KW_PURGE - 104)))) !== 0) || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & ((1 << (MySqlParser.KW_RELEASE - 140)) | (1 << (MySqlParser.KW_RENAME - 140)) | (1 << (MySqlParser.KW_REPLACE - 140)) | (1 << (MySqlParser.KW_RESIGNAL - 140)) | (1 << (MySqlParser.KW_REVOKE - 140)) | (1 << (MySqlParser.KW_SELECT - 140)) | (1 << (MySqlParser.KW_SET - 140)) | (1 << (MySqlParser.KW_SHOW - 140)) | (1 << (MySqlParser.KW_SIGNAL - 140)))) !== 0) || ((((_la - 173)) & ~0x1F) === 0 && ((1 << (_la - 173)) & ((1 << (MySqlParser.KW_TABLE - 173)) | (1 << (MySqlParser.KW_UNLOCK - 173)) | (1 << (MySqlParser.KW_UPDATE - 173)) | (1 << (MySqlParser.KW_USE - 173)) | (1 << (MySqlParser.KW_VALUES - 173)) | (1 << (MySqlParser.KW_WITH - 173)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)))) !== 0) || _la === MySqlParser.KW_DEALLOCATE || _la === MySqlParser.KW_DO || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & ((1 << (MySqlParser.KW_FLUSH - 404)) | (1 << (MySqlParser.KW_HANDLER - 404)) | (1 << (MySqlParser.KW_HELP - 404)) | (1 << (MySqlParser.KW_IMPORT - 404)) | (1 << (MySqlParser.KW_INSTALL - 404)))) !== 0) || _la === MySqlParser.KW_PREPARE || _la === MySqlParser.KW_REPAIR || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESTART - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)))) !== 0) || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & ((1 << (MySqlParser.KW_START - 640)) | (1 << (MySqlParser.KW_STOP - 640)) | (1 << (MySqlParser.KW_TRUNCATE - 640)))) !== 0) || _la === MySqlParser.KW_UNINSTALL || _la === MySqlParser.KW_XA || _la === MySqlParser.KW_CLONE || _la === MySqlParser.KW_EXECUTE || _la === MySqlParser.KW_SHUTDOWN || _la === MySqlParser.LR_BRACKET || _la === MySqlParser.SEMI) {
				{
				{
				this.state = 840;
				this.singleStatement();
				}
				}
				this.state = 845;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 846;
			this.match(MySqlParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public singleStatement(): SingleStatementContext {
		let _localctx: SingleStatementContext = new SingleStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 2, MySqlParser.RULE_singleStatement);
		try {
			this.state = 853;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ALTER:
			case MySqlParser.KW_ANALYZE:
			case MySqlParser.KW_CALL:
			case MySqlParser.KW_CHANGE:
			case MySqlParser.KW_CHECK:
			case MySqlParser.KW_CREATE:
			case MySqlParser.KW_DELETE:
			case MySqlParser.KW_DESC:
			case MySqlParser.KW_DESCRIBE:
			case MySqlParser.KW_DROP:
			case MySqlParser.KW_EXPLAIN:
			case MySqlParser.KW_GET:
			case MySqlParser.KW_GRANT:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_KILL:
			case MySqlParser.KW_LOAD:
			case MySqlParser.KW_LOCK:
			case MySqlParser.KW_OPTIMIZE:
			case MySqlParser.KW_PURGE:
			case MySqlParser.KW_RELEASE:
			case MySqlParser.KW_RENAME:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RESIGNAL:
			case MySqlParser.KW_REVOKE:
			case MySqlParser.KW_SELECT:
			case MySqlParser.KW_SET:
			case MySqlParser.KW_SHOW:
			case MySqlParser.KW_SIGNAL:
			case MySqlParser.KW_TABLE:
			case MySqlParser.KW_UNLOCK:
			case MySqlParser.KW_UPDATE:
			case MySqlParser.KW_USE:
			case MySqlParser.KW_VALUES:
			case MySqlParser.KW_WITH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESTART:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_CLONE:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.LR_BRACKET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 848;
				this.sqlStatement();
				this.state = 850;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1, this._ctx) ) {
				case 1:
					{
					this.state = 849;
					this.match(MySqlParser.SEMI);
					}
					break;
				}
				}
				break;
			case MySqlParser.SEMI:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 852;
				this.emptyStatement_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sqlStatement(): SqlStatementContext {
		let _localctx: SqlStatementContext = new SqlStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 4, MySqlParser.RULE_sqlStatement);
		try {
			this.state = 862;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 3, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 855;
				this.ddlStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 856;
				this.dmlStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 857;
				this.transactionStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 858;
				this.replicationStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 859;
				this.preparedStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 860;
				this.administrationStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 861;
				this.utilityStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public emptyStatement_(): EmptyStatement_Context {
		let _localctx: EmptyStatement_Context = new EmptyStatement_Context(this._ctx, this.state);
		this.enterRule(_localctx, 6, MySqlParser.RULE_emptyStatement_);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 864;
			this.match(MySqlParser.SEMI);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ddlStatement(): DdlStatementContext {
		let _localctx: DdlStatementContext = new DdlStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 8, MySqlParser.RULE_ddlStatement);
		try {
			this.state = 905;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 4, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 866;
				this.createDatabase();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 867;
				this.createEvent();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 868;
				this.createIndex();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 869;
				this.createLogfileGroup();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 870;
				this.createProcedure();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 871;
				this.createFunction();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 872;
				this.createServer();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 873;
				this.createTable();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 874;
				this.createTablespaceInnodb();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 875;
				this.createTablespaceNdb();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 876;
				this.createTrigger();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 877;
				this.createView();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 878;
				this.createRole();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 879;
				this.alterDatabase();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 880;
				this.alterEvent();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 881;
				this.alterFunction();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 882;
				this.alterInstance();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 883;
				this.alterLogfileGroup();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 884;
				this.alterProcedure();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 885;
				this.alterServer();
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 886;
				this.alterTable();
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 887;
				this.alterTablespace();
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 888;
				this.alterView();
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 889;
				this.dropDatabase();
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 890;
				this.dropEvent();
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 891;
				this.dropIndex();
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 892;
				this.dropLogfileGroup();
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 893;
				this.dropProcedure();
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 894;
				this.dropFunction();
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 895;
				this.dropServer();
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 896;
				this.dropSpatial();
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 897;
				this.dropTable();
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 898;
				this.dropTablespace();
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 899;
				this.dropTrigger();
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 900;
				this.dropView();
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 901;
				this.dropRole();
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 902;
				this.setRole();
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 903;
				this.renameTable();
				}
				break;

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 904;
				this.truncateTable();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dmlStatement(): DmlStatementContext {
		let _localctx: DmlStatementContext = new DmlStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 10, MySqlParser.RULE_dmlStatement);
		try {
			this.state = 924;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 5, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 907;
				this.selectStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 908;
				this.setOperations();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 909;
				this.insertStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 910;
				this.updateStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 911;
				this.deleteStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 912;
				this.replaceStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 913;
				this.callStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 914;
				this.interSectStatement();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 915;
				this.loadDataStatement();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 916;
				this.loadXmlStatement();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 917;
				this.parenthesizedQuery();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 918;
				this.doStatement();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 919;
				this.handlerStatement();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 920;
				this.importTableStatement();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 921;
				this.valuesStatement();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 922;
				this.withStatement();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 923;
				this.tableStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionStatement(): TransactionStatementContext {
		let _localctx: TransactionStatementContext = new TransactionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 12, MySqlParser.RULE_transactionStatement);
		try {
			this.state = 935;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 6, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 926;
				this.startTransaction();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 927;
				this.beginWork();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 928;
				this.commitWork();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 929;
				this.rollbackWork();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 930;
				this.savepointStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 931;
				this.rollbackStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 932;
				this.releaseStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 933;
				this.lockTables();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 934;
				this.unlockTables();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replicationStatement(): ReplicationStatementContext {
		let _localctx: ReplicationStatementContext = new ReplicationStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 14, MySqlParser.RULE_replicationStatement);
		try {
			this.state = 951;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 937;
				this.changeMaster();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 938;
				this.changeReplicationFilter();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 939;
				this.changeReplicationSource();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 940;
				this.purgeBinaryLogs();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 941;
				this.startSlaveOrReplica();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 942;
				this.stopSlaveOrReplica();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 943;
				this.startGroupReplication();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 944;
				this.stopGroupReplication();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 945;
				this.xaStartTransaction();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 946;
				this.xaEndTransaction();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 947;
				this.xaPrepareStatement();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 948;
				this.xaCommitWork();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 949;
				this.xaRollbackWork();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 950;
				this.xaRecoverWork();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public preparedStatement(): PreparedStatementContext {
		let _localctx: PreparedStatementContext = new PreparedStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 16, MySqlParser.RULE_preparedStatement);
		try {
			this.state = 956;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_PREPARE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 953;
				this.prepareStatement();
				}
				break;
			case MySqlParser.KW_EXECUTE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 954;
				this.executeStatement();
				}
				break;
			case MySqlParser.KW_DROP:
			case MySqlParser.KW_DEALLOCATE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 955;
				this.deallocatePrepare();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compoundStatement(): CompoundStatementContext {
		let _localctx: CompoundStatementContext = new CompoundStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 18, MySqlParser.RULE_compoundStatement);
		try {
			this.state = 968;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 9, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 958;
				this.blockStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 959;
				this.caseStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 960;
				this.ifStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 961;
				this.leaveStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 962;
				this.loopStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 963;
				this.repeatStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 964;
				this.whileStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 965;
				this.iterateStatement();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 966;
				this.returnStatement();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 967;
				this.cursorStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public administrationStatement(): AdministrationStatementContext {
		let _localctx: AdministrationStatementContext = new AdministrationStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 20, MySqlParser.RULE_administrationStatement);
		try {
			this.state = 1003;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 10, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 970;
				this.alterUser();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 971;
				this.createUser();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 972;
				this.dropUser();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 973;
				this.grantStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 974;
				this.grantProxy();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 975;
				this.renameUser();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 976;
				this.revokeStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 977;
				this.alterResourceGroup();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 978;
				this.createResourceGroup();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 979;
				this.dropResourceGroup();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 980;
				this.setResourceGroup();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 981;
				this.analyzeTable();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 982;
				this.checkTable();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 983;
				this.checksumTable();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 984;
				this.optimizeTable();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 985;
				this.repairTable();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 986;
				this.installComponent();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 987;
				this.uninstallComponent();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 988;
				this.installPlugin();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 989;
				this.uninstallPlugin();
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 990;
				this.cloneStatement();
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 991;
				this.setStatement();
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 992;
				this.showStatement();
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 993;
				this.binlogStatement();
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 994;
				this.cacheIndexStatement();
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 995;
				this.flushStatement();
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 996;
				this.killStatement();
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 997;
				this.loadIndexIntoCache();
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 998;
				this.resetStatement();
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 999;
				this.resetPersist();
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 1000;
				this.resetAllChannel();
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 1001;
				this.reStartStatement();
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 1002;
				this.shutdownStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public utilityStatement(): UtilityStatementContext {
		let _localctx: UtilityStatementContext = new UtilityStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 22, MySqlParser.RULE_utilityStatement);
		try {
			this.state = 1013;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 11, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1005;
				this.simpleDescribeStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1006;
				this.fullDescribeStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1007;
				this.analyzeDescribeStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1008;
				this.helpStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1009;
				this.useStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1010;
				this.signalStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1011;
				this.resignalStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1012;
				this.diagnosticsStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createDatabase(): CreateDatabaseContext {
		let _localctx: CreateDatabaseContext = new CreateDatabaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 24, MySqlParser.RULE_createDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1015;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1016;
			_localctx._dbFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_DATABASE || _la === MySqlParser.KW_SCHEMA)) {
				_localctx._dbFormat = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1018;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) {
			case 1:
				{
				this.state = 1017;
				this.ifNotExists();
				}
				break;
			}
			this.state = 1020;
			this.databaseNameCreate();
			this.state = 1024;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & ((1 << (MySqlParser.KW_CHARACTER - 26)) | (1 << (MySqlParser.KW_COLLATE - 26)) | (1 << (MySqlParser.KW_DEFAULT - 26)))) !== 0) || _la === MySqlParser.KW_READ || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_ENCRYPTION || _la === MySqlParser.KW_CHARSET) {
				{
				{
				this.state = 1021;
				this.createDatabaseOption();
				}
				}
				this.state = 1026;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createEvent(): CreateEventContext {
		let _localctx: CreateEventContext = new CreateEventContext(this._ctx, this.state);
		this.enterRule(_localctx, 26, MySqlParser.RULE_createEvent);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1027;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1029;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFINER) {
				{
				this.state = 1028;
				this.ownerStatement();
				}
			}

			this.state = 1031;
			this.match(MySqlParser.KW_EVENT);
			this.state = 1033;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 15, this._ctx) ) {
			case 1:
				{
				this.state = 1032;
				this.ifNotExists();
				}
				break;
			}
			this.state = 1035;
			_localctx._event_name = this.fullId();
			this.state = 1036;
			this.match(MySqlParser.KW_ON);
			this.state = 1037;
			this.match(MySqlParser.KW_SCHEDULE);
			this.state = 1038;
			this.scheduleExpression();
			this.state = 1045;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ON) {
				{
				this.state = 1039;
				this.match(MySqlParser.KW_ON);
				this.state = 1040;
				this.match(MySqlParser.KW_COMPLETION);
				this.state = 1042;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 1041;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 1044;
				this.match(MySqlParser.KW_PRESERVE);
				}
			}

			this.state = 1048;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE) {
				{
				this.state = 1047;
				this.enableType();
				}
			}

			this.state = 1052;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_COMMENT) {
				{
				this.state = 1050;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1051;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 1054;
			this.match(MySqlParser.KW_DO);
			this.state = 1055;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createIndex(): CreateIndexContext {
		let _localctx: CreateIndexContext = new CreateIndexContext(this._ctx, this.state);
		this.enterRule(_localctx, 28, MySqlParser.RULE_createIndex);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1057;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1059;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_OFFLINE || _la === MySqlParser.KW_ONLINE) {
				{
				this.state = 1058;
				_localctx._intimeAction = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_OFFLINE || _la === MySqlParser.KW_ONLINE)) {
					_localctx._intimeAction = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 1062;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FULLTEXT || _la === MySqlParser.KW_SPATIAL || _la === MySqlParser.KW_UNIQUE) {
				{
				this.state = 1061;
				_localctx._indexCategory = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FULLTEXT || _la === MySqlParser.KW_SPATIAL || _la === MySqlParser.KW_UNIQUE)) {
					_localctx._indexCategory = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 1064;
			this.match(MySqlParser.KW_INDEX);
			this.state = 1065;
			this.indexNameCreate();
			this.state = 1067;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_USING) {
				{
				this.state = 1066;
				this.indexType();
				}
			}

			this.state = 1069;
			this.match(MySqlParser.KW_ON);
			this.state = 1070;
			this.tableName();
			this.state = 1071;
			this.indexColumnNames();
			this.state = 1075;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 23, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1072;
					this.indexOption();
					}
					}
				}
				this.state = 1077;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 23, this._ctx);
			}
			this.state = 1090;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 27, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 1088;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_ALGORITHM:
						{
						this.state = 1078;
						this.match(MySqlParser.KW_ALGORITHM);
						this.state = 1080;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.EQUAL_SYMBOL) {
							{
							this.state = 1079;
							this.match(MySqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 1082;
						_localctx._algType = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_COPY || _la === MySqlParser.KW_INPLACE)) {
							_localctx._algType = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
						break;
					case MySqlParser.KW_LOCK:
						{
						this.state = 1083;
						this.match(MySqlParser.KW_LOCK);
						this.state = 1085;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.EQUAL_SYMBOL) {
							{
							this.state = 1084;
							this.match(MySqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 1087;
						_localctx._lockType = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_EXCLUSIVE || _la === MySqlParser.KW_NONE || _la === MySqlParser.KW_SHARED)) {
							_localctx._lockType = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}
				this.state = 1092;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 27, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createLogfileGroup(): CreateLogfileGroupContext {
		let _localctx: CreateLogfileGroupContext = new CreateLogfileGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 30, MySqlParser.RULE_createLogfileGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1093;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1094;
			this.match(MySqlParser.KW_LOGFILE);
			this.state = 1095;
			this.match(MySqlParser.KW_GROUP);
			this.state = 1096;
			_localctx._logfileGroupName = this.uid();
			this.state = 1097;
			this.match(MySqlParser.KW_ADD);
			this.state = 1098;
			this.match(MySqlParser.KW_UNDOFILE);
			this.state = 1099;
			_localctx._undoFile = this.match(MySqlParser.STRING_LITERAL);
			this.state = 1105;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INITIAL_SIZE) {
				{
				this.state = 1100;
				this.match(MySqlParser.KW_INITIAL_SIZE);
				this.state = 1102;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1101;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1104;
				_localctx._initSize = this.fileSizeLiteral();
				}
			}

			this.state = 1112;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_UNDO_BUFFER_SIZE) {
				{
				this.state = 1107;
				this.match(MySqlParser.KW_UNDO_BUFFER_SIZE);
				this.state = 1109;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1108;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1111;
				_localctx._undoSize = this.fileSizeLiteral();
				}
			}

			this.state = 1119;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_REDO_BUFFER_SIZE) {
				{
				this.state = 1114;
				this.match(MySqlParser.KW_REDO_BUFFER_SIZE);
				this.state = 1116;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1115;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1118;
				_localctx._redoSize = this.fileSizeLiteral();
				}
			}

			this.state = 1126;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_NODEGROUP) {
				{
				this.state = 1121;
				this.match(MySqlParser.KW_NODEGROUP);
				this.state = 1123;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1122;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1125;
				_localctx._nodegroup = this.uid();
				}
			}

			this.state = 1129;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WAIT) {
				{
				this.state = 1128;
				this.match(MySqlParser.KW_WAIT);
				}
			}

			this.state = 1136;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_COMMENT) {
				{
				this.state = 1131;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1133;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1132;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1135;
				_localctx._comment = this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 1138;
			this.match(MySqlParser.KW_ENGINE);
			this.state = 1140;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.EQUAL_SYMBOL) {
				{
				this.state = 1139;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 1142;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createProcedure(): CreateProcedureContext {
		let _localctx: CreateProcedureContext = new CreateProcedureContext(this._ctx, this.state);
		this.enterRule(_localctx, 32, MySqlParser.RULE_createProcedure);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1144;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1146;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFINER) {
				{
				this.state = 1145;
				this.ownerStatement();
				}
			}

			this.state = 1148;
			this.match(MySqlParser.KW_PROCEDURE);
			this.state = 1150;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 41, this._ctx) ) {
			case 1:
				{
				this.state = 1149;
				this.ifNotExists();
				}
				break;
			}
			this.state = 1152;
			_localctx._sp_name = this.fullId();
			this.state = 1153;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 1155;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_IN - 74)) | (1 << (MySqlParser.KW_INOUT - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_OUT - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 1154;
				this.procedureParameter();
				}
			}

			this.state = 1161;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 1157;
				this.match(MySqlParser.COMMA);
				this.state = 1158;
				this.procedureParameter();
				}
				}
				this.state = 1163;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1164;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 1168;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 44, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1165;
					this.routineOption();
					}
					}
				}
				this.state = 1170;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 44, this._ctx);
			}
			this.state = 1171;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createRole(): CreateRoleContext {
		let _localctx: CreateRoleContext = new CreateRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 34, MySqlParser.RULE_createRole);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1173;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1174;
			this.match(MySqlParser.KW_ROLE);
			this.state = 1176;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 45, this._ctx) ) {
			case 1:
				{
				this.state = 1175;
				this.ifNotExists();
				}
				break;
			}
			this.state = 1178;
			this.userOrRoleNames();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createServer(): CreateServerContext {
		let _localctx: CreateServerContext = new CreateServerContext(this._ctx, this.state);
		this.enterRule(_localctx, 36, MySqlParser.RULE_createServer);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1180;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1181;
			this.match(MySqlParser.KW_SERVER);
			this.state = 1182;
			_localctx._servername = this.uid();
			this.state = 1183;
			this.match(MySqlParser.KW_FOREIGN);
			this.state = 1184;
			this.match(MySqlParser.KW_DATA);
			this.state = 1185;
			this.match(MySqlParser.KW_WRAPPER);
			this.state = 1186;
			_localctx._wrapperName = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_MYSQL || _la === MySqlParser.STRING_LITERAL)) {
				_localctx._wrapperName = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1187;
			this.match(MySqlParser.KW_OPTIONS);
			this.state = 1188;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 1189;
			this.serverOption();
			this.state = 1194;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 1190;
				this.match(MySqlParser.COMMA);
				this.state = 1191;
				this.serverOption();
				}
				}
				this.state = 1196;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1197;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTable(): CreateTableContext {
		let _localctx: CreateTableContext = new CreateTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 38, MySqlParser.RULE_createTable);
		let _la: number;
		try {
			let _alt: number;
			this.state = 1277;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 65, this._ctx) ) {
			case 1:
				_localctx = new CopyCreateTableContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1199;
				this.match(MySqlParser.KW_CREATE);
				this.state = 1201;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_TEMPORARY) {
					{
					this.state = 1200;
					this.match(MySqlParser.KW_TEMPORARY);
					}
				}

				this.state = 1203;
				this.match(MySqlParser.KW_TABLE);
				this.state = 1205;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) {
				case 1:
					{
					this.state = 1204;
					this.ifNotExists();
					}
					break;
				}
				this.state = 1207;
				this.tableNameCreate();
				this.state = 1208;
				this.createDefinitions();
				this.state = 1219;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 51, this._ctx) ) {
				case 1:
					{
					this.state = 1209;
					this.tableOption();
					this.state = 1216;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 50, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1211;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
							if (_la === MySqlParser.COMMA) {
								{
								this.state = 1210;
								this.match(MySqlParser.COMMA);
								}
							}

							this.state = 1213;
							this.tableOption();
							}
							}
						}
						this.state = 1218;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 50, this._ctx);
					}
					}
					break;
				}
				this.state = 1222;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PARTITION) {
					{
					this.state = 1221;
					this.partitionDefinitions();
					}
				}

				}
				break;

			case 2:
				_localctx = new ColumnCreateTableContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1224;
				this.match(MySqlParser.KW_CREATE);
				this.state = 1226;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_TEMPORARY) {
					{
					this.state = 1225;
					this.match(MySqlParser.KW_TEMPORARY);
					}
				}

				this.state = 1228;
				this.match(MySqlParser.KW_TABLE);
				this.state = 1230;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 54, this._ctx) ) {
				case 1:
					{
					this.state = 1229;
					this.ifNotExists();
					}
					break;
				}
				this.state = 1232;
				this.tableNameCreate();
				this.state = 1234;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 55, this._ctx) ) {
				case 1:
					{
					this.state = 1233;
					this.createDefinitions();
					}
					break;
				}
				this.state = 1246;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & ((1 << (MySqlParser.KW_CHARACTER - 26)) | (1 << (MySqlParser.KW_COLLATE - 26)) | (1 << (MySqlParser.KW_DEFAULT - 26)))) !== 0) || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_UNION || _la === MySqlParser.KW_CHAR || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & ((1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 314)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 314)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 314)) | (1 << (MySqlParser.KW_CHECKSUM - 314)) | (1 << (MySqlParser.KW_COMMENT - 314)))) !== 0) || ((((_la - 346)) & ~0x1F) === 0 && ((1 << (_la - 346)) & ((1 << (MySqlParser.KW_COMPRESSION - 346)) | (1 << (MySqlParser.KW_CONNECTION - 346)) | (1 << (MySqlParser.KW_DATA - 346)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 346)) | (1 << (MySqlParser.KW_ENCRYPTION - 346)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ID - 346)))) !== 0) || _la === MySqlParser.KW_ENGINE || _la === MySqlParser.KW_INSERT_METHOD || _la === MySqlParser.KW_KEY_BLOCK_SIZE || _la === MySqlParser.KW_MAX_ROWS || _la === MySqlParser.KW_MIN_ROWS || ((((_la - 520)) & ~0x1F) === 0 && ((1 << (_la - 520)) & ((1 << (MySqlParser.KW_PACK_KEYS - 520)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 520)) | (1 << (MySqlParser.KW_PAGE_COMPRESSED - 520)) | (1 << (MySqlParser.KW_PAGE_COMPRESSION_LEVEL - 520)) | (1 << (MySqlParser.KW_PASSWORD - 520)))) !== 0) || _la === MySqlParser.KW_ROW_FORMAT || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & ((1 << (MySqlParser.KW_START - 640)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 640)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 640)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 640)) | (1 << (MySqlParser.KW_STORAGE - 640)) | (1 << (MySqlParser.KW_TABLESPACE - 640)) | (1 << (MySqlParser.KW_TABLE_TYPE - 640)) | (1 << (MySqlParser.KW_TRANSACTIONAL - 640)))) !== 0) || ((((_la - 823)) & ~0x1F) === 0 && ((1 << (_la - 823)) & ((1 << (MySqlParser.KW_CHARSET - 823)) | (1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 823)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 823)))) !== 0) || _la === MySqlParser.STRING_LITERAL) {
					{
					this.state = 1236;
					this.tableOption();
					this.state = 1243;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & ((1 << (MySqlParser.KW_CHARACTER - 26)) | (1 << (MySqlParser.KW_COLLATE - 26)) | (1 << (MySqlParser.KW_DEFAULT - 26)))) !== 0) || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_UNION || _la === MySqlParser.KW_CHAR || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & ((1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 314)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 314)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 314)) | (1 << (MySqlParser.KW_CHECKSUM - 314)) | (1 << (MySqlParser.KW_COMMENT - 314)))) !== 0) || ((((_la - 346)) & ~0x1F) === 0 && ((1 << (_la - 346)) & ((1 << (MySqlParser.KW_COMPRESSION - 346)) | (1 << (MySqlParser.KW_CONNECTION - 346)) | (1 << (MySqlParser.KW_DATA - 346)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 346)) | (1 << (MySqlParser.KW_ENCRYPTION - 346)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ID - 346)))) !== 0) || _la === MySqlParser.KW_ENGINE || _la === MySqlParser.KW_INSERT_METHOD || _la === MySqlParser.KW_KEY_BLOCK_SIZE || _la === MySqlParser.KW_MAX_ROWS || _la === MySqlParser.KW_MIN_ROWS || ((((_la - 520)) & ~0x1F) === 0 && ((1 << (_la - 520)) & ((1 << (MySqlParser.KW_PACK_KEYS - 520)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 520)) | (1 << (MySqlParser.KW_PAGE_COMPRESSED - 520)) | (1 << (MySqlParser.KW_PAGE_COMPRESSION_LEVEL - 520)) | (1 << (MySqlParser.KW_PASSWORD - 520)))) !== 0) || _la === MySqlParser.KW_ROW_FORMAT || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & ((1 << (MySqlParser.KW_START - 640)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 640)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 640)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 640)) | (1 << (MySqlParser.KW_STORAGE - 640)) | (1 << (MySqlParser.KW_TABLESPACE - 640)) | (1 << (MySqlParser.KW_TABLE_TYPE - 640)) | (1 << (MySqlParser.KW_TRANSACTIONAL - 640)))) !== 0) || ((((_la - 823)) & ~0x1F) === 0 && ((1 << (_la - 823)) & ((1 << (MySqlParser.KW_CHARSET - 823)) | (1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 823)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 823)))) !== 0) || _la === MySqlParser.COMMA || _la === MySqlParser.STRING_LITERAL) {
						{
						{
						this.state = 1238;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.COMMA) {
							{
							this.state = 1237;
							this.match(MySqlParser.COMMA);
							}
						}

						this.state = 1240;
						this.tableOption();
						}
						}
						this.state = 1245;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 1249;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PARTITION) {
					{
					this.state = 1248;
					this.partitionDefinitions();
					}
				}

				this.state = 1252;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_REPLACE) {
					{
					this.state = 1251;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_REPLACE)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 1255;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 1254;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 1257;
				this.selectStatement();
				}
				break;

			case 3:
				_localctx = new QueryCreateTableContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1259;
				this.match(MySqlParser.KW_CREATE);
				this.state = 1261;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_TEMPORARY) {
					{
					this.state = 1260;
					this.match(MySqlParser.KW_TEMPORARY);
					}
				}

				this.state = 1263;
				this.match(MySqlParser.KW_TABLE);
				this.state = 1265;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 63, this._ctx) ) {
				case 1:
					{
					this.state = 1264;
					this.ifNotExists();
					}
					break;
				}
				this.state = 1267;
				this.tableNameCreate();
				this.state = 1275;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_LIKE:
					{
					this.state = 1268;
					this.match(MySqlParser.KW_LIKE);
					this.state = 1269;
					this.tableName();
					}
					break;
				case MySqlParser.LR_BRACKET:
					{
					this.state = 1270;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 1271;
					this.match(MySqlParser.KW_LIKE);
					this.state = 1272;
					this.tableName();
					this.state = 1273;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTablespaceInnodb(): CreateTablespaceInnodbContext {
		let _localctx: CreateTablespaceInnodbContext = new CreateTablespaceInnodbContext(this._ctx, this.state);
		this.enterRule(_localctx, 40, MySqlParser.RULE_createTablespaceInnodb);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1279;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1281;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_UNDO) {
				{
				this.state = 1280;
				this.match(MySqlParser.KW_UNDO);
				}
			}

			this.state = 1283;
			this.match(MySqlParser.KW_TABLESPACE);
			this.state = 1284;
			this.tablespaceNameCreate();
			this.state = 1288;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ADD) {
				{
				this.state = 1285;
				this.match(MySqlParser.KW_ADD);
				this.state = 1286;
				this.match(MySqlParser.KW_DATAFILE);
				this.state = 1287;
				_localctx._datafile = this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 1295;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AUTOEXTEND_SIZE) {
				{
				this.state = 1290;
				this.match(MySqlParser.KW_AUTOEXTEND_SIZE);
				this.state = 1292;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1291;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1294;
				_localctx._autoextendSize = this.fileSizeLiteral();
				}
			}

			this.state = 1300;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FILE_BLOCK_SIZE) {
				{
				this.state = 1297;
				this.match(MySqlParser.KW_FILE_BLOCK_SIZE);
				this.state = 1298;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 1299;
				_localctx._fileBlockSize = this.fileSizeLiteral();
				}
			}

			this.state = 1307;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ENGINE) {
				{
				this.state = 1302;
				this.match(MySqlParser.KW_ENGINE);
				this.state = 1304;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1303;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1306;
				this.engineName();
				}
			}

			this.state = 1314;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ENGINE_ATTRIBUTE) {
				{
				this.state = 1309;
				this.match(MySqlParser.KW_ENGINE_ATTRIBUTE);
				this.state = 1311;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1310;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1313;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTablespaceNdb(): CreateTablespaceNdbContext {
		let _localctx: CreateTablespaceNdbContext = new CreateTablespaceNdbContext(this._ctx, this.state);
		this.enterRule(_localctx, 42, MySqlParser.RULE_createTablespaceNdb);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1316;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1318;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_UNDO) {
				{
				this.state = 1317;
				this.match(MySqlParser.KW_UNDO);
				}
			}

			this.state = 1320;
			this.match(MySqlParser.KW_TABLESPACE);
			this.state = 1321;
			this.tablespaceNameCreate();
			this.state = 1322;
			this.match(MySqlParser.KW_ADD);
			this.state = 1323;
			this.match(MySqlParser.KW_DATAFILE);
			this.state = 1324;
			_localctx._datafile = this.match(MySqlParser.STRING_LITERAL);
			this.state = 1325;
			this.match(MySqlParser.KW_USE);
			this.state = 1326;
			this.match(MySqlParser.KW_LOGFILE);
			this.state = 1327;
			this.match(MySqlParser.KW_GROUP);
			this.state = 1328;
			_localctx._logfileGroupName = this.uid();
			this.state = 1334;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_EXTENT_SIZE) {
				{
				this.state = 1329;
				this.match(MySqlParser.KW_EXTENT_SIZE);
				this.state = 1331;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1330;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1333;
				_localctx._extentSize = this.fileSizeLiteral();
				}
			}

			this.state = 1341;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INITIAL_SIZE) {
				{
				this.state = 1336;
				this.match(MySqlParser.KW_INITIAL_SIZE);
				this.state = 1338;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1337;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1340;
				_localctx._initialSize = this.fileSizeLiteral();
				}
			}

			this.state = 1348;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AUTOEXTEND_SIZE) {
				{
				this.state = 1343;
				this.match(MySqlParser.KW_AUTOEXTEND_SIZE);
				this.state = 1345;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1344;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1347;
				_localctx._autoextendSize = this.fileSizeLiteral();
				}
			}

			this.state = 1355;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_MAX_SIZE) {
				{
				this.state = 1350;
				this.match(MySqlParser.KW_MAX_SIZE);
				this.state = 1352;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1351;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1354;
				_localctx._maxSize = this.fileSizeLiteral();
				}
			}

			this.state = 1362;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_NODEGROUP) {
				{
				this.state = 1357;
				this.match(MySqlParser.KW_NODEGROUP);
				this.state = 1359;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1358;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1361;
				_localctx._nodegroup = this.uid();
				}
			}

			this.state = 1365;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WAIT) {
				{
				this.state = 1364;
				this.match(MySqlParser.KW_WAIT);
				}
			}

			this.state = 1372;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_COMMENT) {
				{
				this.state = 1367;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1369;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1368;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1371;
				_localctx._comment = this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 1374;
			this.match(MySqlParser.KW_ENGINE);
			this.state = 1376;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.EQUAL_SYMBOL) {
				{
				this.state = 1375;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 1378;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTrigger(): CreateTriggerContext {
		let _localctx: CreateTriggerContext = new CreateTriggerContext(this._ctx, this.state);
		this.enterRule(_localctx, 44, MySqlParser.RULE_createTrigger);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1380;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1382;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFINER) {
				{
				this.state = 1381;
				this.ownerStatement();
				}
			}

			this.state = 1384;
			this.match(MySqlParser.KW_TRIGGER);
			this.state = 1386;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 91, this._ctx) ) {
			case 1:
				{
				this.state = 1385;
				this.ifNotExists();
				}
				break;
			}
			this.state = 1388;
			_localctx._trigger_name = this.fullId();
			this.state = 1389;
			_localctx._triggerTime = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_BEFORE || _la === MySqlParser.KW_AFTER)) {
				_localctx._triggerTime = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1390;
			_localctx._triggerEvent = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_DELETE || _la === MySqlParser.KW_INSERT || _la === MySqlParser.KW_UPDATE)) {
				_localctx._triggerEvent = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1391;
			this.match(MySqlParser.KW_ON);
			this.state = 1392;
			this.tableName();
			this.state = 1393;
			this.match(MySqlParser.KW_FOR);
			this.state = 1394;
			this.match(MySqlParser.KW_EACH);
			this.state = 1395;
			this.match(MySqlParser.KW_ROW);
			this.state = 1398;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 92, this._ctx) ) {
			case 1:
				{
				this.state = 1396;
				_localctx._triggerPlace = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FOLLOWS || _la === MySqlParser.KW_PRECEDES)) {
					_localctx._triggerPlace = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1397;
				_localctx._other_trigger_name = this.fullId();
				}
				break;
			}
			this.state = 1400;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public withClause(): WithClauseContext {
		let _localctx: WithClauseContext = new WithClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 46, MySqlParser.RULE_withClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1402;
			this.match(MySqlParser.KW_WITH);
			this.state = 1404;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 93, this._ctx) ) {
			case 1:
				{
				this.state = 1403;
				this.match(MySqlParser.KW_RECURSIVE);
				}
				break;
			}
			this.state = 1406;
			this.commonTableExpressions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public commonTableExpressions(): CommonTableExpressionsContext {
		let _localctx: CommonTableExpressionsContext = new CommonTableExpressionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 48, MySqlParser.RULE_commonTableExpressions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1408;
			_localctx._cteName = this.uid();
			this.state = 1420;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.LR_BRACKET) {
				{
				this.state = 1409;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 1410;
				_localctx._cteColumnName = this.uid();
				this.state = 1415;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 1411;
					this.match(MySqlParser.COMMA);
					this.state = 1412;
					_localctx._cteColumnName = this.uid();
					}
					}
					this.state = 1417;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1418;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 1422;
			this.match(MySqlParser.KW_AS);
			this.state = 1423;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 1424;
			this.dmlStatement();
			this.state = 1425;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 1428;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 96, this._ctx) ) {
			case 1:
				{
				this.state = 1426;
				this.match(MySqlParser.COMMA);
				this.state = 1427;
				this.commonTableExpressions();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createView(): CreateViewContext {
		let _localctx: CreateViewContext = new CreateViewContext(this._ctx, this.state);
		this.enterRule(_localctx, 50, MySqlParser.RULE_createView);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1430;
			this.match(MySqlParser.KW_CREATE);
			this.state = 1432;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_OR) {
				{
				this.state = 1431;
				this.orReplace();
				}
			}

			this.state = 1437;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ALGORITHM) {
				{
				this.state = 1434;
				this.match(MySqlParser.KW_ALGORITHM);
				this.state = 1435;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 1436;
				_localctx._algType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_MERGE || _la === MySqlParser.KW_TEMPTABLE || _la === MySqlParser.KW_UNDEFINED)) {
					_localctx._algType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 1440;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFINER) {
				{
				this.state = 1439;
				this.ownerStatement();
				}
			}

			this.state = 1445;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_SQL) {
				{
				this.state = 1442;
				this.match(MySqlParser.KW_SQL);
				this.state = 1443;
				this.match(MySqlParser.KW_SECURITY);
				this.state = 1444;
				_localctx._secContext = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFINER || _la === MySqlParser.KW_INVOKER)) {
					_localctx._secContext = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 1447;
			this.match(MySqlParser.KW_VIEW);
			this.state = 1448;
			this.viewNameCreate();
			this.state = 1453;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.LR_BRACKET) {
				{
				this.state = 1449;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 1450;
				this.columnNames();
				this.state = 1451;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 1455;
			this.match(MySqlParser.KW_AS);
			this.state = 1475;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 106, this._ctx) ) {
			case 1:
				{
				this.state = 1456;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 1458;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_WITH) {
					{
					this.state = 1457;
					this.withClause();
					}
				}

				this.state = 1460;
				this.selectStatement();
				this.state = 1461;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 2:
				{
				this.state = 1464;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_WITH) {
					{
					this.state = 1463;
					this.withClause();
					}
				}

				this.state = 1466;
				this.selectStatement();
				this.state = 1473;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) {
				case 1:
					{
					this.state = 1467;
					this.match(MySqlParser.KW_WITH);
					this.state = 1469;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_CASCADED || _la === MySqlParser.KW_LOCAL) {
						{
						this.state = 1468;
						_localctx._checkOption = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_CASCADED || _la === MySqlParser.KW_LOCAL)) {
							_localctx._checkOption = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
					}

					this.state = 1471;
					this.match(MySqlParser.KW_CHECK);
					this.state = 1472;
					this.match(MySqlParser.KW_OPTION);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createDatabaseOption(): CreateDatabaseOptionContext {
		let _localctx: CreateDatabaseOptionContext = new CreateDatabaseOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 52, MySqlParser.RULE_createDatabaseOption);
		let _la: number;
		try {
			this.state = 1510;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 115, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1478;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 1477;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 1480;
				this.charSet();
				this.state = 1482;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1481;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1486;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 1484;
					this.charsetName();
					}
					break;
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 1485;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1489;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 1488;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 1491;
				this.match(MySqlParser.KW_COLLATE);
				this.state = 1493;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1492;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1495;
				this.collationName();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1497;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 1496;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 1499;
				this.match(MySqlParser.KW_ENCRYPTION);
				this.state = 1501;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1500;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1503;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1504;
				this.match(MySqlParser.KW_READ);
				this.state = 1505;
				this.match(MySqlParser.KW_ONLY);
				this.state = 1507;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1506;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1509;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public charSet(): CharSetContext {
		let _localctx: CharSetContext = new CharSetContext(this._ctx, this.state);
		this.enterRule(_localctx, 54, MySqlParser.RULE_charSet);
		try {
			this.state = 1517;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_CHARACTER:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1512;
				this.match(MySqlParser.KW_CHARACTER);
				this.state = 1513;
				this.match(MySqlParser.KW_SET);
				}
				break;
			case MySqlParser.KW_CHARSET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1514;
				this.match(MySqlParser.KW_CHARSET);
				}
				break;
			case MySqlParser.KW_CHAR:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1515;
				this.match(MySqlParser.KW_CHAR);
				this.state = 1516;
				this.match(MySqlParser.KW_SET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public currentUserExpression(): CurrentUserExpressionContext {
		let _localctx: CurrentUserExpressionContext = new CurrentUserExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 56, MySqlParser.RULE_currentUserExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1519;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_CURRENT_USER || _la === MySqlParser.KW_USER)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1522;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 117, this._ctx) ) {
			case 1:
				{
				this.state = 1520;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 1521;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ownerStatement(): OwnerStatementContext {
		let _localctx: OwnerStatementContext = new OwnerStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 58, MySqlParser.RULE_ownerStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1524;
			this.match(MySqlParser.KW_DEFINER);
			this.state = 1525;
			this.match(MySqlParser.EQUAL_SYMBOL);
			this.state = 1528;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 118, this._ctx) ) {
			case 1:
				{
				this.state = 1526;
				this.userName();
				}
				break;

			case 2:
				{
				this.state = 1527;
				this.currentUserExpression();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public scheduleExpression(): ScheduleExpressionContext {
		let _localctx: ScheduleExpressionContext = new ScheduleExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 60, MySqlParser.RULE_scheduleExpression);
		let _la: number;
		try {
			this.state = 1564;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_AT:
				_localctx = new PreciseScheduleContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1530;
				this.match(MySqlParser.KW_AT);
				this.state = 1531;
				this.timestampValue();
				this.state = 1535;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.PLUS) {
					{
					{
					this.state = 1532;
					this.intervalExpr();
					}
					}
					this.state = 1537;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case MySqlParser.KW_EVERY:
				_localctx = new IntervalScheduleContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1538;
				this.match(MySqlParser.KW_EVERY);
				this.state = 1541;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 120, this._ctx) ) {
				case 1:
					{
					this.state = 1539;
					this.decimalLiteral();
					}
					break;

				case 2:
					{
					this.state = 1540;
					this.expression(0);
					}
					break;
				}
				this.state = 1543;
				this.intervalType();
				this.state = 1552;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_STARTS) {
					{
					this.state = 1544;
					this.match(MySqlParser.KW_STARTS);
					this.state = 1545;
					(_localctx as IntervalScheduleContext)._startTimestamp = this.timestampValue();
					this.state = 1549;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.PLUS) {
						{
						{
						this.state = 1546;
						(_localctx as IntervalScheduleContext)._intervalExpr = this.intervalExpr();
						(_localctx as IntervalScheduleContext)._startIntervals.push((_localctx as IntervalScheduleContext)._intervalExpr);
						}
						}
						this.state = 1551;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 1562;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ENDS) {
					{
					this.state = 1554;
					this.match(MySqlParser.KW_ENDS);
					this.state = 1555;
					(_localctx as IntervalScheduleContext)._endTimestamp = this.timestampValue();
					this.state = 1559;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.PLUS) {
						{
						{
						this.state = 1556;
						(_localctx as IntervalScheduleContext)._intervalExpr = this.intervalExpr();
						(_localctx as IntervalScheduleContext)._endIntervals.push((_localctx as IntervalScheduleContext)._intervalExpr);
						}
						}
						this.state = 1561;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public timestampValue(): TimestampValueContext {
		let _localctx: TimestampValueContext = new TimestampValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 62, MySqlParser.RULE_timestampValue);
		try {
			this.state = 1570;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 126, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1566;
				this.match(MySqlParser.KW_CURRENT_TIMESTAMP);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1567;
				this.stringLiteral();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1568;
				this.decimalLiteral();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1569;
				this.expression(0);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalExpr(): IntervalExprContext {
		let _localctx: IntervalExprContext = new IntervalExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 64, MySqlParser.RULE_intervalExpr);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1572;
			this.match(MySqlParser.PLUS);
			this.state = 1573;
			this.match(MySqlParser.KW_INTERVAL);
			this.state = 1576;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 127, this._ctx) ) {
			case 1:
				{
				this.state = 1574;
				this.decimalLiteral();
				}
				break;

			case 2:
				{
				this.state = 1575;
				this.expression(0);
				}
				break;
			}
			this.state = 1578;
			this.intervalType();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalType(): IntervalTypeContext {
		let _localctx: IntervalTypeContext = new IntervalTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 66, MySqlParser.RULE_intervalType);
		try {
			this.state = 1593;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1580;
				this.intervalTypeBase();
				}
				break;
			case MySqlParser.KW_YEAR:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1581;
				this.match(MySqlParser.KW_YEAR);
				}
				break;
			case MySqlParser.KW_YEAR_MONTH:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1582;
				this.match(MySqlParser.KW_YEAR_MONTH);
				}
				break;
			case MySqlParser.KW_DAY_HOUR:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1583;
				this.match(MySqlParser.KW_DAY_HOUR);
				}
				break;
			case MySqlParser.KW_DAY_MINUTE:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1584;
				this.match(MySqlParser.KW_DAY_MINUTE);
				}
				break;
			case MySqlParser.KW_DAY_SECOND:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1585;
				this.match(MySqlParser.KW_DAY_SECOND);
				}
				break;
			case MySqlParser.KW_HOUR_MINUTE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1586;
				this.match(MySqlParser.KW_HOUR_MINUTE);
				}
				break;
			case MySqlParser.KW_HOUR_SECOND:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1587;
				this.match(MySqlParser.KW_HOUR_SECOND);
				}
				break;
			case MySqlParser.KW_MINUTE_SECOND:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1588;
				this.match(MySqlParser.KW_MINUTE_SECOND);
				}
				break;
			case MySqlParser.KW_SECOND_MICROSECOND:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1589;
				this.match(MySqlParser.KW_SECOND_MICROSECOND);
				}
				break;
			case MySqlParser.KW_MINUTE_MICROSECOND:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1590;
				this.match(MySqlParser.KW_MINUTE_MICROSECOND);
				}
				break;
			case MySqlParser.KW_HOUR_MICROSECOND:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1591;
				this.match(MySqlParser.KW_HOUR_MICROSECOND);
				}
				break;
			case MySqlParser.KW_DAY_MICROSECOND:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1592;
				this.match(MySqlParser.KW_DAY_MICROSECOND);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enableType(): EnableTypeContext {
		let _localctx: EnableTypeContext = new EnableTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 68, MySqlParser.RULE_enableType);
		try {
			this.state = 1600;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 129, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1595;
				this.match(MySqlParser.KW_ENABLE);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1596;
				this.match(MySqlParser.KW_DISABLE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1597;
				this.match(MySqlParser.KW_DISABLE);
				this.state = 1598;
				this.match(MySqlParser.KW_ON);
				this.state = 1599;
				this.match(MySqlParser.KW_SLAVE);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexType(): IndexTypeContext {
		let _localctx: IndexTypeContext = new IndexTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 70, MySqlParser.RULE_indexType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1602;
			this.match(MySqlParser.KW_USING);
			this.state = 1603;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_BTREE || _la === MySqlParser.KW_HASH)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexOption(): IndexOptionContext {
		let _localctx: IndexOptionContext = new IndexOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 72, MySqlParser.RULE_indexOption);
		let _la: number;
		try {
			this.state = 1627;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_KEY_BLOCK_SIZE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1605;
				this.match(MySqlParser.KW_KEY_BLOCK_SIZE);
				this.state = 1607;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1606;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1609;
				this.fileSizeLiteral();
				}
				break;
			case MySqlParser.KW_USING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1610;
				this.indexType();
				}
				break;
			case MySqlParser.KW_WITH:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1611;
				this.match(MySqlParser.KW_WITH);
				this.state = 1612;
				this.match(MySqlParser.KW_PARSER);
				this.state = 1613;
				_localctx._parserName = this.uid();
				}
				break;
			case MySqlParser.KW_COMMENT:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1614;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1615;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_VISIBLE:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1616;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_VISIBLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1617;
				this.match(MySqlParser.KW_ENGINE_ATTRIBUTE);
				this.state = 1619;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1618;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1621;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1622;
				this.match(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE);
				this.state = 1624;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1623;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1626;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public procedureParameter(): ProcedureParameterContext {
		let _localctx: ProcedureParameterContext = new ProcedureParameterContext(this._ctx, this.state);
		this.enterRule(_localctx, 74, MySqlParser.RULE_procedureParameter);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1630;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IN || _la === MySqlParser.KW_INOUT || _la === MySqlParser.KW_OUT) {
				{
				this.state = 1629;
				_localctx._direction = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_IN || _la === MySqlParser.KW_INOUT || _la === MySqlParser.KW_OUT)) {
					_localctx._direction = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 1632;
			_localctx._paramName = this.uid();
			this.state = 1633;
			this.dataType();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public routineOption(): RoutineOptionContext {
		let _localctx: RoutineOptionContext = new RoutineOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 76, MySqlParser.RULE_routineOption);
		let _la: number;
		try {
			this.state = 1658;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_COMMENT:
				_localctx = new RoutineCommentContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1635;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1636;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_LANGUAGE:
				_localctx = new RoutineLanguageContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1637;
				this.match(MySqlParser.KW_LANGUAGE);
				this.state = 1638;
				this.match(MySqlParser.KW_SQL);
				}
				break;
			case MySqlParser.KW_DETERMINISTIC:
			case MySqlParser.KW_NOT:
				_localctx = new RoutineBehaviorContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1640;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 1639;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 1642;
				this.match(MySqlParser.KW_DETERMINISTIC);
				}
				break;
			case MySqlParser.KW_MODIFIES:
			case MySqlParser.KW_READS:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_NO:
				_localctx = new RoutineDataContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1653;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_CONTAINS:
					{
					this.state = 1643;
					this.match(MySqlParser.KW_CONTAINS);
					this.state = 1644;
					this.match(MySqlParser.KW_SQL);
					}
					break;
				case MySqlParser.KW_NO:
					{
					this.state = 1645;
					this.match(MySqlParser.KW_NO);
					this.state = 1646;
					this.match(MySqlParser.KW_SQL);
					}
					break;
				case MySqlParser.KW_READS:
					{
					this.state = 1647;
					this.match(MySqlParser.KW_READS);
					this.state = 1648;
					this.match(MySqlParser.KW_SQL);
					this.state = 1649;
					this.match(MySqlParser.KW_DATA);
					}
					break;
				case MySqlParser.KW_MODIFIES:
					{
					this.state = 1650;
					this.match(MySqlParser.KW_MODIFIES);
					this.state = 1651;
					this.match(MySqlParser.KW_SQL);
					this.state = 1652;
					this.match(MySqlParser.KW_DATA);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_SQL:
				_localctx = new RoutineSecurityContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1655;
				this.match(MySqlParser.KW_SQL);
				this.state = 1656;
				this.match(MySqlParser.KW_SECURITY);
				this.state = 1657;
				(_localctx as RoutineSecurityContext)._context = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFINER || _la === MySqlParser.KW_INVOKER)) {
					(_localctx as RoutineSecurityContext)._context = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public serverOption(): ServerOptionContext {
		let _localctx: ServerOptionContext = new ServerOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 78, MySqlParser.RULE_serverOption);
		try {
			this.state = 1674;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_HOST:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1660;
				this.match(MySqlParser.KW_HOST);
				this.state = 1661;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_DATABASE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1662;
				this.match(MySqlParser.KW_DATABASE);
				this.state = 1663;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_USER:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1664;
				this.match(MySqlParser.KW_USER);
				this.state = 1665;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_PASSWORD:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1666;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 1667;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_SOCKET:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1668;
				this.match(MySqlParser.KW_SOCKET);
				this.state = 1669;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_OWNER:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1670;
				this.match(MySqlParser.KW_OWNER);
				this.state = 1671;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_PORT:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1672;
				this.match(MySqlParser.KW_PORT);
				this.state = 1673;
				this.decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createDefinitions(): CreateDefinitionsContext {
		let _localctx: CreateDefinitionsContext = new CreateDefinitionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 80, MySqlParser.RULE_createDefinitions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1676;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 1677;
			this.createDefinition();
			this.state = 1682;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 1678;
				this.match(MySqlParser.COMMA);
				this.state = 1679;
				this.createDefinition();
				}
				}
				this.state = 1684;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1685;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createDefinition(): CreateDefinitionContext {
		let _localctx: CreateDefinitionContext = new CreateDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 82, MySqlParser.RULE_createDefinition);
		let _la: number;
		try {
			this.state = 1770;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 156, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1687;
				this.columnName();
				this.state = 1688;
				this.columnDefinition();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1690;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1692;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 1691;
					this.indexName();
					}
				}

				this.state = 1695;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 1694;
					this.indexType();
					}
				}

				this.state = 1697;
				this.indexColumnNames();
				this.state = 1701;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_USING || _la === MySqlParser.KW_WITH || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_KEY_BLOCK_SIZE || _la === MySqlParser.KW_VISIBLE || _la === MySqlParser.KW_ENGINE_ATTRIBUTE || _la === MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE) {
					{
					{
					this.state = 1698;
					this.indexOption();
					}
					}
					this.state = 1703;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1704;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FULLTEXT || _la === MySqlParser.KW_SPATIAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1706;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY) {
					{
					this.state = 1705;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 1709;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 1708;
					this.indexName();
					}
				}

				this.state = 1711;
				this.indexColumnNames();
				this.state = 1715;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_USING || _la === MySqlParser.KW_WITH || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_KEY_BLOCK_SIZE || _la === MySqlParser.KW_VISIBLE || _la === MySqlParser.KW_ENGINE_ATTRIBUTE || _la === MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE) {
					{
					{
					this.state = 1712;
					this.indexOption();
					}
					}
					this.state = 1717;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1719;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CONSTRAINT) {
					{
					this.state = 1718;
					this.constraintSymbol();
					}
				}

				this.state = 1721;
				this.match(MySqlParser.KW_PRIMARY);
				this.state = 1722;
				this.match(MySqlParser.KW_KEY);
				this.state = 1724;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 1723;
					this.indexType();
					}
				}

				this.state = 1726;
				this.indexColumnNames();
				this.state = 1730;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_USING || _la === MySqlParser.KW_WITH || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_KEY_BLOCK_SIZE || _la === MySqlParser.KW_VISIBLE || _la === MySqlParser.KW_ENGINE_ATTRIBUTE || _la === MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE) {
					{
					{
					this.state = 1727;
					this.indexOption();
					}
					}
					this.state = 1732;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1734;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CONSTRAINT) {
					{
					this.state = 1733;
					this.constraintSymbol();
					}
				}

				this.state = 1736;
				this.match(MySqlParser.KW_UNIQUE);
				this.state = 1738;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY) {
					{
					this.state = 1737;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 1741;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 1740;
					this.indexName();
					}
				}

				this.state = 1744;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 1743;
					this.indexType();
					}
				}

				this.state = 1746;
				this.indexColumnNames();
				this.state = 1750;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_USING || _la === MySqlParser.KW_WITH || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_KEY_BLOCK_SIZE || _la === MySqlParser.KW_VISIBLE || _la === MySqlParser.KW_ENGINE_ATTRIBUTE || _la === MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE) {
					{
					{
					this.state = 1747;
					this.indexOption();
					}
					}
					this.state = 1752;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1754;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CONSTRAINT) {
					{
					this.state = 1753;
					this.constraintSymbol();
					}
				}

				this.state = 1756;
				this.match(MySqlParser.KW_FOREIGN);
				this.state = 1757;
				this.match(MySqlParser.KW_KEY);
				this.state = 1759;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 1758;
					this.indexName();
					}
				}

				this.state = 1761;
				this.indexColumnNames();
				this.state = 1762;
				this.referenceDefinition();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1764;
				this.match(MySqlParser.KW_CHECK);
				this.state = 1765;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 1766;
				this.expression(0);
				this.state = 1767;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1769;
				this.checkConstraintDefinition();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public checkConstraintDefinition(): CheckConstraintDefinitionContext {
		let _localctx: CheckConstraintDefinitionContext = new CheckConstraintDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 84, MySqlParser.RULE_checkConstraintDefinition);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1773;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CONSTRAINT) {
				{
				this.state = 1772;
				this.constraintSymbol();
				}
			}

			this.state = 1775;
			this.match(MySqlParser.KW_CHECK);
			this.state = 1776;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 1777;
			this.expression(0);
			this.state = 1778;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 1783;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 159, this._ctx) ) {
			case 1:
				{
				this.state = 1780;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 1779;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 1782;
				this.match(MySqlParser.KW_ENFORCED);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constraintSymbol(): ConstraintSymbolContext {
		let _localctx: ConstraintSymbolContext = new ConstraintSymbolContext(this._ctx, this.state);
		this.enterRule(_localctx, 86, MySqlParser.RULE_constraintSymbol);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1785;
			this.match(MySqlParser.KW_CONSTRAINT);
			this.state = 1787;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 160, this._ctx) ) {
			case 1:
				{
				this.state = 1786;
				_localctx._symbol = this.uid();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnDefinition(): ColumnDefinitionContext {
		let _localctx: ColumnDefinitionContext = new ColumnDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 88, MySqlParser.RULE_columnDefinition);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1789;
			this.dataType();
			this.state = 1793;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 161, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1790;
					this.columnConstraint();
					}
					}
				}
				this.state = 1795;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 161, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnConstraint(): ColumnConstraintContext {
		let _localctx: ColumnConstraintContext = new ColumnConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 90, MySqlParser.RULE_columnConstraint);
		let _la: number;
		try {
			this.state = 1839;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_NOT:
			case MySqlParser.KW_NULL_LITERAL:
			case MySqlParser.NULL_SPEC_LITERAL:
				_localctx = new NullColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1796;
				this.nullNotnull();
				}
				break;
			case MySqlParser.KW_DEFAULT:
				_localctx = new DefaultColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1797;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 1798;
				this.defaultValue();
				}
				break;
			case MySqlParser.KW_VISIBLE:
				_localctx = new VisibilityColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1799;
				this.match(MySqlParser.KW_VISIBLE);
				}
				break;
			case MySqlParser.KW_INVISIBLE:
				_localctx = new InvisibilityColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1800;
				this.match(MySqlParser.KW_INVISIBLE);
				}
				break;
			case MySqlParser.KW_ON:
			case MySqlParser.KW_AUTO_INCREMENT:
				_localctx = new AutoIncrementColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1805;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_AUTO_INCREMENT:
					{
					this.state = 1801;
					this.match(MySqlParser.KW_AUTO_INCREMENT);
					}
					break;
				case MySqlParser.KW_ON:
					{
					this.state = 1802;
					this.match(MySqlParser.KW_ON);
					this.state = 1803;
					this.match(MySqlParser.KW_UPDATE);
					this.state = 1804;
					this.currentTimestamp();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_KEY:
			case MySqlParser.KW_PRIMARY:
				_localctx = new PrimaryKeyColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1808;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PRIMARY) {
					{
					this.state = 1807;
					this.match(MySqlParser.KW_PRIMARY);
					}
				}

				this.state = 1810;
				this.match(MySqlParser.KW_KEY);
				}
				break;
			case MySqlParser.KW_UNIQUE:
				_localctx = new UniqueKeyColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1811;
				this.match(MySqlParser.KW_UNIQUE);
				this.state = 1813;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 164, this._ctx) ) {
				case 1:
					{
					this.state = 1812;
					this.match(MySqlParser.KW_KEY);
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_COMMENT:
				_localctx = new CommentColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1815;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1816;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_COLUMN_FORMAT:
				_localctx = new FormatColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1817;
				this.match(MySqlParser.KW_COLUMN_FORMAT);
				this.state = 1818;
				(_localctx as FormatColumnConstraintContext)._colformat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_DYNAMIC || _la === MySqlParser.KW_FIXED)) {
					(_localctx as FormatColumnConstraintContext)._colformat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_STORAGE:
				_localctx = new StorageColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1819;
				this.match(MySqlParser.KW_STORAGE);
				this.state = 1820;
				(_localctx as StorageColumnConstraintContext)._storageval = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_DISK || _la === MySqlParser.KW_MEMORY)) {
					(_localctx as StorageColumnConstraintContext)._storageval = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_REFERENCES:
				_localctx = new ReferenceColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1821;
				this.referenceDefinition();
				}
				break;
			case MySqlParser.KW_COLLATE:
				_localctx = new CollateColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1822;
				this.match(MySqlParser.KW_COLLATE);
				this.state = 1823;
				this.collationName();
				}
				break;
			case MySqlParser.KW_AS:
			case MySqlParser.KW_GENERATED:
				_localctx = new GeneratedColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1826;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_GENERATED) {
					{
					this.state = 1824;
					this.match(MySqlParser.KW_GENERATED);
					this.state = 1825;
					this.match(MySqlParser.KW_ALWAYS);
					}
				}

				this.state = 1828;
				this.match(MySqlParser.KW_AS);
				this.state = 1829;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 1830;
				this.expression(0);
				this.state = 1831;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 1833;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_STORED || _la === MySqlParser.KW_VIRTUAL) {
					{
					this.state = 1832;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_STORED || _la === MySqlParser.KW_VIRTUAL)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				}
				break;
			case MySqlParser.KW_SERIAL:
				_localctx = new SerialDefaultColumnConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 1835;
				this.match(MySqlParser.KW_SERIAL);
				this.state = 1836;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 1837;
				this.match(MySqlParser.KW_VALUE);
				}
				break;
			case MySqlParser.KW_CHECK:
			case MySqlParser.KW_CONSTRAINT:
				_localctx = new CheckExprContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 1838;
				this.checkConstraintDefinition();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public referenceDefinition(): ReferenceDefinitionContext {
		let _localctx: ReferenceDefinitionContext = new ReferenceDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 92, MySqlParser.RULE_referenceDefinition);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1841;
			this.match(MySqlParser.KW_REFERENCES);
			this.state = 1842;
			this.tableName();
			this.state = 1844;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 168, this._ctx) ) {
			case 1:
				{
				this.state = 1843;
				this.indexColumnNames();
				}
				break;
			}
			this.state = 1848;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_MATCH) {
				{
				this.state = 1846;
				this.match(MySqlParser.KW_MATCH);
				this.state = 1847;
				_localctx._matchType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FULL || _la === MySqlParser.KW_PARTIAL || _la === MySqlParser.KW_SIMPLE)) {
					_localctx._matchType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 1851;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 170, this._ctx) ) {
			case 1:
				{
				this.state = 1850;
				this.referenceAction();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public referenceAction(): ReferenceActionContext {
		let _localctx: ReferenceActionContext = new ReferenceActionContext(this._ctx, this.state);
		this.enterRule(_localctx, 94, MySqlParser.RULE_referenceAction);
		try {
			this.state = 1869;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 173, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1853;
				this.match(MySqlParser.KW_ON);
				this.state = 1854;
				this.match(MySqlParser.KW_DELETE);
				this.state = 1855;
				_localctx._onDelete = this.referenceControlType();
				this.state = 1859;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 171, this._ctx) ) {
				case 1:
					{
					this.state = 1856;
					this.match(MySqlParser.KW_ON);
					this.state = 1857;
					this.match(MySqlParser.KW_UPDATE);
					this.state = 1858;
					_localctx._onUpdate = this.referenceControlType();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1861;
				this.match(MySqlParser.KW_ON);
				this.state = 1862;
				this.match(MySqlParser.KW_UPDATE);
				this.state = 1863;
				_localctx._onUpdate = this.referenceControlType();
				this.state = 1867;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 172, this._ctx) ) {
				case 1:
					{
					this.state = 1864;
					this.match(MySqlParser.KW_ON);
					this.state = 1865;
					this.match(MySqlParser.KW_DELETE);
					this.state = 1866;
					_localctx._onDelete = this.referenceControlType();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public referenceControlType(): ReferenceControlTypeContext {
		let _localctx: ReferenceControlTypeContext = new ReferenceControlTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 96, MySqlParser.RULE_referenceControlType);
		try {
			this.state = 1879;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 174, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1871;
				this.match(MySqlParser.KW_RESTRICT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1872;
				this.match(MySqlParser.KW_CASCADE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1873;
				this.match(MySqlParser.KW_SET);
				this.state = 1874;
				this.match(MySqlParser.KW_NULL_LITERAL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1875;
				this.match(MySqlParser.KW_NO);
				this.state = 1876;
				this.match(MySqlParser.KW_ACTION);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1877;
				this.match(MySqlParser.KW_SET);
				this.state = 1878;
				this.match(MySqlParser.KW_DEFAULT);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableOption(): TableOptionContext {
		let _localctx: TableOptionContext = new TableOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 98, MySqlParser.RULE_tableOption);
		let _la: number;
		try {
			this.state = 2066;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 212, this._ctx) ) {
			case 1:
				_localctx = new TableOptionEngineContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1881;
				this.match(MySqlParser.KW_ENGINE);
				this.state = 1883;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1882;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1886;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 176, this._ctx) ) {
				case 1:
					{
					this.state = 1885;
					this.engineName();
					}
					break;
				}
				}
				break;

			case 2:
				_localctx = new TableOptionEngineAttributeContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1888;
				this.match(MySqlParser.KW_ENGINE_ATTRIBUTE);
				this.state = 1890;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1889;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1892;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 3:
				_localctx = new TableOptionAutoextendSizeContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1893;
				this.match(MySqlParser.KW_AUTOEXTEND_SIZE);
				this.state = 1895;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1894;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1897;
				this.decimalLiteral();
				}
				break;

			case 4:
				_localctx = new TableOptionAutoIncrementContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1898;
				this.match(MySqlParser.KW_AUTO_INCREMENT);
				this.state = 1900;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1899;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1902;
				this.decimalLiteral();
				}
				break;

			case 5:
				_localctx = new TableOptionAverageContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1903;
				this.match(MySqlParser.KW_AVG_ROW_LENGTH);
				this.state = 1905;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1904;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1907;
				this.decimalLiteral();
				}
				break;

			case 6:
				_localctx = new TableOptionCharsetContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1909;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 1908;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 1911;
				this.charSet();
				this.state = 1913;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1912;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1917;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 1915;
					this.charsetName();
					}
					break;
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 1916;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 7:
				_localctx = new TableOptionChecksumContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1919;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CHECKSUM || _la === MySqlParser.KW_PAGE_CHECKSUM)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1921;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1920;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1923;
				(_localctx as TableOptionChecksumContext)._boolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as TableOptionChecksumContext)._boolValue = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 8:
				_localctx = new TableOptionCollateContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1925;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 1924;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 1927;
				this.match(MySqlParser.KW_COLLATE);
				this.state = 1929;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1928;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1931;
				this.collationName();
				}
				break;

			case 9:
				_localctx = new TableOptionCommentContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1932;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 1934;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1933;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1936;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 10:
				_localctx = new TableOptionCompressionContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1937;
				this.match(MySqlParser.KW_COMPRESSION);
				this.state = 1939;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1938;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1941;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.STRING_LITERAL || _la === MySqlParser.ID)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 11:
				_localctx = new TableOptionConnectionContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1942;
				this.match(MySqlParser.KW_CONNECTION);
				this.state = 1944;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1943;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1946;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 12:
				_localctx = new TableOptionDataDirectoryContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1947;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_DATA)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1948;
				this.match(MySqlParser.KW_DIRECTORY);
				this.state = 1950;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1949;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1952;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 13:
				_localctx = new TableOptionDelayContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1953;
				this.match(MySqlParser.KW_DELAY_KEY_WRITE);
				this.state = 1955;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1954;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1957;
				(_localctx as TableOptionDelayContext)._boolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as TableOptionDelayContext)._boolValue = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 14:
				_localctx = new TableOptionEncryptionContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 1958;
				this.match(MySqlParser.KW_ENCRYPTION);
				this.state = 1960;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1959;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1962;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 15:
				_localctx = new TableOptionPageCompressedContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 1963;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_PAGE_COMPRESSED || _la === MySqlParser.STRING_LITERAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1965;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1964;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1967;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 16:
				_localctx = new TableOptionPageCompressionLevelContext(_localctx);
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 1968;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_PAGE_COMPRESSION_LEVEL || _la === MySqlParser.STRING_LITERAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1970;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1969;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1972;
				this.decimalLiteral();
				}
				break;

			case 17:
				_localctx = new TableOptionEncryptionKeyIdContext(_localctx);
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 1973;
				this.match(MySqlParser.KW_ENCRYPTION_KEY_ID);
				this.state = 1975;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1974;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1977;
				this.decimalLiteral();
				}
				break;

			case 18:
				_localctx = new TableOptionIndexDirectoryContext(_localctx);
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 1978;
				this.match(MySqlParser.KW_INDEX);
				this.state = 1979;
				this.match(MySqlParser.KW_DIRECTORY);
				this.state = 1981;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1980;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1983;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 19:
				_localctx = new TableOptionInsertMethodContext(_localctx);
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 1984;
				this.match(MySqlParser.KW_INSERT_METHOD);
				this.state = 1986;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1985;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1988;
				(_localctx as TableOptionInsertMethodContext)._insertMethod = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FIRST || _la === MySqlParser.KW_LAST || _la === MySqlParser.KW_NO)) {
					(_localctx as TableOptionInsertMethodContext)._insertMethod = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 20:
				_localctx = new TableOptionKeyBlockSizeContext(_localctx);
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 1989;
				this.match(MySqlParser.KW_KEY_BLOCK_SIZE);
				this.state = 1991;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1990;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1993;
				this.fileSizeLiteral();
				}
				break;

			case 21:
				_localctx = new TableOptionMaxRowsContext(_localctx);
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 1994;
				this.match(MySqlParser.KW_MAX_ROWS);
				this.state = 1996;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 1995;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1998;
				this.decimalLiteral();
				}
				break;

			case 22:
				_localctx = new TableOptionMinRowsContext(_localctx);
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 1999;
				this.match(MySqlParser.KW_MIN_ROWS);
				this.state = 2001;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2000;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2003;
				this.decimalLiteral();
				}
				break;

			case 23:
				_localctx = new TableOptionPackKeysContext(_localctx);
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 2004;
				this.match(MySqlParser.KW_PACK_KEYS);
				this.state = 2006;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2005;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2008;
				(_localctx as TableOptionPackKeysContext)._extBoolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as TableOptionPackKeysContext)._extBoolValue = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 24:
				_localctx = new TableOptionPasswordContext(_localctx);
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 2009;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 2011;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2010;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2013;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 25:
				_localctx = new TableOptionRowFormatContext(_localctx);
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 2014;
				this.match(MySqlParser.KW_ROW_FORMAT);
				this.state = 2016;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2015;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2018;
				(_localctx as TableOptionRowFormatContext)._rowFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_COMPACT || _la === MySqlParser.KW_COMPRESSED || _la === MySqlParser.KW_DYNAMIC || _la === MySqlParser.KW_FIXED || _la === MySqlParser.KW_REDUNDANT || _la === MySqlParser.ID)) {
					(_localctx as TableOptionRowFormatContext)._rowFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 26:
				_localctx = new TableOptionStartTransactionContext(_localctx);
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 2019;
				this.match(MySqlParser.KW_START);
				this.state = 2020;
				this.match(MySqlParser.KW_TRANSACTION);
				}
				break;

			case 27:
				_localctx = new TableOptionSecondaryEngineAttributeContext(_localctx);
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 2021;
				this.match(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE);
				this.state = 2023;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2022;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2025;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 28:
				_localctx = new TableOptionRecalculationContext(_localctx);
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 2026;
				this.match(MySqlParser.KW_STATS_AUTO_RECALC);
				this.state = 2028;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2027;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2030;
				(_localctx as TableOptionRecalculationContext)._extBoolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as TableOptionRecalculationContext)._extBoolValue = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 29:
				_localctx = new TableOptionPersistentContext(_localctx);
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 2031;
				this.match(MySqlParser.KW_STATS_PERSISTENT);
				this.state = 2033;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2032;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2035;
				(_localctx as TableOptionPersistentContext)._extBoolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as TableOptionPersistentContext)._extBoolValue = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 30:
				_localctx = new TableOptionSamplePageContext(_localctx);
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 2036;
				this.match(MySqlParser.KW_STATS_SAMPLE_PAGES);
				this.state = 2038;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2037;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2042;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 2040;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 2041;
					this.decimalLiteral();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 31:
				_localctx = new TableOptionTablespaceContext(_localctx);
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 2044;
				this.match(MySqlParser.KW_TABLESPACE);
				this.state = 2045;
				this.tablespaceName();
				this.state = 2047;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 209, this._ctx) ) {
				case 1:
					{
					this.state = 2046;
					this.tablespaceStorage();
					}
					break;
				}
				}
				break;

			case 32:
				_localctx = new TableOptionTableTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 2049;
				this.match(MySqlParser.KW_TABLE_TYPE);
				this.state = 2050;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 2051;
				this.tableType();
				}
				break;

			case 33:
				_localctx = new TableOptionTablespaceContext(_localctx);
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 2052;
				this.tablespaceStorage();
				}
				break;

			case 34:
				_localctx = new TableOptionTransactionalContext(_localctx);
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 2053;
				this.match(MySqlParser.KW_TRANSACTIONAL);
				this.state = 2055;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2054;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2057;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 35:
				_localctx = new TableOptionUnionContext(_localctx);
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 2058;
				this.match(MySqlParser.KW_UNION);
				this.state = 2060;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2059;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2062;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2063;
				this.tableNames();
				this.state = 2064;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableType(): TableTypeContext {
		let _localctx: TableTypeContext = new TableTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 100, MySqlParser.RULE_tableType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2068;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_MYSQL || _la === MySqlParser.KW_ODBC)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablespaceStorage(): TablespaceStorageContext {
		let _localctx: TablespaceStorageContext = new TablespaceStorageContext(this._ctx, this.state);
		this.enterRule(_localctx, 102, MySqlParser.RULE_tablespaceStorage);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2070;
			this.match(MySqlParser.KW_STORAGE);
			this.state = 2071;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_DISK || _la === MySqlParser.KW_MEMORY)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionDefinitions(): PartitionDefinitionsContext {
		let _localctx: PartitionDefinitionsContext = new PartitionDefinitionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 104, MySqlParser.RULE_partitionDefinitions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2073;
			this.match(MySqlParser.KW_PARTITION);
			this.state = 2074;
			this.match(MySqlParser.KW_BY);
			this.state = 2075;
			this.partitionFunctionDefinition();
			this.state = 2078;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITIONS) {
				{
				this.state = 2076;
				this.match(MySqlParser.KW_PARTITIONS);
				this.state = 2077;
				_localctx._count = this.decimalLiteral();
				}
			}

			this.state = 2087;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_SUBPARTITION) {
				{
				this.state = 2080;
				this.match(MySqlParser.KW_SUBPARTITION);
				this.state = 2081;
				this.match(MySqlParser.KW_BY);
				this.state = 2082;
				this.subpartitionFunctionDefinition();
				this.state = 2085;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_SUBPARTITIONS) {
					{
					this.state = 2083;
					this.match(MySqlParser.KW_SUBPARTITIONS);
					this.state = 2084;
					_localctx._subCount = this.decimalLiteral();
					}
				}

				}
			}

			this.state = 2100;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 217, this._ctx) ) {
			case 1:
				{
				this.state = 2089;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2090;
				this.partitionDefinition();
				this.state = 2095;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2091;
					this.match(MySqlParser.COMMA);
					this.state = 2092;
					this.partitionDefinition();
					}
					}
					this.state = 2097;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2098;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionFunctionDefinition(): PartitionFunctionDefinitionContext {
		let _localctx: PartitionFunctionDefinitionContext = new PartitionFunctionDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 106, MySqlParser.RULE_partitionFunctionDefinition);
		let _la: number;
		try {
			this.state = 2148;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 224, this._ctx) ) {
			case 1:
				_localctx = new PartitionFunctionHashContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2103;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LINEAR) {
					{
					this.state = 2102;
					this.match(MySqlParser.KW_LINEAR);
					}
				}

				this.state = 2105;
				this.match(MySqlParser.KW_HASH);
				this.state = 2106;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2107;
				this.expression(0);
				this.state = 2108;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 2:
				_localctx = new PartitionFunctionKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2111;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LINEAR) {
					{
					this.state = 2110;
					this.match(MySqlParser.KW_LINEAR);
					}
				}

				this.state = 2113;
				this.match(MySqlParser.KW_KEY);
				this.state = 2117;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ALGORITHM) {
					{
					this.state = 2114;
					this.match(MySqlParser.KW_ALGORITHM);
					this.state = 2115;
					this.match(MySqlParser.EQUAL_SYMBOL);
					this.state = 2116;
					(_localctx as PartitionFunctionKeyContext)._algType = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.ONE_DECIMAL || _la === MySqlParser.TWO_DECIMAL)) {
						(_localctx as PartitionFunctionKeyContext)._algType = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 2119;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2121;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 221, this._ctx) ) {
				case 1:
					{
					this.state = 2120;
					this.columnNames();
					}
					break;
				}
				this.state = 2123;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 3:
				_localctx = new PartitionFunctionRangeContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2124;
				this.match(MySqlParser.KW_RANGE);
				this.state = 2134;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.LR_BRACKET:
					{
					this.state = 2125;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2126;
					this.expression(0);
					this.state = 2127;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				case MySqlParser.KW_COLUMNS:
					{
					this.state = 2129;
					this.match(MySqlParser.KW_COLUMNS);
					this.state = 2130;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2131;
					this.columnNames();
					this.state = 2132;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 4:
				_localctx = new PartitionFunctionListContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2136;
				this.match(MySqlParser.KW_LIST);
				this.state = 2146;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.LR_BRACKET:
					{
					this.state = 2137;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2138;
					this.expression(0);
					this.state = 2139;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				case MySqlParser.KW_COLUMNS:
					{
					this.state = 2141;
					this.match(MySqlParser.KW_COLUMNS);
					this.state = 2142;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2143;
					this.columnNames();
					this.state = 2144;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public subpartitionFunctionDefinition(): SubpartitionFunctionDefinitionContext {
		let _localctx: SubpartitionFunctionDefinitionContext = new SubpartitionFunctionDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 108, MySqlParser.RULE_subpartitionFunctionDefinition);
		let _la: number;
		try {
			this.state = 2171;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 228, this._ctx) ) {
			case 1:
				_localctx = new SubPartitionFunctionHashContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2151;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LINEAR) {
					{
					this.state = 2150;
					this.match(MySqlParser.KW_LINEAR);
					}
				}

				this.state = 2153;
				this.match(MySqlParser.KW_HASH);
				this.state = 2154;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2155;
				this.expression(0);
				this.state = 2156;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 2:
				_localctx = new SubPartitionFunctionKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2159;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LINEAR) {
					{
					this.state = 2158;
					this.match(MySqlParser.KW_LINEAR);
					}
				}

				this.state = 2161;
				this.match(MySqlParser.KW_KEY);
				this.state = 2165;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ALGORITHM) {
					{
					this.state = 2162;
					this.match(MySqlParser.KW_ALGORITHM);
					this.state = 2163;
					this.match(MySqlParser.EQUAL_SYMBOL);
					this.state = 2164;
					(_localctx as SubPartitionFunctionKeyContext)._algType = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.ONE_DECIMAL || _la === MySqlParser.TWO_DECIMAL)) {
						(_localctx as SubPartitionFunctionKeyContext)._algType = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 2167;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2168;
				this.columnNames();
				this.state = 2169;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionDefinition(): PartitionDefinitionContext {
		let _localctx: PartitionDefinitionContext = new PartitionDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 110, MySqlParser.RULE_partitionDefinition);
		let _la: number;
		try {
			this.state = 2319;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 247, this._ctx) ) {
			case 1:
				_localctx = new PartitionComparisonContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2173;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2174;
				this.partitionName();
				this.state = 2175;
				this.match(MySqlParser.KW_VALUES);
				this.state = 2176;
				this.match(MySqlParser.KW_LESS);
				this.state = 2177;
				this.match(MySqlParser.KW_THAN);
				this.state = 2178;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2179;
				this.partitionDefinerAtom();
				this.state = 2184;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2180;
					this.match(MySqlParser.COMMA);
					this.state = 2181;
					this.partitionDefinerAtom();
					}
					}
					this.state = 2186;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2187;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 2191;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_DATA || _la === MySqlParser.KW_ENGINE || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & ((1 << (MySqlParser.KW_MAX_ROWS - 480)) | (1 << (MySqlParser.KW_MIN_ROWS - 480)) | (1 << (MySqlParser.KW_NODEGROUP - 480)))) !== 0) || _la === MySqlParser.KW_STORAGE || _la === MySqlParser.KW_TABLESPACE) {
					{
					{
					this.state = 2188;
					this.partitionOption();
					}
					}
					this.state = 2193;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2205;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 2194;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2195;
					this.subpartitionDefinition();
					this.state = 2200;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 2196;
						this.match(MySqlParser.COMMA);
						this.state = 2197;
						this.subpartitionDefinition();
						}
						}
						this.state = 2202;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 2203;
					this.match(MySqlParser.RR_BRACKET);
					}
				}

				}
				break;

			case 2:
				_localctx = new PartitionComparisonContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2207;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2208;
				this.partitionName();
				this.state = 2209;
				this.match(MySqlParser.KW_VALUES);
				this.state = 2210;
				this.match(MySqlParser.KW_LESS);
				this.state = 2211;
				this.match(MySqlParser.KW_THAN);
				this.state = 2212;
				this.partitionDefinerAtom();
				this.state = 2216;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_DATA || _la === MySqlParser.KW_ENGINE || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & ((1 << (MySqlParser.KW_MAX_ROWS - 480)) | (1 << (MySqlParser.KW_MIN_ROWS - 480)) | (1 << (MySqlParser.KW_NODEGROUP - 480)))) !== 0) || _la === MySqlParser.KW_STORAGE || _la === MySqlParser.KW_TABLESPACE) {
					{
					{
					this.state = 2213;
					this.partitionOption();
					}
					}
					this.state = 2218;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2230;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 2219;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2220;
					this.subpartitionDefinition();
					this.state = 2225;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 2221;
						this.match(MySqlParser.COMMA);
						this.state = 2222;
						this.subpartitionDefinition();
						}
						}
						this.state = 2227;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 2228;
					this.match(MySqlParser.RR_BRACKET);
					}
				}

				}
				break;

			case 3:
				_localctx = new PartitionListAtomContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2232;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2233;
				this.partitionName();
				this.state = 2234;
				this.match(MySqlParser.KW_VALUES);
				this.state = 2235;
				this.match(MySqlParser.KW_IN);
				this.state = 2236;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2237;
				this.partitionDefinerAtom();
				this.state = 2242;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2238;
					this.match(MySqlParser.COMMA);
					this.state = 2239;
					this.partitionDefinerAtom();
					}
					}
					this.state = 2244;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2245;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 2249;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_DATA || _la === MySqlParser.KW_ENGINE || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & ((1 << (MySqlParser.KW_MAX_ROWS - 480)) | (1 << (MySqlParser.KW_MIN_ROWS - 480)) | (1 << (MySqlParser.KW_NODEGROUP - 480)))) !== 0) || _la === MySqlParser.KW_STORAGE || _la === MySqlParser.KW_TABLESPACE) {
					{
					{
					this.state = 2246;
					this.partitionOption();
					}
					}
					this.state = 2251;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2263;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 2252;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2253;
					this.subpartitionDefinition();
					this.state = 2258;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 2254;
						this.match(MySqlParser.COMMA);
						this.state = 2255;
						this.subpartitionDefinition();
						}
						}
						this.state = 2260;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 2261;
					this.match(MySqlParser.RR_BRACKET);
					}
				}

				}
				break;

			case 4:
				_localctx = new PartitionListVectorContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2265;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2266;
				this.partitionName();
				this.state = 2267;
				this.match(MySqlParser.KW_VALUES);
				this.state = 2268;
				this.match(MySqlParser.KW_IN);
				this.state = 2269;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2270;
				this.partitionDefinerVector();
				this.state = 2275;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2271;
					this.match(MySqlParser.COMMA);
					this.state = 2272;
					this.partitionDefinerVector();
					}
					}
					this.state = 2277;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2278;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 2282;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_DATA || _la === MySqlParser.KW_ENGINE || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & ((1 << (MySqlParser.KW_MAX_ROWS - 480)) | (1 << (MySqlParser.KW_MIN_ROWS - 480)) | (1 << (MySqlParser.KW_NODEGROUP - 480)))) !== 0) || _la === MySqlParser.KW_STORAGE || _la === MySqlParser.KW_TABLESPACE) {
					{
					{
					this.state = 2279;
					this.partitionOption();
					}
					}
					this.state = 2284;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2296;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 2285;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2286;
					this.subpartitionDefinition();
					this.state = 2291;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 2287;
						this.match(MySqlParser.COMMA);
						this.state = 2288;
						this.subpartitionDefinition();
						}
						}
						this.state = 2293;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 2294;
					this.match(MySqlParser.RR_BRACKET);
					}
				}

				}
				break;

			case 5:
				_localctx = new PartitionSimpleContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2298;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2299;
				this.partitionName();
				this.state = 2303;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_DATA || _la === MySqlParser.KW_ENGINE || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & ((1 << (MySqlParser.KW_MAX_ROWS - 480)) | (1 << (MySqlParser.KW_MIN_ROWS - 480)) | (1 << (MySqlParser.KW_NODEGROUP - 480)))) !== 0) || _la === MySqlParser.KW_STORAGE || _la === MySqlParser.KW_TABLESPACE) {
					{
					{
					this.state = 2300;
					this.partitionOption();
					}
					}
					this.state = 2305;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2317;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 2306;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 2307;
					this.subpartitionDefinition();
					this.state = 2312;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 2308;
						this.match(MySqlParser.COMMA);
						this.state = 2309;
						this.subpartitionDefinition();
						}
						}
						this.state = 2314;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 2315;
					this.match(MySqlParser.RR_BRACKET);
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionDefinerAtom(): PartitionDefinerAtomContext {
		let _localctx: PartitionDefinerAtomContext = new PartitionDefinerAtomContext(this._ctx, this.state);
		this.enterRule(_localctx, 112, MySqlParser.RULE_partitionDefinerAtom);
		try {
			this.state = 2324;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 248, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2321;
				this.constant();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2322;
				this.expression(0);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2323;
				this.match(MySqlParser.KW_MAXVALUE);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionDefinerVector(): PartitionDefinerVectorContext {
		let _localctx: PartitionDefinerVectorContext = new PartitionDefinerVectorContext(this._ctx, this.state);
		this.enterRule(_localctx, 114, MySqlParser.RULE_partitionDefinerVector);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2326;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 2327;
			this.partitionDefinerAtom();
			this.state = 2330;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 2328;
				this.match(MySqlParser.COMMA);
				this.state = 2329;
				this.partitionDefinerAtom();
				}
				}
				this.state = 2332;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === MySqlParser.COMMA);
			this.state = 2334;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public subpartitionDefinition(): SubpartitionDefinitionContext {
		let _localctx: SubpartitionDefinitionContext = new SubpartitionDefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 116, MySqlParser.RULE_subpartitionDefinition);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2336;
			this.match(MySqlParser.KW_SUBPARTITION);
			this.state = 2337;
			_localctx._logicalName = this.uid();
			this.state = 2341;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_DATA || _la === MySqlParser.KW_ENGINE || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & ((1 << (MySqlParser.KW_MAX_ROWS - 480)) | (1 << (MySqlParser.KW_MIN_ROWS - 480)) | (1 << (MySqlParser.KW_NODEGROUP - 480)))) !== 0) || _la === MySqlParser.KW_STORAGE || _la === MySqlParser.KW_TABLESPACE) {
				{
				{
				this.state = 2338;
				this.partitionOption();
				}
				}
				this.state = 2343;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionOption(): PartitionOptionContext {
		let _localctx: PartitionOptionContext = new PartitionOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 118, MySqlParser.RULE_partitionOption);
		let _la: number;
		try {
			this.state = 2392;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_STORAGE:
				_localctx = new PartitionOptionEngineContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2345;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 2344;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 2348;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_STORAGE) {
					{
					this.state = 2347;
					this.match(MySqlParser.KW_STORAGE);
					}
				}

				this.state = 2350;
				this.match(MySqlParser.KW_ENGINE);
				this.state = 2352;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2351;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2354;
				this.engineName();
				}
				break;
			case MySqlParser.KW_COMMENT:
				_localctx = new PartitionOptionCommentContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2355;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 2357;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2356;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2359;
				(_localctx as PartitionOptionCommentContext)._comment = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_DATA:
				_localctx = new PartitionOptionDataDirectoryContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2360;
				this.match(MySqlParser.KW_DATA);
				this.state = 2361;
				this.match(MySqlParser.KW_DIRECTORY);
				this.state = 2363;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2362;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2365;
				(_localctx as PartitionOptionDataDirectoryContext)._dataDirectory = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_INDEX:
				_localctx = new PartitionOptionIndexDirectoryContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2366;
				this.match(MySqlParser.KW_INDEX);
				this.state = 2367;
				this.match(MySqlParser.KW_DIRECTORY);
				this.state = 2369;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2368;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2371;
				(_localctx as PartitionOptionIndexDirectoryContext)._indexDirectory = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_MAX_ROWS:
				_localctx = new PartitionOptionMaxRowsContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2372;
				this.match(MySqlParser.KW_MAX_ROWS);
				this.state = 2374;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2373;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2376;
				(_localctx as PartitionOptionMaxRowsContext)._maxRows = this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_MIN_ROWS:
				_localctx = new PartitionOptionMinRowsContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2377;
				this.match(MySqlParser.KW_MIN_ROWS);
				this.state = 2379;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2378;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2381;
				(_localctx as PartitionOptionMinRowsContext)._minRows = this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_TABLESPACE:
				_localctx = new PartitionOptionTablespaceContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2382;
				this.match(MySqlParser.KW_TABLESPACE);
				this.state = 2384;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2383;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2386;
				this.tablespaceName();
				}
				break;
			case MySqlParser.KW_NODEGROUP:
				_localctx = new PartitionOptionNodeGroupContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2387;
				this.match(MySqlParser.KW_NODEGROUP);
				this.state = 2389;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2388;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2391;
				(_localctx as PartitionOptionNodeGroupContext)._nodegroup = this.uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDatabase(): AlterDatabaseContext {
		let _localctx: AlterDatabaseContext = new AlterDatabaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 120, MySqlParser.RULE_alterDatabase);
		let _la: number;
		try {
			this.state = 2412;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 264, this._ctx) ) {
			case 1:
				_localctx = new AlterSimpleDatabaseContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2394;
				this.match(MySqlParser.KW_ALTER);
				this.state = 2395;
				(_localctx as AlterSimpleDatabaseContext)._dbFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DATABASE || _la === MySqlParser.KW_SCHEMA)) {
					(_localctx as AlterSimpleDatabaseContext)._dbFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2397;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 262, this._ctx) ) {
				case 1:
					{
					this.state = 2396;
					this.databaseName();
					}
					break;
				}
				this.state = 2400;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 2399;
					this.createDatabaseOption();
					}
					}
					this.state = 2402;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & ((1 << (MySqlParser.KW_CHARACTER - 26)) | (1 << (MySqlParser.KW_COLLATE - 26)) | (1 << (MySqlParser.KW_DEFAULT - 26)))) !== 0) || _la === MySqlParser.KW_READ || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_ENCRYPTION || _la === MySqlParser.KW_CHARSET);
				}
				break;

			case 2:
				_localctx = new AlterUpgradeNameContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2404;
				this.match(MySqlParser.KW_ALTER);
				this.state = 2405;
				(_localctx as AlterUpgradeNameContext)._dbFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DATABASE || _la === MySqlParser.KW_SCHEMA)) {
					(_localctx as AlterUpgradeNameContext)._dbFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2406;
				this.databaseName();
				this.state = 2407;
				this.match(MySqlParser.KW_UPGRADE);
				this.state = 2408;
				this.match(MySqlParser.KW_DATA);
				this.state = 2409;
				this.match(MySqlParser.KW_DIRECTORY);
				this.state = 2410;
				this.match(MySqlParser.KW_NAME);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterEvent(): AlterEventContext {
		let _localctx: AlterEventContext = new AlterEventContext(this._ctx, this.state);
		this.enterRule(_localctx, 122, MySqlParser.RULE_alterEvent);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2414;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2416;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFINER) {
				{
				this.state = 2415;
				this.ownerStatement();
				}
			}

			this.state = 2418;
			this.match(MySqlParser.KW_EVENT);
			this.state = 2419;
			_localctx._event_name = this.fullId();
			this.state = 2423;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 266, this._ctx) ) {
			case 1:
				{
				this.state = 2420;
				this.match(MySqlParser.KW_ON);
				this.state = 2421;
				this.match(MySqlParser.KW_SCHEDULE);
				this.state = 2422;
				this.scheduleExpression();
				}
				break;
			}
			this.state = 2431;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ON) {
				{
				this.state = 2425;
				this.match(MySqlParser.KW_ON);
				this.state = 2426;
				this.match(MySqlParser.KW_COMPLETION);
				this.state = 2428;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 2427;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 2430;
				this.match(MySqlParser.KW_PRESERVE);
				}
			}

			this.state = 2436;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 269, this._ctx) ) {
			case 1:
				{
				this.state = 2433;
				this.match(MySqlParser.KW_RENAME);
				this.state = 2434;
				this.match(MySqlParser.KW_TO);
				this.state = 2435;
				_localctx._new_event_name = this.fullId();
				}
				break;
			}
			this.state = 2439;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE) {
				{
				this.state = 2438;
				this.enableType();
				}
			}

			this.state = 2443;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_COMMENT) {
				{
				this.state = 2441;
				this.match(MySqlParser.KW_COMMENT);
				this.state = 2442;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 2447;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 272, this._ctx) ) {
			case 1:
				{
				this.state = 2445;
				this.match(MySqlParser.KW_DO);
				this.state = 2446;
				this.routineBody();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterFunction(): AlterFunctionContext {
		let _localctx: AlterFunctionContext = new AlterFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 124, MySqlParser.RULE_alterFunction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2449;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2450;
			this.match(MySqlParser.KW_FUNCTION);
			this.state = 2451;
			this.functionName();
			this.state = 2455;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_DETERMINISTIC || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (MySqlParser.KW_MODIFIES - 112)) | (1 << (MySqlParser.KW_NOT - 112)) | (1 << (MySqlParser.KW_READS - 112)))) !== 0) || _la === MySqlParser.KW_SQL || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_CONTAINS || _la === MySqlParser.KW_LANGUAGE || _la === MySqlParser.KW_NO) {
				{
				{
				this.state = 2452;
				this.routineOption();
				}
				}
				this.state = 2457;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterInstance(): AlterInstanceContext {
		let _localctx: AlterInstanceContext = new AlterInstanceContext(this._ctx, this.state);
		this.enterRule(_localctx, 126, MySqlParser.RULE_alterInstance);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2458;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2459;
			this.match(MySqlParser.KW_INSTANCE);
			this.state = 2460;
			this.match(MySqlParser.KW_ROTATE);
			this.state = 2461;
			this.match(MySqlParser.KW_INNODB);
			this.state = 2462;
			this.match(MySqlParser.KW_MASTER);
			this.state = 2463;
			this.match(MySqlParser.KW_KEY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterLogfileGroup(): AlterLogfileGroupContext {
		let _localctx: AlterLogfileGroupContext = new AlterLogfileGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 128, MySqlParser.RULE_alterLogfileGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2465;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2466;
			this.match(MySqlParser.KW_LOGFILE);
			this.state = 2467;
			this.match(MySqlParser.KW_GROUP);
			this.state = 2468;
			_localctx._logfileGroupName = this.uid();
			this.state = 2469;
			this.match(MySqlParser.KW_ADD);
			this.state = 2470;
			this.match(MySqlParser.KW_UNDOFILE);
			this.state = 2471;
			this.match(MySqlParser.STRING_LITERAL);
			this.state = 2477;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INITIAL_SIZE) {
				{
				this.state = 2472;
				this.match(MySqlParser.KW_INITIAL_SIZE);
				this.state = 2474;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2473;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2476;
				this.fileSizeLiteral();
				}
			}

			this.state = 2480;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WAIT) {
				{
				this.state = 2479;
				this.match(MySqlParser.KW_WAIT);
				}
			}

			this.state = 2482;
			this.match(MySqlParser.KW_ENGINE);
			this.state = 2484;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.EQUAL_SYMBOL) {
				{
				this.state = 2483;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 2486;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterProcedure(): AlterProcedureContext {
		let _localctx: AlterProcedureContext = new AlterProcedureContext(this._ctx, this.state);
		this.enterRule(_localctx, 130, MySqlParser.RULE_alterProcedure);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2488;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2489;
			this.match(MySqlParser.KW_PROCEDURE);
			this.state = 2490;
			_localctx._proc_name = this.fullId();
			this.state = 2494;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_DETERMINISTIC || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (MySqlParser.KW_MODIFIES - 112)) | (1 << (MySqlParser.KW_NOT - 112)) | (1 << (MySqlParser.KW_READS - 112)))) !== 0) || _la === MySqlParser.KW_SQL || _la === MySqlParser.KW_COMMENT || _la === MySqlParser.KW_CONTAINS || _la === MySqlParser.KW_LANGUAGE || _la === MySqlParser.KW_NO) {
				{
				{
				this.state = 2491;
				this.routineOption();
				}
				}
				this.state = 2496;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterServer(): AlterServerContext {
		let _localctx: AlterServerContext = new AlterServerContext(this._ctx, this.state);
		this.enterRule(_localctx, 132, MySqlParser.RULE_alterServer);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2497;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2498;
			this.match(MySqlParser.KW_SERVER);
			this.state = 2499;
			_localctx._serverName = this.uid();
			this.state = 2500;
			this.match(MySqlParser.KW_OPTIONS);
			this.state = 2501;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 2502;
			this.serverOption();
			this.state = 2507;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 2503;
				this.match(MySqlParser.COMMA);
				this.state = 2504;
				this.serverOption();
				}
				}
				this.state = 2509;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2510;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterTable(): AlterTableContext {
		let _localctx: AlterTableContext = new AlterTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 134, MySqlParser.RULE_alterTable);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2512;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2513;
			this.match(MySqlParser.KW_TABLE);
			this.state = 2514;
			this.tableName();
			this.state = 2523;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 281, this._ctx) ) {
			case 1:
				{
				this.state = 2515;
				this.alterOption();
				this.state = 2520;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2516;
					this.match(MySqlParser.COMMA);
					this.state = 2517;
					this.alterOption();
					}
					}
					this.state = 2522;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			this.state = 2532;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 283, this._ctx) ) {
			case 1:
				{
				this.state = 2525;
				this.alterPartitionSpecification();
				this.state = 2529;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 282, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2526;
						this.alterPartitionSpecification();
						}
						}
					}
					this.state = 2531;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 282, this._ctx);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterTablespace(): AlterTablespaceContext {
		let _localctx: AlterTablespaceContext = new AlterTablespaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 136, MySqlParser.RULE_alterTablespace);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2534;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2536;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_UNDO) {
				{
				this.state = 2535;
				this.match(MySqlParser.KW_UNDO);
				}
			}

			this.state = 2538;
			this.match(MySqlParser.KW_TABLESPACE);
			this.state = 2539;
			this.tablespaceName();
			this.state = 2540;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_ADD || _la === MySqlParser.KW_DROP)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 2541;
			this.match(MySqlParser.KW_DATAFILE);
			this.state = 2542;
			this.match(MySqlParser.STRING_LITERAL);
			this.state = 2548;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INITIAL_SIZE) {
				{
				this.state = 2543;
				this.match(MySqlParser.KW_INITIAL_SIZE);
				this.state = 2545;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2544;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2547;
				this.fileSizeLiteral();
				}
			}

			this.state = 2551;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WAIT) {
				{
				this.state = 2550;
				this.match(MySqlParser.KW_WAIT);
				}
			}

			this.state = 2556;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 288, this._ctx) ) {
			case 1:
				{
				this.state = 2553;
				this.match(MySqlParser.KW_RENAME);
				this.state = 2554;
				this.match(MySqlParser.KW_TO);
				this.state = 2555;
				this.tablespaceNameCreate();
				}
				break;
			}
			this.state = 2563;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AUTOEXTEND_SIZE) {
				{
				this.state = 2558;
				this.match(MySqlParser.KW_AUTOEXTEND_SIZE);
				this.state = 2560;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2559;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2562;
				this.fileSizeLiteral();
				}
			}

			this.state = 2567;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 291, this._ctx) ) {
			case 1:
				{
				this.state = 2565;
				this.match(MySqlParser.KW_SET);
				this.state = 2566;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ACTIVE || _la === MySqlParser.KW_INACTIVE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
			this.state = 2574;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ENCRYPTION) {
				{
				this.state = 2569;
				this.match(MySqlParser.KW_ENCRYPTION);
				this.state = 2571;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2570;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2573;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 2581;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ENGINE) {
				{
				this.state = 2576;
				this.match(MySqlParser.KW_ENGINE);
				this.state = 2578;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2577;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2580;
				this.engineName();
				}
			}

			this.state = 2588;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ENGINE_ATTRIBUTE) {
				{
				this.state = 2583;
				this.match(MySqlParser.KW_ENGINE_ATTRIBUTE);
				this.state = 2585;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2584;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2587;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterView(): AlterViewContext {
		let _localctx: AlterViewContext = new AlterViewContext(this._ctx, this.state);
		this.enterRule(_localctx, 138, MySqlParser.RULE_alterView);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2590;
			this.match(MySqlParser.KW_ALTER);
			this.state = 2594;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ALGORITHM) {
				{
				this.state = 2591;
				this.match(MySqlParser.KW_ALGORITHM);
				this.state = 2592;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 2593;
				_localctx._algType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_MERGE || _la === MySqlParser.KW_TEMPTABLE || _la === MySqlParser.KW_UNDEFINED)) {
					_localctx._algType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 2597;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFINER) {
				{
				this.state = 2596;
				this.ownerStatement();
				}
			}

			this.state = 2602;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_SQL) {
				{
				this.state = 2599;
				this.match(MySqlParser.KW_SQL);
				this.state = 2600;
				this.match(MySqlParser.KW_SECURITY);
				this.state = 2601;
				_localctx._secContext = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFINER || _la === MySqlParser.KW_INVOKER)) {
					_localctx._secContext = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 2604;
			this.match(MySqlParser.KW_VIEW);
			this.state = 2605;
			this.viewName();
			this.state = 2610;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.LR_BRACKET) {
				{
				this.state = 2606;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2607;
				this.columnNames();
				this.state = 2608;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 2612;
			this.match(MySqlParser.KW_AS);
			this.state = 2613;
			this.selectStatement();
			this.state = 2620;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 303, this._ctx) ) {
			case 1:
				{
				this.state = 2614;
				this.match(MySqlParser.KW_WITH);
				this.state = 2616;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CASCADED || _la === MySqlParser.KW_LOCAL) {
					{
					this.state = 2615;
					_localctx._checkOpt = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_CASCADED || _la === MySqlParser.KW_LOCAL)) {
						_localctx._checkOpt = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 2618;
				this.match(MySqlParser.KW_CHECK);
				this.state = 2619;
				this.match(MySqlParser.KW_OPTION);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterOption(): AlterOptionContext {
		let _localctx: AlterOptionContext = new AlterOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 140, MySqlParser.RULE_alterOption);
		let _la: number;
		try {
			let _alt: number;
			this.state = 2886;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 347, this._ctx) ) {
			case 1:
				_localctx = new AlterByTableOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2622;
				this.tableOption();
				this.state = 2629;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 305, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2624;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.COMMA) {
							{
							this.state = 2623;
							this.match(MySqlParser.COMMA);
							}
						}

						this.state = 2626;
						this.tableOption();
						}
						}
					}
					this.state = 2631;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 305, this._ctx);
				}
				}
				break;

			case 2:
				_localctx = new AlterByAddColumnContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2632;
				this.match(MySqlParser.KW_ADD);
				this.state = 2634;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 306, this._ctx) ) {
				case 1:
					{
					this.state = 2633;
					this.match(MySqlParser.KW_COLUMN);
					}
					break;
				}
				this.state = 2636;
				this.columnName();
				this.state = 2637;
				this.columnDefinition();
				this.state = 2641;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_FIRST:
					{
					this.state = 2638;
					this.match(MySqlParser.KW_FIRST);
					}
					break;
				case MySqlParser.KW_AFTER:
					{
					this.state = 2639;
					this.match(MySqlParser.KW_AFTER);
					this.state = 2640;
					this.columnName();
					}
					break;
				case MySqlParser.EOF:
				case MySqlParser.KW_ADD:
				case MySqlParser.KW_ALTER:
				case MySqlParser.KW_ANALYZE:
				case MySqlParser.KW_CALL:
				case MySqlParser.KW_CHANGE:
				case MySqlParser.KW_CHECK:
				case MySqlParser.KW_CREATE:
				case MySqlParser.KW_DELETE:
				case MySqlParser.KW_DESC:
				case MySqlParser.KW_DESCRIBE:
				case MySqlParser.KW_DROP:
				case MySqlParser.KW_EXPLAIN:
				case MySqlParser.KW_GET:
				case MySqlParser.KW_GRANT:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_KILL:
				case MySqlParser.KW_LOAD:
				case MySqlParser.KW_LOCK:
				case MySqlParser.KW_OPTIMIZE:
				case MySqlParser.KW_PURGE:
				case MySqlParser.KW_RELEASE:
				case MySqlParser.KW_RENAME:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RESIGNAL:
				case MySqlParser.KW_REVOKE:
				case MySqlParser.KW_SELECT:
				case MySqlParser.KW_SET:
				case MySqlParser.KW_SHOW:
				case MySqlParser.KW_SIGNAL:
				case MySqlParser.KW_TABLE:
				case MySqlParser.KW_UNLOCK:
				case MySqlParser.KW_UPDATE:
				case MySqlParser.KW_USE:
				case MySqlParser.KW_VALUES:
				case MySqlParser.KW_WITH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESTART:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_CLONE:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.LR_BRACKET:
				case MySqlParser.COMMA:
				case MySqlParser.SEMI:
					break;
				default:
					break;
				}
				}
				break;

			case 3:
				_localctx = new AlterByAddColumnsContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2643;
				this.match(MySqlParser.KW_ADD);
				this.state = 2645;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_COLUMN) {
					{
					this.state = 2644;
					this.match(MySqlParser.KW_COLUMN);
					}
				}

				this.state = 2647;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2648;
				this.columnName();
				this.state = 2649;
				this.columnDefinition();
				this.state = 2656;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2650;
					this.match(MySqlParser.COMMA);
					this.state = 2651;
					this.columnName();
					this.state = 2652;
					this.columnDefinition();
					}
					}
					this.state = 2658;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2659;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 4:
				_localctx = new AlterByAddIndexContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2661;
				this.match(MySqlParser.KW_ADD);
				this.state = 2662;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2664;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 2663;
					this.indexName();
					}
				}

				this.state = 2667;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 2666;
					this.indexType();
					}
				}

				this.state = 2669;
				this.indexColumnNames();
				this.state = 2673;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 312, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2670;
						this.indexOption();
						}
						}
					}
					this.state = 2675;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 312, this._ctx);
				}
				}
				break;

			case 5:
				_localctx = new AlterByAddSpecialIndexContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2676;
				this.match(MySqlParser.KW_ADD);
				this.state = 2677;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FULLTEXT || _la === MySqlParser.KW_SPATIAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2679;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY) {
					{
					this.state = 2678;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 2682;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 2681;
					this.indexName();
					}
				}

				this.state = 2684;
				this.indexColumnNames();
				this.state = 2688;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 315, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2685;
						this.indexOption();
						}
						}
					}
					this.state = 2690;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 315, this._ctx);
				}
				}
				break;

			case 6:
				_localctx = new AlterByAddPrimaryKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2691;
				this.match(MySqlParser.KW_ADD);
				this.state = 2696;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CONSTRAINT) {
					{
					this.state = 2692;
					this.match(MySqlParser.KW_CONSTRAINT);
					this.state = 2694;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 316, this._ctx) ) {
					case 1:
						{
						this.state = 2693;
						(_localctx as AlterByAddPrimaryKeyContext)._symbol = this.uid();
						}
						break;
					}
					}
				}

				this.state = 2698;
				this.match(MySqlParser.KW_PRIMARY);
				this.state = 2699;
				this.match(MySqlParser.KW_KEY);
				this.state = 2701;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 2700;
					this.indexType();
					}
				}

				this.state = 2703;
				this.indexColumnNames();
				this.state = 2707;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 319, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2704;
						this.indexOption();
						}
						}
					}
					this.state = 2709;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 319, this._ctx);
				}
				}
				break;

			case 7:
				_localctx = new AlterByAddUniqueKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2710;
				this.match(MySqlParser.KW_ADD);
				this.state = 2715;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CONSTRAINT) {
					{
					this.state = 2711;
					this.match(MySqlParser.KW_CONSTRAINT);
					this.state = 2713;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
						{
						this.state = 2712;
						(_localctx as AlterByAddUniqueKeyContext)._symbol = this.uid();
						}
					}

					}
				}

				this.state = 2717;
				this.match(MySqlParser.KW_UNIQUE);
				this.state = 2719;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY) {
					{
					this.state = 2718;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 2722;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 2721;
					this.indexName();
					}
				}

				this.state = 2725;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 2724;
					this.indexType();
					}
				}

				this.state = 2727;
				this.indexColumnNames();
				this.state = 2731;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 325, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2728;
						this.indexOption();
						}
						}
					}
					this.state = 2733;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 325, this._ctx);
				}
				}
				break;

			case 8:
				_localctx = new AlterByAddForeignKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2734;
				this.match(MySqlParser.KW_ADD);
				this.state = 2739;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CONSTRAINT) {
					{
					this.state = 2735;
					this.match(MySqlParser.KW_CONSTRAINT);
					this.state = 2737;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
						{
						this.state = 2736;
						(_localctx as AlterByAddForeignKeyContext)._symbol = this.uid();
						}
					}

					}
				}

				this.state = 2741;
				this.match(MySqlParser.KW_FOREIGN);
				this.state = 2742;
				this.match(MySqlParser.KW_KEY);
				this.state = 2744;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 2743;
					this.indexName();
					}
				}

				this.state = 2746;
				this.indexColumnNames();
				this.state = 2747;
				this.referenceDefinition();
				}
				break;

			case 9:
				_localctx = new AlterByAddCheckTableConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2749;
				this.match(MySqlParser.KW_ADD);
				this.state = 2751;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 329, this._ctx) ) {
				case 1:
					{
					this.state = 2750;
					this.checkConstraintDefinition();
					}
					break;
				}
				}
				break;

			case 10:
				_localctx = new AlterByDropConstraintCheckContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2753;
				this.match(MySqlParser.KW_DROP);
				this.state = 2754;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CHECK || _la === MySqlParser.KW_CONSTRAINT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2755;
				(_localctx as AlterByDropConstraintCheckContext)._symbol = this.uid();
				}
				break;

			case 11:
				_localctx = new AlterByAlterCheckTableConstraintContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 2756;
				this.match(MySqlParser.KW_ALTER);
				this.state = 2757;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CHECK || _la === MySqlParser.KW_CONSTRAINT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2758;
				(_localctx as AlterByAlterCheckTableConstraintContext)._symbol = this.uid();
				this.state = 2760;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 2759;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 2763;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ENFORCED) {
					{
					this.state = 2762;
					this.match(MySqlParser.KW_ENFORCED);
					}
				}

				}
				break;

			case 12:
				_localctx = new AlterBySetAlgorithmContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 2765;
				this.match(MySqlParser.KW_ALGORITHM);
				this.state = 2767;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2766;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2769;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_COPY || _la === MySqlParser.KW_INPLACE || _la === MySqlParser.KW_INSTANT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 13:
				_localctx = new AlterByAlterColumnDefaultContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 2770;
				this.match(MySqlParser.KW_ALTER);
				this.state = 2772;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 333, this._ctx) ) {
				case 1:
					{
					this.state = 2771;
					this.match(MySqlParser.KW_COLUMN);
					}
					break;
				}
				this.state = 2774;
				this.columnName();
				this.state = 2782;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 334, this._ctx) ) {
				case 1:
					{
					this.state = 2775;
					this.match(MySqlParser.KW_SET);
					this.state = 2776;
					this.match(MySqlParser.KW_DEFAULT);
					this.state = 2777;
					this.defaultValue();
					}
					break;

				case 2:
					{
					this.state = 2778;
					this.match(MySqlParser.KW_SET);
					this.state = 2779;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_VISIBLE)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					break;

				case 3:
					{
					this.state = 2780;
					this.match(MySqlParser.KW_DROP);
					this.state = 2781;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				}
				}
				break;

			case 14:
				_localctx = new AlterByAlterIndexVisibilityContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 2784;
				this.match(MySqlParser.KW_ALTER);
				this.state = 2785;
				this.match(MySqlParser.KW_INDEX);
				this.state = 2786;
				this.indexName();
				this.state = 2787;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INVISIBLE || _la === MySqlParser.KW_VISIBLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 15:
				_localctx = new AlterByChangeColumnContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 2789;
				this.match(MySqlParser.KW_CHANGE);
				this.state = 2791;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 335, this._ctx) ) {
				case 1:
					{
					this.state = 2790;
					this.match(MySqlParser.KW_COLUMN);
					}
					break;
				}
				this.state = 2793;
				(_localctx as AlterByChangeColumnContext)._oldColumn = this.columnName();
				this.state = 2794;
				(_localctx as AlterByChangeColumnContext)._newColumn = this.columnNameCreate();
				this.state = 2795;
				this.columnDefinition();
				this.state = 2799;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_FIRST:
					{
					this.state = 2796;
					this.match(MySqlParser.KW_FIRST);
					}
					break;
				case MySqlParser.KW_AFTER:
					{
					this.state = 2797;
					this.match(MySqlParser.KW_AFTER);
					this.state = 2798;
					this.columnName();
					}
					break;
				case MySqlParser.EOF:
				case MySqlParser.KW_ADD:
				case MySqlParser.KW_ALTER:
				case MySqlParser.KW_ANALYZE:
				case MySqlParser.KW_CALL:
				case MySqlParser.KW_CHANGE:
				case MySqlParser.KW_CHECK:
				case MySqlParser.KW_CREATE:
				case MySqlParser.KW_DELETE:
				case MySqlParser.KW_DESC:
				case MySqlParser.KW_DESCRIBE:
				case MySqlParser.KW_DROP:
				case MySqlParser.KW_EXPLAIN:
				case MySqlParser.KW_GET:
				case MySqlParser.KW_GRANT:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_KILL:
				case MySqlParser.KW_LOAD:
				case MySqlParser.KW_LOCK:
				case MySqlParser.KW_OPTIMIZE:
				case MySqlParser.KW_PURGE:
				case MySqlParser.KW_RELEASE:
				case MySqlParser.KW_RENAME:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RESIGNAL:
				case MySqlParser.KW_REVOKE:
				case MySqlParser.KW_SELECT:
				case MySqlParser.KW_SET:
				case MySqlParser.KW_SHOW:
				case MySqlParser.KW_SIGNAL:
				case MySqlParser.KW_TABLE:
				case MySqlParser.KW_UNLOCK:
				case MySqlParser.KW_UPDATE:
				case MySqlParser.KW_USE:
				case MySqlParser.KW_VALUES:
				case MySqlParser.KW_WITH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESTART:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_CLONE:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.LR_BRACKET:
				case MySqlParser.COMMA:
				case MySqlParser.SEMI:
					break;
				default:
					break;
				}
				}
				break;

			case 16:
				_localctx = new AlterByDefaultCharsetContext(_localctx);
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 2802;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT) {
					{
					this.state = 2801;
					this.match(MySqlParser.KW_DEFAULT);
					}
				}

				this.state = 2804;
				this.match(MySqlParser.KW_CHARACTER);
				this.state = 2805;
				this.match(MySqlParser.KW_SET);
				this.state = 2806;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 2807;
				this.charsetName();
				this.state = 2813;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_COLLATE) {
					{
					this.state = 2808;
					this.match(MySqlParser.KW_COLLATE);
					this.state = 2810;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.EQUAL_SYMBOL) {
						{
						this.state = 2809;
						this.match(MySqlParser.EQUAL_SYMBOL);
						}
					}

					this.state = 2812;
					this.collationName();
					}
				}

				}
				break;

			case 17:
				_localctx = new AlterByConvertCharsetContext(_localctx);
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 2815;
				this.match(MySqlParser.KW_CONVERT);
				this.state = 2816;
				this.match(MySqlParser.KW_TO);
				this.state = 2820;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_CHARSET:
					{
					this.state = 2817;
					this.match(MySqlParser.KW_CHARSET);
					}
					break;
				case MySqlParser.KW_CHARACTER:
					{
					this.state = 2818;
					this.match(MySqlParser.KW_CHARACTER);
					this.state = 2819;
					this.match(MySqlParser.KW_SET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2822;
				this.charsetName();
				this.state = 2825;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_COLLATE) {
					{
					this.state = 2823;
					this.match(MySqlParser.KW_COLLATE);
					this.state = 2824;
					this.collationName();
					}
				}

				}
				break;

			case 18:
				_localctx = new AlterKeysContext(_localctx);
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 2827;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2828;
				this.match(MySqlParser.KW_KEYS);
				}
				break;

			case 19:
				_localctx = new AlterTablespaceOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 2829;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DISCARD || _la === MySqlParser.KW_IMPORT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2830;
				this.match(MySqlParser.KW_TABLESPACE);
				}
				break;

			case 20:
				_localctx = new AlterByDropColumnContext(_localctx);
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 2831;
				this.match(MySqlParser.KW_DROP);
				this.state = 2833;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 342, this._ctx) ) {
				case 1:
					{
					this.state = 2832;
					this.match(MySqlParser.KW_COLUMN);
					}
					break;
				}
				this.state = 2835;
				this.columnName();
				}
				break;

			case 21:
				_localctx = new AlterByDropIndexContext(_localctx);
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 2836;
				this.match(MySqlParser.KW_DROP);
				this.state = 2837;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2838;
				this.indexName();
				}
				break;

			case 22:
				_localctx = new AlterByDropPrimaryKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 2839;
				this.match(MySqlParser.KW_DROP);
				this.state = 2840;
				this.match(MySqlParser.KW_PRIMARY);
				this.state = 2841;
				this.match(MySqlParser.KW_KEY);
				}
				break;

			case 23:
				_localctx = new AlterByDropForeignKeyContext(_localctx);
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 2842;
				this.match(MySqlParser.KW_DROP);
				this.state = 2843;
				this.match(MySqlParser.KW_FOREIGN);
				this.state = 2844;
				this.match(MySqlParser.KW_KEY);
				this.state = 2845;
				(_localctx as AlterByDropForeignKeyContext)._fk_symbol = this.uid();
				}
				break;

			case 24:
				_localctx = new AlterByForceContext(_localctx);
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 2846;
				this.match(MySqlParser.KW_FORCE);
				}
				break;

			case 25:
				_localctx = new AlterByLockContext(_localctx);
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 2847;
				this.match(MySqlParser.KW_LOCK);
				this.state = 2849;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 2848;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2851;
				(_localctx as AlterByLockContext)._lockType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_EXCLUSIVE || _la === MySqlParser.KW_NONE || _la === MySqlParser.KW_SHARED)) {
					(_localctx as AlterByLockContext)._lockType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 26:
				_localctx = new AlterByModifyColumnContext(_localctx);
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 2852;
				this.match(MySqlParser.KW_MODIFY);
				this.state = 2854;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 344, this._ctx) ) {
				case 1:
					{
					this.state = 2853;
					this.match(MySqlParser.KW_COLUMN);
					}
					break;
				}
				this.state = 2856;
				this.columnName();
				this.state = 2857;
				this.columnDefinition();
				this.state = 2861;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_FIRST:
					{
					this.state = 2858;
					this.match(MySqlParser.KW_FIRST);
					}
					break;
				case MySqlParser.KW_AFTER:
					{
					this.state = 2859;
					this.match(MySqlParser.KW_AFTER);
					this.state = 2860;
					this.columnName();
					}
					break;
				case MySqlParser.EOF:
				case MySqlParser.KW_ADD:
				case MySqlParser.KW_ALTER:
				case MySqlParser.KW_ANALYZE:
				case MySqlParser.KW_CALL:
				case MySqlParser.KW_CHANGE:
				case MySqlParser.KW_CHECK:
				case MySqlParser.KW_CREATE:
				case MySqlParser.KW_DELETE:
				case MySqlParser.KW_DESC:
				case MySqlParser.KW_DESCRIBE:
				case MySqlParser.KW_DROP:
				case MySqlParser.KW_EXPLAIN:
				case MySqlParser.KW_GET:
				case MySqlParser.KW_GRANT:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_KILL:
				case MySqlParser.KW_LOAD:
				case MySqlParser.KW_LOCK:
				case MySqlParser.KW_OPTIMIZE:
				case MySqlParser.KW_PURGE:
				case MySqlParser.KW_RELEASE:
				case MySqlParser.KW_RENAME:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RESIGNAL:
				case MySqlParser.KW_REVOKE:
				case MySqlParser.KW_SELECT:
				case MySqlParser.KW_SET:
				case MySqlParser.KW_SHOW:
				case MySqlParser.KW_SIGNAL:
				case MySqlParser.KW_TABLE:
				case MySqlParser.KW_UNLOCK:
				case MySqlParser.KW_UPDATE:
				case MySqlParser.KW_USE:
				case MySqlParser.KW_VALUES:
				case MySqlParser.KW_WITH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESTART:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_CLONE:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.LR_BRACKET:
				case MySqlParser.COMMA:
				case MySqlParser.SEMI:
					break;
				default:
					break;
				}
				}
				break;

			case 27:
				_localctx = new AlterByOrderContext(_localctx);
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 2863;
				this.match(MySqlParser.KW_ORDER);
				this.state = 2864;
				this.match(MySqlParser.KW_BY);
				this.state = 2865;
				this.columnNames();
				}
				break;

			case 28:
				_localctx = new AlterByRenameColumnContext(_localctx);
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 2866;
				this.match(MySqlParser.KW_RENAME);
				this.state = 2867;
				this.match(MySqlParser.KW_COLUMN);
				this.state = 2868;
				(_localctx as AlterByRenameColumnContext)._olcdColumn = this.columnName();
				this.state = 2869;
				this.match(MySqlParser.KW_TO);
				this.state = 2870;
				(_localctx as AlterByRenameColumnContext)._newColumn = this.columnNameCreate();
				}
				break;

			case 29:
				_localctx = new AlterByRenameIndexContext(_localctx);
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 2872;
				this.match(MySqlParser.KW_RENAME);
				this.state = 2873;
				(_localctx as AlterByRenameIndexContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
					(_localctx as AlterByRenameIndexContext)._indexFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2874;
				this.indexName();
				this.state = 2875;
				this.match(MySqlParser.KW_TO);
				this.state = 2876;
				this.indexNameCreate();
				}
				break;

			case 30:
				_localctx = new AlterByRenameContext(_localctx);
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 2878;
				this.match(MySqlParser.KW_RENAME);
				this.state = 2880;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS || _la === MySqlParser.KW_TO) {
					{
					this.state = 2879;
					(_localctx as AlterByRenameContext)._renameFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_AS || _la === MySqlParser.KW_TO)) {
						(_localctx as AlterByRenameContext)._renameFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 2882;
				this.tableNameCreate();
				}
				break;

			case 31:
				_localctx = new AlterByValidateContext(_localctx);
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 2883;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_WITH || _la === MySqlParser.KW_WITHOUT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2884;
				this.match(MySqlParser.KW_VALIDATION);
				}
				break;

			case 32:
				_localctx = new AlterPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 2885;
				this.alterPartitionSpecification();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterPartitionSpecification(): AlterPartitionSpecificationContext {
		let _localctx: AlterPartitionSpecificationContext = new AlterPartitionSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 142, MySqlParser.RULE_alterPartitionSpecification);
		let _la: number;
		try {
			this.state = 2986;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ADD:
				_localctx = new AlterByAddPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2888;
				this.match(MySqlParser.KW_ADD);
				this.state = 2889;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2890;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2891;
				this.partitionDefinition();
				this.state = 2896;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2892;
					this.match(MySqlParser.COMMA);
					this.state = 2893;
					this.partitionDefinition();
					}
					}
					this.state = 2898;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2899;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_DROP:
				_localctx = new AlterByDropPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2901;
				this.match(MySqlParser.KW_DROP);
				this.state = 2902;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2903;
				this.partitionNames();
				}
				break;
			case MySqlParser.KW_DISCARD:
				_localctx = new AlterByDiscardPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2904;
				this.match(MySqlParser.KW_DISCARD);
				this.state = 2905;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2908;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2906;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2907;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2910;
				this.match(MySqlParser.KW_TABLESPACE);
				}
				break;
			case MySqlParser.KW_IMPORT:
				_localctx = new AlterByImportPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2911;
				this.match(MySqlParser.KW_IMPORT);
				this.state = 2912;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2915;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2913;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2914;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2917;
				this.match(MySqlParser.KW_TABLESPACE);
				}
				break;
			case MySqlParser.KW_TRUNCATE:
				_localctx = new AlterByTruncatePartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2918;
				this.match(MySqlParser.KW_TRUNCATE);
				this.state = 2919;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2922;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2920;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2921;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_COALESCE:
				_localctx = new AlterByCoalescePartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2924;
				this.match(MySqlParser.KW_COALESCE);
				this.state = 2925;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2926;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_REORGANIZE:
				_localctx = new AlterByReorganizePartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2927;
				this.match(MySqlParser.KW_REORGANIZE);
				this.state = 2928;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2929;
				this.partitionNames();
				this.state = 2930;
				this.match(MySqlParser.KW_INTO);
				this.state = 2931;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 2932;
				this.partitionDefinition();
				this.state = 2937;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 2933;
					this.match(MySqlParser.COMMA);
					this.state = 2934;
					this.partitionDefinition();
					}
					}
					this.state = 2939;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2940;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_EXCHANGE:
				_localctx = new AlterByExchangePartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2942;
				this.match(MySqlParser.KW_EXCHANGE);
				this.state = 2943;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2944;
				this.partitionName();
				this.state = 2945;
				this.match(MySqlParser.KW_WITH);
				this.state = 2946;
				this.match(MySqlParser.KW_TABLE);
				this.state = 2947;
				this.tableName();
				this.state = 2950;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 353, this._ctx) ) {
				case 1:
					{
					this.state = 2948;
					(_localctx as AlterByExchangePartitionContext)._validationFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_WITH || _la === MySqlParser.KW_WITHOUT)) {
						(_localctx as AlterByExchangePartitionContext)._validationFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 2949;
					this.match(MySqlParser.KW_VALIDATION);
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_ANALYZE:
				_localctx = new AlterByAnalyzePartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2952;
				this.match(MySqlParser.KW_ANALYZE);
				this.state = 2953;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2956;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2954;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2955;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_CHECK:
				_localctx = new AlterByCheckPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2958;
				this.match(MySqlParser.KW_CHECK);
				this.state = 2959;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2962;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2960;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2961;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_OPTIMIZE:
				_localctx = new AlterByOptimizePartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 2964;
				this.match(MySqlParser.KW_OPTIMIZE);
				this.state = 2965;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2968;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2966;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2967;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_REBUILD:
				_localctx = new AlterByRebuildPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 2970;
				this.match(MySqlParser.KW_REBUILD);
				this.state = 2971;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2974;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2972;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2973;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_REPAIR:
				_localctx = new AlterByRepairPartitionContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 2976;
				this.match(MySqlParser.KW_REPAIR);
				this.state = 2977;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 2980;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 2978;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 2979;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_REMOVE:
				_localctx = new AlterByRemovePartitioningContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 2982;
				this.match(MySqlParser.KW_REMOVE);
				this.state = 2983;
				this.match(MySqlParser.KW_PARTITIONING);
				}
				break;
			case MySqlParser.KW_UPGRADE:
				_localctx = new AlterByUpgradePartitioningContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 2984;
				this.match(MySqlParser.KW_UPGRADE);
				this.state = 2985;
				this.match(MySqlParser.KW_PARTITIONING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropDatabase(): DropDatabaseContext {
		let _localctx: DropDatabaseContext = new DropDatabaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 144, MySqlParser.RULE_dropDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2988;
			this.match(MySqlParser.KW_DROP);
			this.state = 2989;
			_localctx._dbFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_DATABASE || _la === MySqlParser.KW_SCHEMA)) {
				_localctx._dbFormat = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 2991;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 360, this._ctx) ) {
			case 1:
				{
				this.state = 2990;
				this.ifExists();
				}
				break;
			}
			this.state = 2993;
			this.databaseName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropEvent(): DropEventContext {
		let _localctx: DropEventContext = new DropEventContext(this._ctx, this.state);
		this.enterRule(_localctx, 146, MySqlParser.RULE_dropEvent);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2995;
			this.match(MySqlParser.KW_DROP);
			this.state = 2996;
			this.match(MySqlParser.KW_EVENT);
			this.state = 2998;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 361, this._ctx) ) {
			case 1:
				{
				this.state = 2997;
				this.ifExists();
				}
				break;
			}
			this.state = 3000;
			_localctx._event_name = this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropIndex(): DropIndexContext {
		let _localctx: DropIndexContext = new DropIndexContext(this._ctx, this.state);
		this.enterRule(_localctx, 148, MySqlParser.RULE_dropIndex);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3002;
			this.match(MySqlParser.KW_DROP);
			this.state = 3003;
			this.match(MySqlParser.KW_INDEX);
			this.state = 3005;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 362, this._ctx) ) {
			case 1:
				{
				this.state = 3004;
				_localctx._intimeAction = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_OFFLINE || _la === MySqlParser.KW_ONLINE)) {
					_localctx._intimeAction = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
			this.state = 3007;
			this.indexName();
			this.state = 3008;
			this.match(MySqlParser.KW_ON);
			this.state = 3009;
			this.tableName();
			this.state = 3022;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 366, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 3020;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_ALGORITHM:
						{
						this.state = 3010;
						this.match(MySqlParser.KW_ALGORITHM);
						this.state = 3012;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.EQUAL_SYMBOL) {
							{
							this.state = 3011;
							this.match(MySqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 3014;
						_localctx._algType = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_COPY || _la === MySqlParser.KW_INPLACE)) {
							_localctx._algType = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
						break;
					case MySqlParser.KW_LOCK:
						{
						this.state = 3015;
						this.match(MySqlParser.KW_LOCK);
						this.state = 3017;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.EQUAL_SYMBOL) {
							{
							this.state = 3016;
							this.match(MySqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 3019;
						_localctx._lockType = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_EXCLUSIVE || _la === MySqlParser.KW_NONE || _la === MySqlParser.KW_SHARED)) {
							_localctx._lockType = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}
				this.state = 3024;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 366, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropLogfileGroup(): DropLogfileGroupContext {
		let _localctx: DropLogfileGroupContext = new DropLogfileGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 150, MySqlParser.RULE_dropLogfileGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3025;
			this.match(MySqlParser.KW_DROP);
			this.state = 3026;
			this.match(MySqlParser.KW_LOGFILE);
			this.state = 3027;
			this.match(MySqlParser.KW_GROUP);
			this.state = 3028;
			_localctx._logfileGroupName = this.uid();
			this.state = 3029;
			this.match(MySqlParser.KW_ENGINE);
			this.state = 3031;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.EQUAL_SYMBOL) {
				{
				this.state = 3030;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 3033;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropProcedure(): DropProcedureContext {
		let _localctx: DropProcedureContext = new DropProcedureContext(this._ctx, this.state);
		this.enterRule(_localctx, 152, MySqlParser.RULE_dropProcedure);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3035;
			this.match(MySqlParser.KW_DROP);
			this.state = 3036;
			this.match(MySqlParser.KW_PROCEDURE);
			this.state = 3038;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 368, this._ctx) ) {
			case 1:
				{
				this.state = 3037;
				this.ifExists();
				}
				break;
			}
			this.state = 3040;
			_localctx._sp_name = this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropFunction(): DropFunctionContext {
		let _localctx: DropFunctionContext = new DropFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 154, MySqlParser.RULE_dropFunction);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3042;
			this.match(MySqlParser.KW_DROP);
			this.state = 3043;
			this.match(MySqlParser.KW_FUNCTION);
			this.state = 3045;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 369, this._ctx) ) {
			case 1:
				{
				this.state = 3044;
				this.ifExists();
				}
				break;
			}
			this.state = 3047;
			this.functionName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropServer(): DropServerContext {
		let _localctx: DropServerContext = new DropServerContext(this._ctx, this.state);
		this.enterRule(_localctx, 156, MySqlParser.RULE_dropServer);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3049;
			this.match(MySqlParser.KW_DROP);
			this.state = 3050;
			this.match(MySqlParser.KW_SERVER);
			this.state = 3052;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 370, this._ctx) ) {
			case 1:
				{
				this.state = 3051;
				this.ifExists();
				}
				break;
			}
			this.state = 3054;
			_localctx._serverName = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropSpatial(): DropSpatialContext {
		let _localctx: DropSpatialContext = new DropSpatialContext(this._ctx, this.state);
		this.enterRule(_localctx, 158, MySqlParser.RULE_dropSpatial);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3056;
			this.match(MySqlParser.KW_DROP);
			this.state = 3057;
			this.match(MySqlParser.KW_SPATIAL);
			this.state = 3058;
			this.match(MySqlParser.KW_REFERENCE);
			this.state = 3059;
			this.match(MySqlParser.KW_SYSTEM);
			this.state = 3061;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IF) {
				{
				this.state = 3060;
				this.ifExists();
				}
			}

			this.state = 3063;
			this.match(MySqlParser.DECIMAL_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropTable(): DropTableContext {
		let _localctx: DropTableContext = new DropTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 160, MySqlParser.RULE_dropTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3065;
			this.match(MySqlParser.KW_DROP);
			this.state = 3067;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_TEMPORARY) {
				{
				this.state = 3066;
				this.match(MySqlParser.KW_TEMPORARY);
				}
			}

			this.state = 3069;
			this.match(MySqlParser.KW_TABLE);
			this.state = 3071;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 373, this._ctx) ) {
			case 1:
				{
				this.state = 3070;
				this.ifExists();
				}
				break;
			}
			this.state = 3073;
			this.tableNames();
			this.state = 3075;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CASCADE || _la === MySqlParser.KW_RESTRICT) {
				{
				this.state = 3074;
				_localctx._dropType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CASCADE || _la === MySqlParser.KW_RESTRICT)) {
					_localctx._dropType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropTablespace(): DropTablespaceContext {
		let _localctx: DropTablespaceContext = new DropTablespaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 162, MySqlParser.RULE_dropTablespace);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3077;
			this.match(MySqlParser.KW_DROP);
			this.state = 3079;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_UNDO) {
				{
				this.state = 3078;
				this.match(MySqlParser.KW_UNDO);
				}
			}

			this.state = 3081;
			this.match(MySqlParser.KW_TABLESPACE);
			this.state = 3082;
			this.tablespaceName();
			this.state = 3088;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ENGINE) {
				{
				this.state = 3083;
				this.match(MySqlParser.KW_ENGINE);
				this.state = 3085;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 3084;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 3087;
				this.engineName();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropTrigger(): DropTriggerContext {
		let _localctx: DropTriggerContext = new DropTriggerContext(this._ctx, this.state);
		this.enterRule(_localctx, 164, MySqlParser.RULE_dropTrigger);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3090;
			this.match(MySqlParser.KW_DROP);
			this.state = 3091;
			this.match(MySqlParser.KW_TRIGGER);
			this.state = 3093;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 378, this._ctx) ) {
			case 1:
				{
				this.state = 3092;
				this.ifExists();
				}
				break;
			}
			this.state = 3095;
			_localctx._trigger_name = this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropView(): DropViewContext {
		let _localctx: DropViewContext = new DropViewContext(this._ctx, this.state);
		this.enterRule(_localctx, 166, MySqlParser.RULE_dropView);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3097;
			this.match(MySqlParser.KW_DROP);
			this.state = 3098;
			this.match(MySqlParser.KW_VIEW);
			this.state = 3100;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 379, this._ctx) ) {
			case 1:
				{
				this.state = 3099;
				this.ifExists();
				}
				break;
			}
			this.state = 3102;
			this.viewName();
			this.state = 3107;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 3103;
				this.match(MySqlParser.COMMA);
				this.state = 3104;
				this.viewName();
				}
				}
				this.state = 3109;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3111;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CASCADE || _la === MySqlParser.KW_RESTRICT) {
				{
				this.state = 3110;
				_localctx._dropType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CASCADE || _la === MySqlParser.KW_RESTRICT)) {
					_localctx._dropType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropRole(): DropRoleContext {
		let _localctx: DropRoleContext = new DropRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 168, MySqlParser.RULE_dropRole);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3113;
			this.match(MySqlParser.KW_DROP);
			this.state = 3114;
			this.match(MySqlParser.KW_ROLE);
			this.state = 3116;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 382, this._ctx) ) {
			case 1:
				{
				this.state = 3115;
				this.ifExists();
				}
				break;
			}
			this.state = 3118;
			this.userOrRoleNames();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setRole(): SetRoleContext {
		let _localctx: SetRoleContext = new SetRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 170, MySqlParser.RULE_setRole);
		let _la: number;
		try {
			this.state = 3140;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 385, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3120;
				this.match(MySqlParser.KW_SET);
				this.state = 3121;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 3122;
				this.match(MySqlParser.KW_ROLE);
				this.state = 3126;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 383, this._ctx) ) {
				case 1:
					{
					this.state = 3123;
					this.match(MySqlParser.KW_NONE);
					}
					break;

				case 2:
					{
					this.state = 3124;
					this.match(MySqlParser.KW_ALL);
					}
					break;

				case 3:
					{
					this.state = 3125;
					this.userOrRoleNames();
					}
					break;
				}
				this.state = 3128;
				this.match(MySqlParser.KW_TO);
				{
				this.state = 3129;
				this.userOrRoleName();
				}
				this.state = 3134;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3130;
					this.match(MySqlParser.COMMA);
					{
					this.state = 3131;
					this.userOrRoleName();
					}
					}
					}
					this.state = 3136;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3137;
				this.match(MySqlParser.KW_SET);
				this.state = 3138;
				this.match(MySqlParser.KW_ROLE);
				this.state = 3139;
				this.roleOption();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public renameTable(): RenameTableContext {
		let _localctx: RenameTableContext = new RenameTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 172, MySqlParser.RULE_renameTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3142;
			this.match(MySqlParser.KW_RENAME);
			this.state = 3143;
			this.match(MySqlParser.KW_TABLE);
			this.state = 3144;
			this.renameTableClause();
			this.state = 3149;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 3145;
				this.match(MySqlParser.COMMA);
				this.state = 3146;
				this.renameTableClause();
				}
				}
				this.state = 3151;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public renameTableClause(): RenameTableClauseContext {
		let _localctx: RenameTableClauseContext = new RenameTableClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 174, MySqlParser.RULE_renameTableClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3152;
			this.tableName();
			this.state = 3153;
			this.match(MySqlParser.KW_TO);
			this.state = 3154;
			this.tableNameCreate();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public truncateTable(): TruncateTableContext {
		let _localctx: TruncateTableContext = new TruncateTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 176, MySqlParser.RULE_truncateTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3156;
			this.match(MySqlParser.KW_TRUNCATE);
			this.state = 3158;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_TABLE) {
				{
				this.state = 3157;
				this.match(MySqlParser.KW_TABLE);
				}
			}

			this.state = 3160;
			this.tableName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public callStatement(): CallStatementContext {
		let _localctx: CallStatementContext = new CallStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 178, MySqlParser.RULE_callStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3162;
			this.match(MySqlParser.KW_CALL);
			this.state = 3163;
			_localctx._sp_name = this.fullId();
			this.state = 3170;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 389, this._ctx) ) {
			case 1:
				{
				this.state = 3164;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3167;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 388, this._ctx) ) {
				case 1:
					{
					this.state = 3165;
					this.constants();
					}
					break;

				case 2:
					{
					this.state = 3166;
					this.expressions();
					}
					break;
				}
				this.state = 3169;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public deleteStatement(): DeleteStatementContext {
		let _localctx: DeleteStatementContext = new DeleteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 180, MySqlParser.RULE_deleteStatement);
		try {
			this.state = 3174;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 390, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3172;
				this.singleDeleteStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3173;
				this.multipleDeleteStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public doStatement(): DoStatementContext {
		let _localctx: DoStatementContext = new DoStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 182, MySqlParser.RULE_doStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3176;
			this.match(MySqlParser.KW_DO);
			this.state = 3177;
			this.expressions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handlerStatement(): HandlerStatementContext {
		let _localctx: HandlerStatementContext = new HandlerStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 184, MySqlParser.RULE_handlerStatement);
		try {
			this.state = 3183;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 391, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3179;
				this.handlerOpenStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3180;
				this.handlerReadIndexStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3181;
				this.handlerReadStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3182;
				this.handlerCloseStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public insertStatement(): InsertStatementContext {
		let _localctx: InsertStatementContext = new InsertStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 186, MySqlParser.RULE_insertStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3185;
			this.match(MySqlParser.KW_INSERT);
			this.state = 3187;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DELAYED || _la === MySqlParser.KW_HIGH_PRIORITY || _la === MySqlParser.KW_LOW_PRIORITY) {
				{
				this.state = 3186;
				_localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DELAYED || _la === MySqlParser.KW_HIGH_PRIORITY || _la === MySqlParser.KW_LOW_PRIORITY)) {
					_localctx._priority = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3190;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3189;
				this.match(MySqlParser.KW_IGNORE);
				}
			}

			this.state = 3193;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INTO) {
				{
				this.state = 3192;
				this.match(MySqlParser.KW_INTO);
				}
			}

			this.state = 3195;
			this.tableName();
			this.state = 3202;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITION) {
				{
				this.state = 3196;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 3197;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3199;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 3198;
					this.partitionNames();
					}
				}

				this.state = 3201;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 3215;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 400, this._ctx) ) {
			case 1:
				{
				this.state = 3205;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 397, this._ctx) ) {
				case 1:
					{
					this.state = 3204;
					this.fullColumnNames();
					}
					break;
				}
				this.state = 3209;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 398, this._ctx) ) {
				case 1:
					{
					this.state = 3207;
					this.valuesOrValueList();
					}
					break;

				case 2:
					{
					this.state = 3208;
					this.selectOrTableOrValues();
					}
					break;
				}
				this.state = 3212;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 399, this._ctx) ) {
				case 1:
					{
					this.state = 3211;
					this.asRowAlias();
					}
					break;
				}
				}
				break;

			case 2:
				{
				this.state = 3214;
				this.setAssignmentList();
				}
				break;
			}
			this.state = 3218;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AS) {
				{
				this.state = 3217;
				this.asRowAlias();
				}
			}

			this.state = 3232;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ON) {
				{
				this.state = 3220;
				this.match(MySqlParser.KW_ON);
				this.state = 3221;
				this.match(MySqlParser.KW_DUPLICATE);
				this.state = 3222;
				this.match(MySqlParser.KW_KEY);
				this.state = 3223;
				this.match(MySqlParser.KW_UPDATE);
				this.state = 3224;
				_localctx._duplicatedFirst = this.updatedElement();
				this.state = 3229;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3225;
					this.match(MySqlParser.COMMA);
					this.state = 3226;
					_localctx._updatedElement = this.updatedElement();
					_localctx._duplicatedElements.push(_localctx._updatedElement);
					}
					}
					this.state = 3231;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public asRowAlias(): AsRowAliasContext {
		let _localctx: AsRowAliasContext = new AsRowAliasContext(this._ctx, this.state);
		this.enterRule(_localctx, 188, MySqlParser.RULE_asRowAlias);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3234;
			this.match(MySqlParser.KW_AS);
			this.state = 3235;
			_localctx._rowAlias = this.uid();
			this.state = 3237;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 404, this._ctx) ) {
			case 1:
				{
				this.state = 3236;
				this.fullColumnNames();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectOrTableOrValues(): SelectOrTableOrValuesContext {
		let _localctx: SelectOrTableOrValuesContext = new SelectOrTableOrValuesContext(this._ctx, this.state);
		this.enterRule(_localctx, 190, MySqlParser.RULE_selectOrTableOrValues);
		try {
			this.state = 3243;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SELECT:
			case MySqlParser.LR_BRACKET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3239;
				this.selectStatement();
				}
				break;
			case MySqlParser.KW_TABLE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3240;
				this.match(MySqlParser.KW_TABLE);
				this.state = 3241;
				this.tableName();
				}
				break;
			case MySqlParser.KW_VALUES:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3242;
				this.rowValuesList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public interSectStatement(): InterSectStatementContext {
		let _localctx: InterSectStatementContext = new InterSectStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 192, MySqlParser.RULE_interSectStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3245;
			this.interSectQuery();
			this.state = 3251;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 3246;
				this.match(MySqlParser.KW_INTERSECT);
				this.state = 3248;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
					{
					this.state = 3247;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 3250;
				this.interSectQuery();
				}
				}
				this.state = 3253;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === MySqlParser.KW_INTERSECT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public interSectQuery(): InterSectQueryContext {
		let _localctx: InterSectQueryContext = new InterSectQueryContext(this._ctx, this.state);
		this.enterRule(_localctx, 194, MySqlParser.RULE_interSectQuery);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3256;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.LR_BRACKET) {
				{
				this.state = 3255;
				this.match(MySqlParser.LR_BRACKET);
				}
			}

			this.state = 3258;
			this.querySpecification();
			this.state = 3260;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 409, this._ctx) ) {
			case 1:
				{
				this.state = 3259;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loadDataStatement(): LoadDataStatementContext {
		let _localctx: LoadDataStatementContext = new LoadDataStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 196, MySqlParser.RULE_loadDataStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3262;
			this.match(MySqlParser.KW_LOAD);
			this.state = 3263;
			this.match(MySqlParser.KW_DATA);
			this.state = 3265;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOW_PRIORITY || _la === MySqlParser.KW_CONCURRENT) {
				{
				this.state = 3264;
				_localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_LOW_PRIORITY || _la === MySqlParser.KW_CONCURRENT)) {
					_localctx._priority = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3268;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOCAL) {
				{
				this.state = 3267;
				this.match(MySqlParser.KW_LOCAL);
				}
			}

			this.state = 3270;
			this.match(MySqlParser.KW_INFILE);
			this.state = 3271;
			_localctx._filename = this.match(MySqlParser.STRING_LITERAL);
			this.state = 3273;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_REPLACE) {
				{
				this.state = 3272;
				_localctx._violation = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_REPLACE)) {
					_localctx._violation = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3275;
			this.match(MySqlParser.KW_INTO);
			this.state = 3276;
			this.match(MySqlParser.KW_TABLE);
			this.state = 3277;
			this.tableName();
			this.state = 3283;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITION) {
				{
				this.state = 3278;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 3279;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3280;
				this.partitionNames();
				this.state = 3281;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 3288;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CHARACTER) {
				{
				this.state = 3285;
				this.match(MySqlParser.KW_CHARACTER);
				this.state = 3286;
				this.match(MySqlParser.KW_SET);
				this.state = 3287;
				_localctx._charset = this.charsetName();
				}
			}

			this.state = 3296;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_COLUMNS || _la === MySqlParser.KW_FIELDS) {
				{
				this.state = 3290;
				_localctx._fieldsFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_COLUMNS || _la === MySqlParser.KW_FIELDS)) {
					_localctx._fieldsFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 3292;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 3291;
					this.selectFieldsInto();
					}
					}
					this.state = 3294;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === MySqlParser.KW_ENCLOSED || _la === MySqlParser.KW_ESCAPED || _la === MySqlParser.KW_OPTIONALLY || _la === MySqlParser.KW_TERMINATED);
				}
			}

			this.state = 3304;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LINES) {
				{
				this.state = 3298;
				this.match(MySqlParser.KW_LINES);
				this.state = 3300;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 3299;
					this.selectLinesInto();
					}
					}
					this.state = 3302;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === MySqlParser.KW_STARTING || _la === MySqlParser.KW_TERMINATED);
				}
			}

			this.state = 3310;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3306;
				this.match(MySqlParser.KW_IGNORE);
				this.state = 3307;
				this.decimalLiteral();
				this.state = 3308;
				_localctx._linesFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_LINES || _la === MySqlParser.KW_ROWS)) {
					_localctx._linesFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3323;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 421, this._ctx) ) {
			case 1:
				{
				this.state = 3312;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3313;
				this.assignmentField();
				this.state = 3318;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3314;
					this.match(MySqlParser.COMMA);
					this.state = 3315;
					this.assignmentField();
					}
					}
					this.state = 3320;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3321;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 3334;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 423, this._ctx) ) {
			case 1:
				{
				this.state = 3325;
				this.match(MySqlParser.KW_SET);
				this.state = 3326;
				this.updatedElement();
				this.state = 3331;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3327;
					this.match(MySqlParser.COMMA);
					this.state = 3328;
					this.updatedElement();
					}
					}
					this.state = 3333;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loadXmlStatement(): LoadXmlStatementContext {
		let _localctx: LoadXmlStatementContext = new LoadXmlStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 198, MySqlParser.RULE_loadXmlStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3336;
			this.match(MySqlParser.KW_LOAD);
			this.state = 3337;
			this.match(MySqlParser.KW_XML);
			this.state = 3339;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOW_PRIORITY || _la === MySqlParser.KW_CONCURRENT) {
				{
				this.state = 3338;
				_localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_LOW_PRIORITY || _la === MySqlParser.KW_CONCURRENT)) {
					_localctx._priority = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3342;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOCAL) {
				{
				this.state = 3341;
				this.match(MySqlParser.KW_LOCAL);
				}
			}

			this.state = 3344;
			this.match(MySqlParser.KW_INFILE);
			this.state = 3345;
			_localctx._filename = this.match(MySqlParser.STRING_LITERAL);
			this.state = 3347;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_REPLACE) {
				{
				this.state = 3346;
				_localctx._violation = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_REPLACE)) {
					_localctx._violation = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3349;
			this.match(MySqlParser.KW_INTO);
			this.state = 3350;
			this.match(MySqlParser.KW_TABLE);
			this.state = 3351;
			this.tableName();
			this.state = 3355;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CHARACTER) {
				{
				this.state = 3352;
				this.match(MySqlParser.KW_CHARACTER);
				this.state = 3353;
				this.match(MySqlParser.KW_SET);
				this.state = 3354;
				_localctx._charset = this.charsetName();
				}
			}

			this.state = 3367;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ROWS) {
				{
				this.state = 3357;
				this.match(MySqlParser.KW_ROWS);
				this.state = 3358;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 3359;
				this.match(MySqlParser.KW_BY);
				this.state = 3361;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LESS_SYMBOL) {
					{
					this.state = 3360;
					this.match(MySqlParser.LESS_SYMBOL);
					}
				}

				this.state = 3363;
				_localctx._tag = this.match(MySqlParser.STRING_LITERAL);
				this.state = 3365;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.GREATER_SYMBOL) {
					{
					this.state = 3364;
					this.match(MySqlParser.GREATER_SYMBOL);
					}
				}

				}
			}

			this.state = 3373;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3369;
				this.match(MySqlParser.KW_IGNORE);
				this.state = 3370;
				this.decimalLiteral();
				this.state = 3371;
				_localctx._linesFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_LINES || _la === MySqlParser.KW_ROWS)) {
					_localctx._linesFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3386;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 433, this._ctx) ) {
			case 1:
				{
				this.state = 3375;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3376;
				this.assignmentField();
				this.state = 3381;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3377;
					this.match(MySqlParser.COMMA);
					this.state = 3378;
					this.assignmentField();
					}
					}
					this.state = 3383;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3384;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 3397;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 435, this._ctx) ) {
			case 1:
				{
				this.state = 3388;
				this.match(MySqlParser.KW_SET);
				this.state = 3389;
				this.updatedElement();
				this.state = 3394;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3390;
					this.match(MySqlParser.COMMA);
					this.state = 3391;
					this.updatedElement();
					}
					}
					this.state = 3396;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public parenthesizedQuery(): ParenthesizedQueryContext {
		let _localctx: ParenthesizedQueryContext = new ParenthesizedQueryContext(this._ctx, this.state);
		this.enterRule(_localctx, 200, MySqlParser.RULE_parenthesizedQuery);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3399;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 3400;
			this.parenthesizedQueryExpression();
			this.state = 3402;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ORDER) {
				{
				this.state = 3401;
				this.orderByClause();
				}
			}

			this.state = 3405;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3404;
				this.limitClause();
				}
			}

			this.state = 3407;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 3409;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ORDER) {
				{
				this.state = 3408;
				this.orderByClause();
				}
			}

			this.state = 3412;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3411;
				this.limitClause();
				}
			}

			this.state = 3415;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INTO) {
				{
				this.state = 3414;
				this.intoClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replaceStatement(): ReplaceStatementContext {
		let _localctx: ReplaceStatementContext = new ReplaceStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 202, MySqlParser.RULE_replaceStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3417;
			this.match(MySqlParser.KW_REPLACE);
			this.state = 3419;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DELAYED || _la === MySqlParser.KW_LOW_PRIORITY) {
				{
				this.state = 3418;
				_localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DELAYED || _la === MySqlParser.KW_LOW_PRIORITY)) {
					_localctx._priority = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 3422;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INTO) {
				{
				this.state = 3421;
				this.match(MySqlParser.KW_INTO);
				}
			}

			this.state = 3424;
			this.tableName();
			this.state = 3430;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITION) {
				{
				this.state = 3425;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 3426;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3427;
				this.partitionNames();
				this.state = 3428;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 3440;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SELECT:
			case MySqlParser.KW_TABLE:
			case MySqlParser.KW_VALUES:
			case MySqlParser.KW_VALUE:
			case MySqlParser.LR_BRACKET:
				{
				this.state = 3436;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 444, this._ctx) ) {
				case 1:
					{
					this.state = 3432;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 3433;
					this.columnNames();
					this.state = 3434;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				}
				this.state = 3438;
				this.replaceStatementValuesOrSelectOrTable();
				}
				break;
			case MySqlParser.KW_SET:
				{
				this.state = 3439;
				this.setAssignmentList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectStatement(): SelectStatementContext {
		let _localctx: SelectStatementContext = new SelectStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 204, MySqlParser.RULE_selectStatement);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3511;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 464, this._ctx) ) {
			case 1:
				_localctx = new SimpleSelectContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3442;
				this.querySpecification();
				this.state = 3444;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 446, this._ctx) ) {
				case 1:
					{
					this.state = 3443;
					this.lockClause();
					}
					break;
				}
				}
				break;

			case 2:
				_localctx = new SimpleSelectContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3446;
				this.querySpecificationNointo();
				this.state = 3448;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 447, this._ctx) ) {
				case 1:
					{
					this.state = 3447;
					this.lockClause();
					}
					break;
				}
				this.state = 3451;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 448, this._ctx) ) {
				case 1:
					{
					this.state = 3450;
					this.intoClause();
					}
					break;
				}
				}
				break;

			case 3:
				_localctx = new ParenthesisSelectContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3453;
				this.queryExpression();
				this.state = 3455;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 449, this._ctx) ) {
				case 1:
					{
					this.state = 3454;
					this.lockClause();
					}
					break;
				}
				}
				break;

			case 4:
				_localctx = new UnionSelectContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3457;
				this.querySpecificationNointo();
				this.state = 3459;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 3458;
						this.unionStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 3461;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 450, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				this.state = 3471;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 453, this._ctx) ) {
				case 1:
					{
					this.state = 3463;
					this.match(MySqlParser.KW_UNION);
					this.state = 3465;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
						{
						this.state = 3464;
						(_localctx as UnionSelectContext)._unionType = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
							(_localctx as UnionSelectContext)._unionType = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
					}

					this.state = 3469;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_SELECT:
						{
						this.state = 3467;
						this.querySpecification();
						}
						break;
					case MySqlParser.LR_BRACKET:
						{
						this.state = 3468;
						this.queryExpression();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				}
				this.state = 3474;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 454, this._ctx) ) {
				case 1:
					{
					this.state = 3473;
					this.orderByClause();
					}
					break;
				}
				this.state = 3477;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 455, this._ctx) ) {
				case 1:
					{
					this.state = 3476;
					this.limitClause();
					}
					break;
				}
				this.state = 3480;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 456, this._ctx) ) {
				case 1:
					{
					this.state = 3479;
					this.lockClause();
					}
					break;
				}
				}
				break;

			case 5:
				_localctx = new UnionParenthesisSelectContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3482;
				this.queryExpressionNointo();
				this.state = 3484;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 3483;
						this.unionParenthesis();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 3486;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 457, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				this.state = 3493;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 459, this._ctx) ) {
				case 1:
					{
					this.state = 3488;
					this.match(MySqlParser.KW_UNION);
					this.state = 3490;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
						{
						this.state = 3489;
						(_localctx as UnionParenthesisSelectContext)._unionType = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
							(_localctx as UnionParenthesisSelectContext)._unionType = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
					}

					this.state = 3492;
					this.queryExpression();
					}
					break;
				}
				this.state = 3496;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 460, this._ctx) ) {
				case 1:
					{
					this.state = 3495;
					this.orderByClause();
					}
					break;
				}
				this.state = 3499;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 461, this._ctx) ) {
				case 1:
					{
					this.state = 3498;
					this.limitClause();
					}
					break;
				}
				this.state = 3502;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 462, this._ctx) ) {
				case 1:
					{
					this.state = 3501;
					this.lockClause();
					}
					break;
				}
				}
				break;

			case 6:
				_localctx = new WithLateralStatementContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 3504;
				this.querySpecificationNointo();
				this.state = 3507;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 3505;
						this.match(MySqlParser.COMMA);
						this.state = 3506;
						this.lateralStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 3509;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 463, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setOperations(): SetOperationsContext {
		let _localctx: SetOperationsContext = new SetOperationsContext(this._ctx, this.state);
		this.enterRule(_localctx, 206, MySqlParser.RULE_setOperations);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3514;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WITH) {
				{
				this.state = 3513;
				this.withClause();
				}
			}

			this.state = 3516;
			this.queryExpressionBody(0);
			this.state = 3518;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ORDER) {
				{
				this.state = 3517;
				this.orderByClause();
				}
			}

			this.state = 3521;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3520;
				this.limitClause();
				}
			}

			this.state = 3524;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INTO) {
				{
				this.state = 3523;
				this.intoClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}

	public queryExpressionBody(): QueryExpressionBodyContext;
	public queryExpressionBody(_p: number): QueryExpressionBodyContext;
	// @RuleVersion(0)
	public queryExpressionBody(_p?: number): QueryExpressionBodyContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let _localctx: QueryExpressionBodyContext = new QueryExpressionBodyContext(this._ctx, _parentState);
		let _prevctx: QueryExpressionBodyContext = _localctx;
		let _startState: number = 208;
		this.enterRecursionRule(_localctx, 208, MySqlParser.RULE_queryExpressionBody, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			{
			this.state = 3527;
			this.queryItem(0);
			}
			this._ctx._stop = this._input.tryLT(-1);
			this.state = 3543;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 472, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = _localctx;
					{
					this.state = 3541;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 471, this._ctx) ) {
					case 1:
						{
						_localctx = new QueryExpressionBodyContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_queryExpressionBody);
						this.state = 3529;
						if (!(this.precpred(this._ctx, 2))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
						}
						this.state = 3530;
						this.match(MySqlParser.KW_UNION);
						this.state = 3532;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
							{
							this.state = 3531;
							_la = this._input.LA(1);
							if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
							this._errHandler.recoverInline(this);
							} else {
								if (this._input.LA(1) === Token.EOF) {
									this.matchedEOF = true;
								}

								this._errHandler.reportMatch(this);
								this.consume();
							}
							}
						}

						this.state = 3534;
						this.queryItem(0);
						}
						break;

					case 2:
						{
						_localctx = new QueryExpressionBodyContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_queryExpressionBody);
						this.state = 3535;
						if (!(this.precpred(this._ctx, 1))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
						}
						this.state = 3536;
						this.match(MySqlParser.KW_EXCEPT);
						this.state = 3538;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
							{
							this.state = 3537;
							_la = this._input.LA(1);
							if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
							this._errHandler.recoverInline(this);
							} else {
								if (this._input.LA(1) === Token.EOF) {
									this.matchedEOF = true;
								}

								this._errHandler.reportMatch(this);
								this.consume();
							}
							}
						}

						this.state = 3540;
						this.queryItem(0);
						}
						break;
					}
					}
				}
				this.state = 3545;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 472, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public queryItem(): QueryItemContext;
	public queryItem(_p: number): QueryItemContext;
	// @RuleVersion(0)
	public queryItem(_p?: number): QueryItemContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let _localctx: QueryItemContext = new QueryItemContext(this._ctx, _parentState);
		let _prevctx: QueryItemContext = _localctx;
		let _startState: number = 210;
		this.enterRecursionRule(_localctx, 210, MySqlParser.RULE_queryItem, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			{
			this.state = 3547;
			this.queryPrimary();
			}
			this._ctx._stop = this._input.tryLT(-1);
			this.state = 3557;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 474, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = _localctx;
					{
					{
					_localctx = new QueryItemContext(_parentctx, _parentState);
					this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_queryItem);
					this.state = 3549;
					if (!(this.precpred(this._ctx, 1))) {
						throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
					}
					this.state = 3550;
					this.match(MySqlParser.KW_INTERSECT);
					this.state = 3552;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
						{
						this.state = 3551;
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
					}

					this.state = 3554;
					this.queryPrimary();
					}
					}
				}
				this.state = 3559;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 474, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public queryPrimary(): QueryPrimaryContext {
		let _localctx: QueryPrimaryContext = new QueryPrimaryContext(this._ctx, this.state);
		this.enterRule(_localctx, 212, MySqlParser.RULE_queryPrimary);
		let _la: number;
		try {
			this.state = 3574;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 478, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3560;
				this.queryBlock();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3561;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3562;
				this.queryExpressionBody(0);
				this.state = 3564;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ORDER) {
					{
					this.state = 3563;
					this.orderByClause();
					}
				}

				this.state = 3567;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIMIT) {
					{
					this.state = 3566;
					this.limitClause();
					}
				}

				this.state = 3570;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INTO) {
					{
					this.state = 3569;
					this.intoClause();
					}
				}

				this.state = 3572;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public updateStatement(): UpdateStatementContext {
		let _localctx: UpdateStatementContext = new UpdateStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 214, MySqlParser.RULE_updateStatement);
		try {
			this.state = 3578;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 479, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3576;
				this.singleUpdateStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3577;
				this.multipleUpdateStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public valuesStatement(): ValuesStatementContext {
		let _localctx: ValuesStatementContext = new ValuesStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 216, MySqlParser.RULE_valuesStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3580;
			this.rowValuesList();
			this.state = 3584;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 480, this._ctx) ) {
			case 1:
				{
				this.state = 3581;
				this.match(MySqlParser.KW_ORDER);
				this.state = 3582;
				this.match(MySqlParser.KW_BY);
				this.state = 3583;
				this.indexColumnName();
				}
				break;
			}
			this.state = 3588;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 481, this._ctx) ) {
			case 1:
				{
				this.state = 3586;
				this.match(MySqlParser.KW_LIMIT);
				this.state = 3587;
				this.limitClauseAtom();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public parenthesizedQueryExpression(): ParenthesizedQueryExpressionContext {
		let _localctx: ParenthesizedQueryExpressionContext = new ParenthesizedQueryExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 218, MySqlParser.RULE_parenthesizedQueryExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3590;
			this.queryBlock();
			this.state = 3595;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_EXCEPT || _la === MySqlParser.KW_UNION || _la === MySqlParser.KW_INTERSECT) {
				{
				{
				this.state = 3591;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_EXCEPT || _la === MySqlParser.KW_UNION || _la === MySqlParser.KW_INTERSECT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 3592;
				this.queryBlock();
				}
				}
				this.state = 3597;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3599;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 483, this._ctx) ) {
			case 1:
				{
				this.state = 3598;
				this.orderByClause();
				}
				break;
			}
			this.state = 3602;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 484, this._ctx) ) {
			case 1:
				{
				this.state = 3601;
				this.limitClause();
				}
				break;
			}
			this.state = 3605;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INTO) {
				{
				this.state = 3604;
				this.intoClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public queryBlock(): QueryBlockContext {
		let _localctx: QueryBlockContext = new QueryBlockContext(this._ctx, this.state);
		this.enterRule(_localctx, 220, MySqlParser.RULE_queryBlock);
		try {
			this.state = 3610;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SELECT:
			case MySqlParser.LR_BRACKET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3607;
				this.selectStatement();
				}
				break;
			case MySqlParser.KW_TABLE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3608;
				this.tableStatement();
				}
				break;
			case MySqlParser.KW_VALUES:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3609;
				this.valuesStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replaceStatementValuesOrSelectOrTable(): ReplaceStatementValuesOrSelectOrTableContext {
		let _localctx: ReplaceStatementValuesOrSelectOrTableContext = new ReplaceStatementValuesOrSelectOrTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 222, MySqlParser.RULE_replaceStatementValuesOrSelectOrTable);
		try {
			this.state = 3617;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 487, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3612;
				this.selectStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3613;
				this.match(MySqlParser.KW_TABLE);
				this.state = 3614;
				this.tableName();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3615;
				this.valuesOrValueList();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3616;
				this.rowValuesList();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowValuesList(): RowValuesListContext {
		let _localctx: RowValuesListContext = new RowValuesListContext(this._ctx, this.state);
		this.enterRule(_localctx, 224, MySqlParser.RULE_rowValuesList);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3619;
			this.match(MySqlParser.KW_VALUES);
			this.state = 3620;
			this.match(MySqlParser.KW_ROW);
			this.state = 3621;
			this.expressionsWithDefaults();
			this.state = 3627;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 488, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3622;
					this.match(MySqlParser.COMMA);
					this.state = 3623;
					this.match(MySqlParser.KW_ROW);
					this.state = 3624;
					this.expressionsWithDefaults();
					}
					}
				}
				this.state = 3629;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 488, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setAssignmentList(): SetAssignmentListContext {
		let _localctx: SetAssignmentListContext = new SetAssignmentListContext(this._ctx, this.state);
		this.enterRule(_localctx, 226, MySqlParser.RULE_setAssignmentList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3630;
			this.match(MySqlParser.KW_SET);
			this.state = 3631;
			_localctx._setFirst = this.updatedElement();
			this.state = 3636;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 3632;
				this.match(MySqlParser.COMMA);
				this.state = 3633;
				_localctx._updatedElement = this.updatedElement();
				_localctx._setElements.push(_localctx._updatedElement);
				}
				}
				this.state = 3638;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public updatedElement(): UpdatedElementContext {
		let _localctx: UpdatedElementContext = new UpdatedElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 228, MySqlParser.RULE_updatedElement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3639;
			this.columnName();
			this.state = 3640;
			this.match(MySqlParser.EQUAL_SYMBOL);
			this.state = 3641;
			this.expressionOrDefault();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public assignmentField(): AssignmentFieldContext {
		let _localctx: AssignmentFieldContext = new AssignmentFieldContext(this._ctx, this.state);
		this.enterRule(_localctx, 230, MySqlParser.RULE_assignmentField);
		try {
			this.state = 3645;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
			case MySqlParser.STRING_LITERAL:
			case MySqlParser.ID:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3643;
				_localctx._var_name = this.uid();
				}
				break;
			case MySqlParser.LOCAL_ID:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3644;
				this.match(MySqlParser.LOCAL_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockClause(): LockClauseContext {
		let _localctx: LockClauseContext = new LockClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 232, MySqlParser.RULE_lockClause);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3668;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_FOR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3647;
				this.match(MySqlParser.KW_FOR);
				this.state = 3648;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_UPDATE || _la === MySqlParser.KW_SHARE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 3658;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 492, this._ctx) ) {
				case 1:
					{
					this.state = 3649;
					this.match(MySqlParser.KW_OF);
					this.state = 3650;
					this.tableName();
					this.state = 3655;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 491, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 3651;
							this.match(MySqlParser.COMMA);
							this.state = 3652;
							this.tableName();
							}
							}
						}
						this.state = 3657;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 491, this._ctx);
					}
					}
					break;
				}
				this.state = 3662;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 493, this._ctx) ) {
				case 1:
					{
					this.state = 3660;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_SKIP || _la === MySqlParser.KW_NOWAIT)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 3661;
					this.match(MySqlParser.KW_LOCKED);
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_LOCK:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3664;
				this.match(MySqlParser.KW_LOCK);
				this.state = 3665;
				this.match(MySqlParser.KW_IN);
				this.state = 3666;
				this.match(MySqlParser.KW_SHARE);
				this.state = 3667;
				this.match(MySqlParser.KW_MODE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public singleDeleteStatement(): SingleDeleteStatementContext {
		let _localctx: SingleDeleteStatementContext = new SingleDeleteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 234, MySqlParser.RULE_singleDeleteStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3670;
			this.match(MySqlParser.KW_DELETE);
			this.state = 3672;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOW_PRIORITY) {
				{
				this.state = 3671;
				_localctx._priority = this.match(MySqlParser.KW_LOW_PRIORITY);
				}
			}

			this.state = 3675;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_QUICK) {
				{
				this.state = 3674;
				this.match(MySqlParser.KW_QUICK);
				}
			}

			this.state = 3678;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3677;
				this.match(MySqlParser.KW_IGNORE);
				}
			}

			this.state = 3680;
			this.match(MySqlParser.KW_FROM);
			this.state = 3681;
			this.tableName();
			this.state = 3686;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 499, this._ctx) ) {
			case 1:
				{
				this.state = 3683;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 3682;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 3685;
				_localctx._table_alias = this.uid();
				}
				break;
			}
			this.state = 3693;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITION) {
				{
				this.state = 3688;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 3689;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3690;
				this.partitionNames();
				this.state = 3691;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 3697;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WHERE) {
				{
				this.state = 3695;
				this.match(MySqlParser.KW_WHERE);
				this.state = 3696;
				this.expression(0);
				}
			}

			this.state = 3700;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ORDER) {
				{
				this.state = 3699;
				this.orderByClause();
				}
			}

			this.state = 3704;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3702;
				this.match(MySqlParser.KW_LIMIT);
				this.state = 3703;
				this.limitClauseAtom();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public multipleDeleteStatement(): MultipleDeleteStatementContext {
		let _localctx: MultipleDeleteStatementContext = new MultipleDeleteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 236, MySqlParser.RULE_multipleDeleteStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3706;
			this.match(MySqlParser.KW_DELETE);
			this.state = 3708;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOW_PRIORITY) {
				{
				this.state = 3707;
				_localctx._priority = this.match(MySqlParser.KW_LOW_PRIORITY);
				}
			}

			this.state = 3711;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 505, this._ctx) ) {
			case 1:
				{
				this.state = 3710;
				this.match(MySqlParser.KW_QUICK);
				}
				break;
			}
			this.state = 3714;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3713;
				this.match(MySqlParser.KW_IGNORE);
				}
			}

			this.state = 3755;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
			case MySqlParser.STRING_LITERAL:
			case MySqlParser.ID:
				{
				this.state = 3716;
				this.tableName();
				this.state = 3719;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.DOT) {
					{
					this.state = 3717;
					this.match(MySqlParser.DOT);
					this.state = 3718;
					this.match(MySqlParser.STAR);
					}
				}

				this.state = 3729;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3721;
					this.match(MySqlParser.COMMA);
					this.state = 3722;
					this.tableName();
					this.state = 3725;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.DOT) {
						{
						this.state = 3723;
						this.match(MySqlParser.DOT);
						this.state = 3724;
						this.match(MySqlParser.STAR);
						}
					}

					}
					}
					this.state = 3731;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3732;
				this.match(MySqlParser.KW_FROM);
				this.state = 3733;
				this.tableSources();
				}
				break;
			case MySqlParser.KW_FROM:
				{
				this.state = 3735;
				this.match(MySqlParser.KW_FROM);
				this.state = 3736;
				this.tableName();
				this.state = 3739;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.DOT) {
					{
					this.state = 3737;
					this.match(MySqlParser.DOT);
					this.state = 3738;
					this.match(MySqlParser.STAR);
					}
				}

				this.state = 3749;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 3741;
					this.match(MySqlParser.COMMA);
					this.state = 3742;
					this.tableName();
					this.state = 3745;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.DOT) {
						{
						this.state = 3743;
						this.match(MySqlParser.DOT);
						this.state = 3744;
						this.match(MySqlParser.STAR);
						}
					}

					}
					}
					this.state = 3751;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3752;
				this.match(MySqlParser.KW_USING);
				this.state = 3753;
				this.tableSources();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3759;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WHERE) {
				{
				this.state = 3757;
				this.match(MySqlParser.KW_WHERE);
				this.state = 3758;
				this.expression(0);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handlerOpenStatement(): HandlerOpenStatementContext {
		let _localctx: HandlerOpenStatementContext = new HandlerOpenStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 238, MySqlParser.RULE_handlerOpenStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3761;
			this.match(MySqlParser.KW_HANDLER);
			this.state = 3762;
			this.tableName();
			this.state = 3763;
			this.match(MySqlParser.KW_OPEN);
			this.state = 3768;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 516, this._ctx) ) {
			case 1:
				{
				this.state = 3765;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 3764;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 3767;
				_localctx._table_alias = this.uid();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handlerReadIndexStatement(): HandlerReadIndexStatementContext {
		let _localctx: HandlerReadIndexStatementContext = new HandlerReadIndexStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 240, MySqlParser.RULE_handlerReadIndexStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3770;
			this.match(MySqlParser.KW_HANDLER);
			this.state = 3771;
			this.tableName();
			this.state = 3772;
			this.match(MySqlParser.KW_READ);
			this.state = 3773;
			this.indexName();
			this.state = 3780;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.EQUAL_SYMBOL:
			case MySqlParser.GREATER_SYMBOL:
			case MySqlParser.LESS_SYMBOL:
				{
				this.state = 3774;
				this.comparisonBase();
				this.state = 3775;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3776;
				this.constants();
				this.state = 3777;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_PREV:
				{
				this.state = 3779;
				_localctx._moveOrder = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FIRST || _la === MySqlParser.KW_LAST || _la === MySqlParser.KW_NEXT || _la === MySqlParser.KW_PREV)) {
					_localctx._moveOrder = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3784;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WHERE) {
				{
				this.state = 3782;
				this.match(MySqlParser.KW_WHERE);
				this.state = 3783;
				this.expression(0);
				}
			}

			this.state = 3788;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3786;
				this.match(MySqlParser.KW_LIMIT);
				this.state = 3787;
				this.limitClauseAtom();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handlerReadStatement(): HandlerReadStatementContext {
		let _localctx: HandlerReadStatementContext = new HandlerReadStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 242, MySqlParser.RULE_handlerReadStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3790;
			this.match(MySqlParser.KW_HANDLER);
			this.state = 3791;
			this.tableName();
			this.state = 3792;
			this.match(MySqlParser.KW_READ);
			this.state = 3793;
			_localctx._moveOrder = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_FIRST || _la === MySqlParser.KW_NEXT)) {
				_localctx._moveOrder = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 3796;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WHERE) {
				{
				this.state = 3794;
				this.match(MySqlParser.KW_WHERE);
				this.state = 3795;
				this.expression(0);
				}
			}

			this.state = 3800;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3798;
				this.match(MySqlParser.KW_LIMIT);
				this.state = 3799;
				this.limitClauseAtom();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handlerCloseStatement(): HandlerCloseStatementContext {
		let _localctx: HandlerCloseStatementContext = new HandlerCloseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 244, MySqlParser.RULE_handlerCloseStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3802;
			this.match(MySqlParser.KW_HANDLER);
			this.state = 3803;
			this.tableName();
			this.state = 3804;
			this.match(MySqlParser.KW_CLOSE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public importTableStatement(): ImportTableStatementContext {
		let _localctx: ImportTableStatementContext = new ImportTableStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 246, MySqlParser.RULE_importTableStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3806;
			this.match(MySqlParser.KW_IMPORT);
			this.state = 3807;
			this.match(MySqlParser.KW_TABLE);
			this.state = 3808;
			this.match(MySqlParser.KW_FROM);
			this.state = 3809;
			this.stringLiteral();
			this.state = 3814;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 3810;
				this.match(MySqlParser.COMMA);
				this.state = 3811;
				this.stringLiteral();
				}
				}
				this.state = 3816;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public singleUpdateStatement(): SingleUpdateStatementContext {
		let _localctx: SingleUpdateStatementContext = new SingleUpdateStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 248, MySqlParser.RULE_singleUpdateStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3817;
			this.match(MySqlParser.KW_UPDATE);
			this.state = 3819;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOW_PRIORITY) {
				{
				this.state = 3818;
				_localctx._priority = this.match(MySqlParser.KW_LOW_PRIORITY);
				}
			}

			this.state = 3822;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3821;
				this.match(MySqlParser.KW_IGNORE);
				}
			}

			this.state = 3824;
			this.tableName();
			this.state = 3829;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_AS) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 3826;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 3825;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 3828;
				_localctx._table_alias = this.uid();
				}
			}

			this.state = 3831;
			this.match(MySqlParser.KW_SET);
			this.state = 3832;
			this.updatedElement();
			this.state = 3837;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 3833;
				this.match(MySqlParser.COMMA);
				this.state = 3834;
				this.updatedElement();
				}
				}
				this.state = 3839;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3842;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WHERE) {
				{
				this.state = 3840;
				this.match(MySqlParser.KW_WHERE);
				this.state = 3841;
				this.expression(0);
				}
			}

			this.state = 3845;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ORDER) {
				{
				this.state = 3844;
				this.orderByClause();
				}
			}

			this.state = 3848;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LIMIT) {
				{
				this.state = 3847;
				this.limitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public multipleUpdateStatement(): MultipleUpdateStatementContext {
		let _localctx: MultipleUpdateStatementContext = new MultipleUpdateStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 250, MySqlParser.RULE_multipleUpdateStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3850;
			this.match(MySqlParser.KW_UPDATE);
			this.state = 3852;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_LOW_PRIORITY) {
				{
				this.state = 3851;
				_localctx._priority = this.match(MySqlParser.KW_LOW_PRIORITY);
				}
			}

			this.state = 3855;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 3854;
				this.match(MySqlParser.KW_IGNORE);
				}
			}

			this.state = 3857;
			this.tableSources();
			this.state = 3858;
			this.match(MySqlParser.KW_SET);
			this.state = 3859;
			this.updatedElement();
			this.state = 3864;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 3860;
				this.match(MySqlParser.COMMA);
				this.state = 3861;
				this.updatedElement();
				}
				}
				this.state = 3866;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3869;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WHERE) {
				{
				this.state = 3867;
				this.match(MySqlParser.KW_WHERE);
				this.state = 3868;
				this.expression(0);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orderByClause(): OrderByClauseContext {
		let _localctx: OrderByClauseContext = new OrderByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 252, MySqlParser.RULE_orderByClause);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3871;
			this.match(MySqlParser.KW_ORDER);
			this.state = 3872;
			this.match(MySqlParser.KW_BY);
			this.state = 3873;
			this.orderByExpression();
			this.state = 3878;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 535, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3874;
					this.match(MySqlParser.COMMA);
					this.state = 3875;
					this.orderByExpression();
					}
					}
				}
				this.state = 3880;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 535, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orderByExpression(): OrderByExpressionContext {
		let _localctx: OrderByExpressionContext = new OrderByExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 254, MySqlParser.RULE_orderByExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3881;
			this.expression(0);
			this.state = 3883;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 536, this._ctx) ) {
			case 1:
				{
				this.state = 3882;
				_localctx._order = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ASC || _la === MySqlParser.KW_DESC)) {
					_localctx._order = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableSources(): TableSourcesContext {
		let _localctx: TableSourcesContext = new TableSourcesContext(this._ctx, this.state);
		this.enterRule(_localctx, 256, MySqlParser.RULE_tableSources);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3885;
			this.tableSource();
			this.state = 3890;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 537, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3886;
					this.match(MySqlParser.COMMA);
					this.state = 3887;
					this.tableSource();
					}
					}
				}
				this.state = 3892;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 537, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableSource(): TableSourceContext {
		let _localctx: TableSourceContext = new TableSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 258, MySqlParser.RULE_tableSource);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3911;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 540, this._ctx) ) {
			case 1:
				_localctx = new TableSourceBaseContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3893;
				this.tableSourceItem();
				this.state = 3897;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 538, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3894;
						this.joinPart();
						}
						}
					}
					this.state = 3899;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 538, this._ctx);
				}
				}
				break;

			case 2:
				_localctx = new TableSourceNestedContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3900;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3901;
				this.tableSourceItem();
				this.state = 3905;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_CROSS || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & ((1 << (MySqlParser.KW_INNER - 84)) | (1 << (MySqlParser.KW_JOIN - 84)) | (1 << (MySqlParser.KW_LEFT - 84)) | (1 << (MySqlParser.KW_NATURAL - 84)))) !== 0) || _la === MySqlParser.KW_RIGHT || _la === MySqlParser.KW_STRAIGHT_JOIN) {
					{
					{
					this.state = 3902;
					this.joinPart();
					}
					}
					this.state = 3907;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3908;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 3:
				_localctx = new TableJsonContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3910;
				this.jsonTable();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableSourceItem(): TableSourceItemContext {
		let _localctx: TableSourceItemContext = new TableSourceItemContext(this._ctx, this.state);
		this.enterRule(_localctx, 260, MySqlParser.RULE_tableSourceItem);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3958;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 550, this._ctx) ) {
			case 1:
				_localctx = new AtomTableItemContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3913;
				this.tableName();
				this.state = 3919;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 541, this._ctx) ) {
				case 1:
					{
					this.state = 3914;
					this.match(MySqlParser.KW_PARTITION);
					this.state = 3915;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 3916;
					this.partitionNames();
					this.state = 3917;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				}
				this.state = 3925;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 543, this._ctx) ) {
				case 1:
					{
					this.state = 3922;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_AS) {
						{
						this.state = 3921;
						this.match(MySqlParser.KW_AS);
						}
					}

					this.state = 3924;
					(_localctx as AtomTableItemContext)._alias = this.uid();
					}
					break;
				}
				this.state = 3935;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 545, this._ctx) ) {
				case 1:
					{
					this.state = 3927;
					this.indexHint();
					this.state = 3932;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 544, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 3928;
							this.match(MySqlParser.COMMA);
							this.state = 3929;
							this.indexHint();
							}
							}
						}
						this.state = 3934;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 544, this._ctx);
					}
					}
					break;
				}
				}
				break;

			case 2:
				_localctx = new SubqueryTableItemContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3938;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LATERAL) {
					{
					this.state = 3937;
					this.match(MySqlParser.KW_LATERAL);
					}
				}

				this.state = 3945;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 547, this._ctx) ) {
				case 1:
					{
					this.state = 3940;
					this.selectStatement();
					}
					break;

				case 2:
					{
					this.state = 3941;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 3942;
					(_localctx as SubqueryTableItemContext)._parenthesisSubquery = this.selectStatement();
					this.state = 3943;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				}
				this.state = 3948;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 3947;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 3950;
				(_localctx as SubqueryTableItemContext)._alias = this.uid();
				this.state = 3952;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 549, this._ctx) ) {
				case 1:
					{
					this.state = 3951;
					this.fullColumnNames();
					}
					break;
				}
				}
				break;

			case 3:
				_localctx = new TableSourcesItemContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3954;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 3955;
				this.tableSources();
				this.state = 3956;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fullColumnNames(): FullColumnNamesContext {
		let _localctx: FullColumnNamesContext = new FullColumnNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 262, MySqlParser.RULE_fullColumnNames);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3960;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 3961;
			this.columnNames();
			this.state = 3962;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexHint(): IndexHintContext {
		let _localctx: IndexHintContext = new IndexHintContext(this._ctx, this.state);
		this.enterRule(_localctx, 264, MySqlParser.RULE_indexHint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3964;
			_localctx._indexHintAction = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_FORCE || _la === MySqlParser.KW_IGNORE || _la === MySqlParser.KW_USE)) {
				_localctx._indexHintAction = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 3965;
			_localctx._keyFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
				_localctx._keyFormat = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 3968;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 3966;
				this.match(MySqlParser.KW_FOR);
				this.state = 3967;
				this.indexHintType();
				}
			}

			this.state = 3970;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 3972;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 3971;
				this.indexNames();
				}
			}

			this.state = 3974;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexHintType(): IndexHintTypeContext {
		let _localctx: IndexHintTypeContext = new IndexHintTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 266, MySqlParser.RULE_indexHintType);
		try {
			this.state = 3981;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_JOIN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3976;
				this.match(MySqlParser.KW_JOIN);
				}
				break;
			case MySqlParser.KW_ORDER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3977;
				this.match(MySqlParser.KW_ORDER);
				this.state = 3978;
				this.match(MySqlParser.KW_BY);
				}
				break;
			case MySqlParser.KW_GROUP:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3979;
				this.match(MySqlParser.KW_GROUP);
				this.state = 3980;
				this.match(MySqlParser.KW_BY);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public joinPart(): JoinPartContext {
		let _localctx: JoinPartContext = new JoinPartContext(this._ctx, this.state);
		this.enterRule(_localctx, 268, MySqlParser.RULE_joinPart);
		let _la: number;
		try {
			let _alt: number;
			this.state = 4032;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_CROSS:
			case MySqlParser.KW_INNER:
			case MySqlParser.KW_JOIN:
				_localctx = new InnerJoinContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3984;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CROSS || _la === MySqlParser.KW_INNER) {
					{
					this.state = 3983;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_CROSS || _la === MySqlParser.KW_INNER)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 3986;
				this.match(MySqlParser.KW_JOIN);
				this.state = 3988;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 555, this._ctx) ) {
				case 1:
					{
					this.state = 3987;
					this.match(MySqlParser.KW_LATERAL);
					}
					break;
				}
				this.state = 3990;
				this.tableSourceItem();
				this.state = 3994;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 556, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3991;
						this.joinSpec();
						}
						}
					}
					this.state = 3996;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 556, this._ctx);
				}
				}
				break;
			case MySqlParser.KW_STRAIGHT_JOIN:
				_localctx = new StraightJoinContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3997;
				this.match(MySqlParser.KW_STRAIGHT_JOIN);
				this.state = 3998;
				this.tableSourceItem();
				this.state = 4002;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 557, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3999;
						this.joinSpec();
						}
						}
					}
					this.state = 4004;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 557, this._ctx);
				}
				}
				break;
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_RIGHT:
				_localctx = new OuterJoinContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4005;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_LEFT || _la === MySqlParser.KW_RIGHT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 4007;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_OUTER) {
					{
					this.state = 4006;
					this.match(MySqlParser.KW_OUTER);
					}
				}

				this.state = 4009;
				this.match(MySqlParser.KW_JOIN);
				this.state = 4011;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 559, this._ctx) ) {
				case 1:
					{
					this.state = 4010;
					this.match(MySqlParser.KW_LATERAL);
					}
					break;
				}
				this.state = 4013;
				this.tableSourceItem();
				this.state = 4017;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 560, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4014;
						this.joinSpec();
						}
						}
					}
					this.state = 4019;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 560, this._ctx);
				}
				}
				break;
			case MySqlParser.KW_NATURAL:
				_localctx = new NaturalJoinContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4020;
				this.match(MySqlParser.KW_NATURAL);
				this.state = 4028;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INNER || _la === MySqlParser.KW_LEFT || _la === MySqlParser.KW_RIGHT) {
					{
					this.state = 4023;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_INNER:
						{
						this.state = 4021;
						this.match(MySqlParser.KW_INNER);
						}
						break;
					case MySqlParser.KW_LEFT:
					case MySqlParser.KW_RIGHT:
						{
						this.state = 4022;
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_LEFT || _la === MySqlParser.KW_RIGHT)) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 4026;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_OUTER) {
						{
						this.state = 4025;
						this.match(MySqlParser.KW_OUTER);
						}
					}

					}
				}

				this.state = 4030;
				this.match(MySqlParser.KW_JOIN);
				this.state = 4031;
				this.tableSourceItem();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public joinSpec(): JoinSpecContext {
		let _localctx: JoinSpecContext = new JoinSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 270, MySqlParser.RULE_joinSpec);
		try {
			this.state = 4041;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ON:
				this.enterOuterAlt(_localctx, 1);
				{
				{
				this.state = 4034;
				this.match(MySqlParser.KW_ON);
				this.state = 4035;
				this.expression(0);
				}
				}
				break;
			case MySqlParser.KW_USING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4036;
				this.match(MySqlParser.KW_USING);
				this.state = 4037;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4038;
				this.columnNames();
				this.state = 4039;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public queryExpression(): QueryExpressionContext {
		let _localctx: QueryExpressionContext = new QueryExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 272, MySqlParser.RULE_queryExpression);
		try {
			this.state = 4051;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 566, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4043;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4044;
				this.querySpecification();
				this.state = 4045;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4047;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4048;
				this.queryExpression();
				this.state = 4049;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public queryExpressionNointo(): QueryExpressionNointoContext {
		let _localctx: QueryExpressionNointoContext = new QueryExpressionNointoContext(this._ctx, this.state);
		this.enterRule(_localctx, 274, MySqlParser.RULE_queryExpressionNointo);
		try {
			this.state = 4061;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 567, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4053;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4054;
				this.querySpecificationNointo();
				this.state = 4055;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4057;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4058;
				this.queryExpressionNointo();
				this.state = 4059;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public querySpecification(): QuerySpecificationContext {
		let _localctx: QuerySpecificationContext = new QuerySpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 276, MySqlParser.RULE_querySpecification);
		try {
			let _alt: number;
			this.state = 4117;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 582, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4063;
				this.match(MySqlParser.KW_SELECT);
				this.state = 4067;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 568, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4064;
						this.selectSpec();
						}
						}
					}
					this.state = 4069;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 568, this._ctx);
				}
				this.state = 4070;
				this.selectElements();
				this.state = 4072;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 569, this._ctx) ) {
				case 1:
					{
					this.state = 4071;
					this.intoClause();
					}
					break;
				}
				this.state = 4074;
				this.fromClause();
				this.state = 4076;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 570, this._ctx) ) {
				case 1:
					{
					this.state = 4075;
					this.groupByClause();
					}
					break;
				}
				this.state = 4079;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 571, this._ctx) ) {
				case 1:
					{
					this.state = 4078;
					this.havingClause();
					}
					break;
				}
				this.state = 4082;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 572, this._ctx) ) {
				case 1:
					{
					this.state = 4081;
					this.windowClause();
					}
					break;
				}
				this.state = 4085;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 573, this._ctx) ) {
				case 1:
					{
					this.state = 4084;
					this.orderByClause();
					}
					break;
				}
				this.state = 4088;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 574, this._ctx) ) {
				case 1:
					{
					this.state = 4087;
					this.limitClause();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4090;
				this.match(MySqlParser.KW_SELECT);
				this.state = 4094;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 575, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4091;
						this.selectSpec();
						}
						}
					}
					this.state = 4096;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 575, this._ctx);
				}
				this.state = 4097;
				this.selectElements();
				this.state = 4098;
				this.fromClause();
				this.state = 4100;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 576, this._ctx) ) {
				case 1:
					{
					this.state = 4099;
					this.groupByClause();
					}
					break;
				}
				this.state = 4103;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 577, this._ctx) ) {
				case 1:
					{
					this.state = 4102;
					this.havingClause();
					}
					break;
				}
				this.state = 4106;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 578, this._ctx) ) {
				case 1:
					{
					this.state = 4105;
					this.windowClause();
					}
					break;
				}
				this.state = 4109;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 579, this._ctx) ) {
				case 1:
					{
					this.state = 4108;
					this.orderByClause();
					}
					break;
				}
				this.state = 4112;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 580, this._ctx) ) {
				case 1:
					{
					this.state = 4111;
					this.limitClause();
					}
					break;
				}
				this.state = 4115;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 581, this._ctx) ) {
				case 1:
					{
					this.state = 4114;
					this.intoClause();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public querySpecificationNointo(): QuerySpecificationNointoContext {
		let _localctx: QuerySpecificationNointoContext = new QuerySpecificationNointoContext(this._ctx, this.state);
		this.enterRule(_localctx, 278, MySqlParser.RULE_querySpecificationNointo);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4119;
			this.match(MySqlParser.KW_SELECT);
			this.state = 4123;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 583, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4120;
					this.selectSpec();
					}
					}
				}
				this.state = 4125;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 583, this._ctx);
			}
			this.state = 4126;
			this.selectElements();
			this.state = 4127;
			this.fromClause();
			this.state = 4129;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 584, this._ctx) ) {
			case 1:
				{
				this.state = 4128;
				this.groupByClause();
				}
				break;
			}
			this.state = 4132;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 585, this._ctx) ) {
			case 1:
				{
				this.state = 4131;
				this.havingClause();
				}
				break;
			}
			this.state = 4135;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 586, this._ctx) ) {
			case 1:
				{
				this.state = 4134;
				this.windowClause();
				}
				break;
			}
			this.state = 4138;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 587, this._ctx) ) {
			case 1:
				{
				this.state = 4137;
				this.orderByClause();
				}
				break;
			}
			this.state = 4141;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 588, this._ctx) ) {
			case 1:
				{
				this.state = 4140;
				this.limitClause();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unionParenthesis(): UnionParenthesisContext {
		let _localctx: UnionParenthesisContext = new UnionParenthesisContext(this._ctx, this.state);
		this.enterRule(_localctx, 280, MySqlParser.RULE_unionParenthesis);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4143;
			this.match(MySqlParser.KW_UNION);
			this.state = 4145;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
				{
				this.state = 4144;
				_localctx._unionType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
					_localctx._unionType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 4147;
			this.queryExpressionNointo();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unionStatement(): UnionStatementContext {
		let _localctx: UnionStatementContext = new UnionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 282, MySqlParser.RULE_unionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4149;
			this.match(MySqlParser.KW_UNION);
			this.state = 4151;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT) {
				{
				this.state = 4150;
				_localctx._unionType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
					_localctx._unionType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 4155;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SELECT:
				{
				this.state = 4153;
				this.querySpecificationNointo();
				}
				break;
			case MySqlParser.LR_BRACKET:
				{
				this.state = 4154;
				this.queryExpressionNointo();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lateralStatement(): LateralStatementContext {
		let _localctx: LateralStatementContext = new LateralStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 284, MySqlParser.RULE_lateralStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4157;
			this.match(MySqlParser.KW_LATERAL);
			this.state = 4172;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 595, this._ctx) ) {
			case 1:
				{
				this.state = 4158;
				this.querySpecificationNointo();
				}
				break;

			case 2:
				{
				this.state = 4159;
				this.queryExpressionNointo();
				}
				break;

			case 3:
				{
				{
				this.state = 4160;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4163;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_SELECT:
					{
					this.state = 4161;
					this.querySpecificationNointo();
					}
					break;
				case MySqlParser.LR_BRACKET:
					{
					this.state = 4162;
					this.queryExpressionNointo();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4165;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 4170;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 594, this._ctx) ) {
				case 1:
					{
					this.state = 4167;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_AS) {
						{
						this.state = 4166;
						this.match(MySqlParser.KW_AS);
						}
					}

					this.state = 4169;
					_localctx._alias = this.uid();
					}
					break;
				}
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public jsonTable(): JsonTableContext {
		let _localctx: JsonTableContext = new JsonTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 286, MySqlParser.RULE_jsonTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4174;
			this.match(MySqlParser.KW_JSON_TABLE);
			this.state = 4175;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 4176;
			this.match(MySqlParser.STRING_LITERAL);
			this.state = 4177;
			this.match(MySqlParser.COMMA);
			this.state = 4178;
			this.match(MySqlParser.STRING_LITERAL);
			this.state = 4179;
			this.match(MySqlParser.KW_COLUMNS);
			this.state = 4180;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 4181;
			this.jsonColumnList();
			this.state = 4182;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 4183;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 4188;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 597, this._ctx) ) {
			case 1:
				{
				this.state = 4185;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 4184;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 4187;
				_localctx._alias = this.uid();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public jsonColumnList(): JsonColumnListContext {
		let _localctx: JsonColumnListContext = new JsonColumnListContext(this._ctx, this.state);
		this.enterRule(_localctx, 288, MySqlParser.RULE_jsonColumnList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4190;
			this.jsonColumn();
			this.state = 4195;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 4191;
				this.match(MySqlParser.COMMA);
				this.state = 4192;
				this.jsonColumn();
				}
				}
				this.state = 4197;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public jsonColumn(): JsonColumnContext {
		let _localctx: JsonColumnContext = new JsonColumnContext(this._ctx, this.state);
		this.enterRule(_localctx, 290, MySqlParser.RULE_jsonColumn);
		let _la: number;
		try {
			this.state = 4227;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 604, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4198;
				this.columnName();
				this.state = 4215;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_FOR:
					{
					this.state = 4199;
					this.match(MySqlParser.KW_FOR);
					this.state = 4200;
					this.match(MySqlParser.KW_ORDINALITY);
					}
					break;
				case MySqlParser.KW_CHARACTER:
				case MySqlParser.KW_SET:
				case MySqlParser.KW_TINYINT:
				case MySqlParser.KW_SMALLINT:
				case MySqlParser.KW_MEDIUMINT:
				case MySqlParser.KW_MIDDLEINT:
				case MySqlParser.KW_INT:
				case MySqlParser.KW_INT1:
				case MySqlParser.KW_INT2:
				case MySqlParser.KW_INT3:
				case MySqlParser.KW_INT4:
				case MySqlParser.KW_INT8:
				case MySqlParser.KW_INTEGER:
				case MySqlParser.KW_BIGINT:
				case MySqlParser.KW_REAL:
				case MySqlParser.KW_DOUBLE:
				case MySqlParser.KW_FLOAT:
				case MySqlParser.KW_FLOAT4:
				case MySqlParser.KW_FLOAT8:
				case MySqlParser.KW_DECIMAL:
				case MySqlParser.KW_DEC:
				case MySqlParser.KW_NUMERIC:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_CHAR:
				case MySqlParser.KW_VARCHAR:
				case MySqlParser.KW_NVARCHAR:
				case MySqlParser.KW_NATIONAL:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_VARBINARY:
				case MySqlParser.KW_TINYBLOB:
				case MySqlParser.KW_BLOB:
				case MySqlParser.KW_MEDIUMBLOB:
				case MySqlParser.KW_LONG:
				case MySqlParser.KW_LONGBLOB:
				case MySqlParser.KW_TINYTEXT:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_MEDIUMTEXT:
				case MySqlParser.KW_LONGTEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_GEOMCOLLECTION:
				case MySqlParser.KW_GEOMETRY:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
					{
					this.state = 4201;
					this.dataType();
					this.state = 4213;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_PATH:
						{
						this.state = 4202;
						this.match(MySqlParser.KW_PATH);
						this.state = 4203;
						this.match(MySqlParser.STRING_LITERAL);
						this.state = 4205;
						this._errHandler.sync(this);
						switch ( this.interpreter.adaptivePredict(this._input, 599, this._ctx) ) {
						case 1:
							{
							this.state = 4204;
							this.jsonOnEmpty();
							}
							break;
						}
						this.state = 4208;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_NULL_LITERAL || _la === MySqlParser.KW_ERROR) {
							{
							this.state = 4207;
							this.jsonOnError();
							}
						}

						}
						break;
					case MySqlParser.KW_EXISTS:
						{
						this.state = 4210;
						this.match(MySqlParser.KW_EXISTS);
						this.state = 4211;
						this.match(MySqlParser.KW_PATH);
						this.state = 4212;
						this.match(MySqlParser.STRING_LITERAL);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4217;
				this.match(MySqlParser.KW_NESTED);
				this.state = 4219;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PATH) {
					{
					this.state = 4218;
					this.match(MySqlParser.KW_PATH);
					}
				}

				this.state = 4221;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 4222;
				this.match(MySqlParser.KW_COLUMNS);
				this.state = 4223;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4224;
				this.jsonColumnList();
				this.state = 4225;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public jsonOnEmpty(): JsonOnEmptyContext {
		let _localctx: JsonOnEmptyContext = new JsonOnEmptyContext(this._ctx, this.state);
		this.enterRule(_localctx, 292, MySqlParser.RULE_jsonOnEmpty);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4233;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_NULL_LITERAL:
				{
				this.state = 4229;
				this.match(MySqlParser.KW_NULL_LITERAL);
				}
				break;
			case MySqlParser.KW_ERROR:
				{
				this.state = 4230;
				this.match(MySqlParser.KW_ERROR);
				}
				break;
			case MySqlParser.KW_DEFAULT:
				{
				this.state = 4231;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 4232;
				this.defaultValue();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 4235;
			this.match(MySqlParser.KW_ON);
			this.state = 4236;
			this.match(MySqlParser.KW_EMPTY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public jsonOnError(): JsonOnErrorContext {
		let _localctx: JsonOnErrorContext = new JsonOnErrorContext(this._ctx, this.state);
		this.enterRule(_localctx, 294, MySqlParser.RULE_jsonOnError);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4242;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_NULL_LITERAL:
				{
				this.state = 4238;
				this.match(MySqlParser.KW_NULL_LITERAL);
				}
				break;
			case MySqlParser.KW_ERROR:
				{
				this.state = 4239;
				this.match(MySqlParser.KW_ERROR);
				}
				break;
			case MySqlParser.KW_DEFAULT:
				{
				this.state = 4240;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 4241;
				this.defaultValue();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 4244;
			this.match(MySqlParser.KW_ON);
			this.state = 4245;
			this.match(MySqlParser.KW_ERROR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectSpec(): SelectSpecContext {
		let _localctx: SelectSpecContext = new SelectSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 296, MySqlParser.RULE_selectSpec);
		let _la: number;
		try {
			this.state = 4255;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ALL:
			case MySqlParser.KW_DISTINCT:
			case MySqlParser.KW_DISTINCTROW:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4247;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT || _la === MySqlParser.KW_DISTINCTROW)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_HIGH_PRIORITY:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4248;
				this.match(MySqlParser.KW_HIGH_PRIORITY);
				}
				break;
			case MySqlParser.KW_STRAIGHT_JOIN:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4249;
				this.match(MySqlParser.KW_STRAIGHT_JOIN);
				}
				break;
			case MySqlParser.KW_SQL_SMALL_RESULT:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4250;
				this.match(MySqlParser.KW_SQL_SMALL_RESULT);
				}
				break;
			case MySqlParser.KW_SQL_BIG_RESULT:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4251;
				this.match(MySqlParser.KW_SQL_BIG_RESULT);
				}
				break;
			case MySqlParser.KW_SQL_BUFFER_RESULT:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4252;
				this.match(MySqlParser.KW_SQL_BUFFER_RESULT);
				}
				break;
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4253;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_SQL_CACHE || _la === MySqlParser.KW_SQL_NO_CACHE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_SQL_CALC_FOUND_ROWS:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4254;
				this.match(MySqlParser.KW_SQL_CALC_FOUND_ROWS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectElements(): SelectElementsContext {
		let _localctx: SelectElementsContext = new SelectElementsContext(this._ctx, this.state);
		this.enterRule(_localctx, 298, MySqlParser.RULE_selectElements);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4259;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 608, this._ctx) ) {
			case 1:
				{
				this.state = 4257;
				_localctx._star = this.match(MySqlParser.STAR);
				}
				break;

			case 2:
				{
				this.state = 4258;
				this.selectElement();
				}
				break;
			}
			this.state = 4265;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 609, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4261;
					this.match(MySqlParser.COMMA);
					this.state = 4262;
					this.selectElement();
					}
					}
				}
				this.state = 4267;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 609, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectElement(): SelectElementContext {
		let _localctx: SelectElementContext = new SelectElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 300, MySqlParser.RULE_selectElement);
		let _la: number;
		try {
			this.state = 4297;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 617, this._ctx) ) {
			case 1:
				_localctx = new SelectStarElementContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4268;
				(_localctx as SelectStarElementContext)._select_element = this.fullId();
				this.state = 4269;
				this.match(MySqlParser.DOT);
				this.state = 4270;
				this.match(MySqlParser.STAR);
				}
				break;

			case 2:
				_localctx = new SelectColumnElementContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4272;
				this.columnName();
				this.state = 4277;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 611, this._ctx) ) {
				case 1:
					{
					this.state = 4274;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_AS) {
						{
						this.state = 4273;
						this.match(MySqlParser.KW_AS);
						}
					}

					this.state = 4276;
					(_localctx as SelectColumnElementContext)._alias = this.uid();
					}
					break;
				}
				}
				break;

			case 3:
				_localctx = new SelectFunctionElementContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4279;
				this.functionCall();
				this.state = 4284;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 613, this._ctx) ) {
				case 1:
					{
					this.state = 4281;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_AS) {
						{
						this.state = 4280;
						this.match(MySqlParser.KW_AS);
						}
					}

					this.state = 4283;
					(_localctx as SelectFunctionElementContext)._alias = this.uid();
					}
					break;
				}
				}
				break;

			case 4:
				_localctx = new SelectExpressionElementContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4288;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 614, this._ctx) ) {
				case 1:
					{
					this.state = 4286;
					this.match(MySqlParser.LOCAL_ID);
					this.state = 4287;
					this.match(MySqlParser.VAR_ASSIGN);
					}
					break;
				}
				this.state = 4290;
				this.expression(0);
				this.state = 4295;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 616, this._ctx) ) {
				case 1:
					{
					this.state = 4292;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_AS) {
						{
						this.state = 4291;
						this.match(MySqlParser.KW_AS);
						}
					}

					this.state = 4294;
					(_localctx as SelectExpressionElementContext)._alias = this.uid();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intoClause(): IntoClauseContext {
		let _localctx: IntoClauseContext = new IntoClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 302, MySqlParser.RULE_intoClause);
		let _la: number;
		try {
			let _alt: number;
			this.state = 4335;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 624, this._ctx) ) {
			case 1:
				_localctx = new SelectIntoVariablesContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4299;
				this.match(MySqlParser.KW_INTO);
				this.state = 4300;
				this.assignmentField();
				this.state = 4305;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 618, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4301;
						this.match(MySqlParser.COMMA);
						this.state = 4302;
						this.assignmentField();
						}
						}
					}
					this.state = 4307;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 618, this._ctx);
				}
				}
				break;

			case 2:
				_localctx = new SelectIntoDumpFileContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4308;
				this.match(MySqlParser.KW_INTO);
				this.state = 4309;
				this.match(MySqlParser.KW_DUMPFILE);
				this.state = 4310;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 3:
				_localctx = new SelectIntoTextFileContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				{
				this.state = 4311;
				this.match(MySqlParser.KW_INTO);
				this.state = 4312;
				this.match(MySqlParser.KW_OUTFILE);
				this.state = 4313;
				(_localctx as SelectIntoTextFileContext)._filename = this.match(MySqlParser.STRING_LITERAL);
				this.state = 4317;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 619, this._ctx) ) {
				case 1:
					{
					this.state = 4314;
					this.match(MySqlParser.KW_CHARACTER);
					this.state = 4315;
					this.match(MySqlParser.KW_SET);
					this.state = 4316;
					(_localctx as SelectIntoTextFileContext)._charset = this.charsetName();
					}
					break;
				}
				this.state = 4325;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 621, this._ctx) ) {
				case 1:
					{
					this.state = 4319;
					(_localctx as SelectIntoTextFileContext)._fieldsFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_COLUMNS || _la === MySqlParser.KW_FIELDS)) {
						(_localctx as SelectIntoTextFileContext)._fieldsFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 4321;
					this._errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							{
							this.state = 4320;
							this.selectFieldsInto();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						this.state = 4323;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 620, this._ctx);
					} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
					}
					break;
				}
				this.state = 4333;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 623, this._ctx) ) {
				case 1:
					{
					this.state = 4327;
					this.match(MySqlParser.KW_LINES);
					this.state = 4329;
					this._errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							{
							this.state = 4328;
							this.selectLinesInto();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						this.state = 4331;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 622, this._ctx);
					} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
					}
					break;
				}
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectFieldsInto(): SelectFieldsIntoContext {
		let _localctx: SelectFieldsIntoContext = new SelectFieldsIntoContext(this._ctx, this.state);
		this.enterRule(_localctx, 304, MySqlParser.RULE_selectFieldsInto);
		let _la: number;
		try {
			this.state = 4349;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_TERMINATED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4337;
				this.match(MySqlParser.KW_TERMINATED);
				this.state = 4338;
				this.match(MySqlParser.KW_BY);
				this.state = 4339;
				_localctx._terminationField = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_ENCLOSED:
			case MySqlParser.KW_OPTIONALLY:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4341;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_OPTIONALLY) {
					{
					this.state = 4340;
					this.match(MySqlParser.KW_OPTIONALLY);
					}
				}

				this.state = 4343;
				this.match(MySqlParser.KW_ENCLOSED);
				this.state = 4344;
				this.match(MySqlParser.KW_BY);
				this.state = 4345;
				_localctx._enclosion = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_ESCAPED:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4346;
				this.match(MySqlParser.KW_ESCAPED);
				this.state = 4347;
				this.match(MySqlParser.KW_BY);
				this.state = 4348;
				_localctx._escaping = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectLinesInto(): SelectLinesIntoContext {
		let _localctx: SelectLinesIntoContext = new SelectLinesIntoContext(this._ctx, this.state);
		this.enterRule(_localctx, 306, MySqlParser.RULE_selectLinesInto);
		try {
			this.state = 4357;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_STARTING:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4351;
				this.match(MySqlParser.KW_STARTING);
				this.state = 4352;
				this.match(MySqlParser.KW_BY);
				this.state = 4353;
				_localctx._starting = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_TERMINATED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4354;
				this.match(MySqlParser.KW_TERMINATED);
				this.state = 4355;
				this.match(MySqlParser.KW_BY);
				this.state = 4356;
				_localctx._terminationLine = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fromClause(): FromClauseContext {
		let _localctx: FromClauseContext = new FromClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 308, MySqlParser.RULE_fromClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4361;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 628, this._ctx) ) {
			case 1:
				{
				this.state = 4359;
				this.match(MySqlParser.KW_FROM);
				this.state = 4360;
				this.tableSources();
				}
				break;
			}
			this.state = 4365;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 629, this._ctx) ) {
			case 1:
				{
				this.state = 4363;
				this.match(MySqlParser.KW_WHERE);
				this.state = 4364;
				_localctx._whereExpr = this.expression(0);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupByClause(): GroupByClauseContext {
		let _localctx: GroupByClauseContext = new GroupByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 310, MySqlParser.RULE_groupByClause);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4367;
			this.match(MySqlParser.KW_GROUP);
			this.state = 4368;
			this.match(MySqlParser.KW_BY);
			this.state = 4369;
			this.groupByItem();
			this.state = 4374;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 630, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4370;
					this.match(MySqlParser.COMMA);
					this.state = 4371;
					this.groupByItem();
					}
					}
				}
				this.state = 4376;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 630, this._ctx);
			}
			this.state = 4379;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 631, this._ctx) ) {
			case 1:
				{
				this.state = 4377;
				this.match(MySqlParser.KW_WITH);
				this.state = 4378;
				this.match(MySqlParser.KW_ROLLUP);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public havingClause(): HavingClauseContext {
		let _localctx: HavingClauseContext = new HavingClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 312, MySqlParser.RULE_havingClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4381;
			this.match(MySqlParser.KW_HAVING);
			this.state = 4382;
			_localctx._havingExpr = this.expression(0);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public windowClause(): WindowClauseContext {
		let _localctx: WindowClauseContext = new WindowClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 314, MySqlParser.RULE_windowClause);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4384;
			this.match(MySqlParser.KW_WINDOW);
			this.state = 4385;
			this.windowName();
			this.state = 4386;
			this.match(MySqlParser.KW_AS);
			this.state = 4387;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 4388;
			this.windowSpec();
			this.state = 4389;
			this.match(MySqlParser.RR_BRACKET);
			this.state = 4399;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 632, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4390;
					this.match(MySqlParser.COMMA);
					this.state = 4391;
					this.windowName();
					this.state = 4392;
					this.match(MySqlParser.KW_AS);
					this.state = 4393;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 4394;
					this.windowSpec();
					this.state = 4395;
					this.match(MySqlParser.RR_BRACKET);
					}
					}
				}
				this.state = 4401;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 632, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupByItem(): GroupByItemContext {
		let _localctx: GroupByItemContext = new GroupByItemContext(this._ctx, this.state);
		this.enterRule(_localctx, 316, MySqlParser.RULE_groupByItem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4402;
			this.expression(0);
			this.state = 4404;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 633, this._ctx) ) {
			case 1:
				{
				this.state = 4403;
				_localctx._order = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ASC || _la === MySqlParser.KW_DESC)) {
					_localctx._order = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public limitClause(): LimitClauseContext {
		let _localctx: LimitClauseContext = new LimitClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 318, MySqlParser.RULE_limitClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4406;
			this.match(MySqlParser.KW_LIMIT);
			this.state = 4417;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 635, this._ctx) ) {
			case 1:
				{
				this.state = 4410;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 634, this._ctx) ) {
				case 1:
					{
					this.state = 4407;
					_localctx._offset = this.limitClauseAtom();
					this.state = 4408;
					this.match(MySqlParser.COMMA);
					}
					break;
				}
				this.state = 4412;
				_localctx._limit = this.limitClauseAtom();
				}
				break;

			case 2:
				{
				this.state = 4413;
				_localctx._limit = this.limitClauseAtom();
				this.state = 4414;
				this.match(MySqlParser.KW_OFFSET);
				this.state = 4415;
				_localctx._offset = this.limitClauseAtom();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public limitClauseAtom(): LimitClauseAtomContext {
		let _localctx: LimitClauseAtomContext = new LimitClauseAtomContext(this._ctx, this.state);
		this.enterRule(_localctx, 320, MySqlParser.RULE_limitClauseAtom);
		try {
			this.state = 4422;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.ZERO_DECIMAL:
			case MySqlParser.ONE_DECIMAL:
			case MySqlParser.TWO_DECIMAL:
			case MySqlParser.THREE_DECIMAL:
			case MySqlParser.DECIMAL_LITERAL:
			case MySqlParser.REAL_LITERAL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4419;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.LOCAL_ID:
			case MySqlParser.GLOBAL_ID:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4420;
				this.mysqlVariable();
				}
				break;
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.ID:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4421;
				this.simpleId();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public startTransaction(): StartTransactionContext {
		let _localctx: StartTransactionContext = new StartTransactionContext(this._ctx, this.state);
		this.enterRule(_localctx, 322, MySqlParser.RULE_startTransaction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4424;
			this.match(MySqlParser.KW_START);
			this.state = 4425;
			this.match(MySqlParser.KW_TRANSACTION);
			this.state = 4434;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 638, this._ctx) ) {
			case 1:
				{
				this.state = 4426;
				this.transactionMode();
				this.state = 4431;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 4427;
					this.match(MySqlParser.COMMA);
					this.state = 4428;
					this.transactionMode();
					}
					}
					this.state = 4433;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public beginWork(): BeginWorkContext {
		let _localctx: BeginWorkContext = new BeginWorkContext(this._ctx, this.state);
		this.enterRule(_localctx, 324, MySqlParser.RULE_beginWork);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4436;
			this.match(MySqlParser.KW_BEGIN);
			this.state = 4438;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WORK) {
				{
				this.state = 4437;
				this.match(MySqlParser.KW_WORK);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public commitWork(): CommitWorkContext {
		let _localctx: CommitWorkContext = new CommitWorkContext(this._ctx, this.state);
		this.enterRule(_localctx, 326, MySqlParser.RULE_commitWork);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4440;
			this.match(MySqlParser.KW_COMMIT);
			this.state = 4442;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WORK) {
				{
				this.state = 4441;
				this.match(MySqlParser.KW_WORK);
				}
			}

			this.state = 4449;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AND) {
				{
				this.state = 4444;
				this.match(MySqlParser.KW_AND);
				this.state = 4446;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO) {
					{
					this.state = 4445;
					_localctx._nochain = this.match(MySqlParser.KW_NO);
					}
				}

				this.state = 4448;
				this.match(MySqlParser.KW_CHAIN);
				}
			}

			this.state = 4455;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 644, this._ctx) ) {
			case 1:
				{
				this.state = 4452;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO) {
					{
					this.state = 4451;
					_localctx._norelease = this.match(MySqlParser.KW_NO);
					}
				}

				this.state = 4454;
				this.match(MySqlParser.KW_RELEASE);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rollbackWork(): RollbackWorkContext {
		let _localctx: RollbackWorkContext = new RollbackWorkContext(this._ctx, this.state);
		this.enterRule(_localctx, 328, MySqlParser.RULE_rollbackWork);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4457;
			this.match(MySqlParser.KW_ROLLBACK);
			this.state = 4459;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WORK) {
				{
				this.state = 4458;
				this.match(MySqlParser.KW_WORK);
				}
			}

			this.state = 4466;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AND) {
				{
				this.state = 4461;
				this.match(MySqlParser.KW_AND);
				this.state = 4463;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO) {
					{
					this.state = 4462;
					_localctx._nochain = this.match(MySqlParser.KW_NO);
					}
				}

				this.state = 4465;
				this.match(MySqlParser.KW_CHAIN);
				}
			}

			this.state = 4472;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 649, this._ctx) ) {
			case 1:
				{
				this.state = 4469;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO) {
					{
					this.state = 4468;
					_localctx._norelease = this.match(MySqlParser.KW_NO);
					}
				}

				this.state = 4471;
				this.match(MySqlParser.KW_RELEASE);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public savepointStatement(): SavepointStatementContext {
		let _localctx: SavepointStatementContext = new SavepointStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 330, MySqlParser.RULE_savepointStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4474;
			this.match(MySqlParser.KW_SAVEPOINT);
			this.state = 4475;
			_localctx._identifier = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rollbackStatement(): RollbackStatementContext {
		let _localctx: RollbackStatementContext = new RollbackStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 332, MySqlParser.RULE_rollbackStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4477;
			this.match(MySqlParser.KW_ROLLBACK);
			this.state = 4479;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WORK) {
				{
				this.state = 4478;
				this.match(MySqlParser.KW_WORK);
				}
			}

			this.state = 4481;
			this.match(MySqlParser.KW_TO);
			this.state = 4483;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 651, this._ctx) ) {
			case 1:
				{
				this.state = 4482;
				this.match(MySqlParser.KW_SAVEPOINT);
				}
				break;
			}
			this.state = 4485;
			_localctx._identifier = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public releaseStatement(): ReleaseStatementContext {
		let _localctx: ReleaseStatementContext = new ReleaseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 334, MySqlParser.RULE_releaseStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4487;
			this.match(MySqlParser.KW_RELEASE);
			this.state = 4488;
			this.match(MySqlParser.KW_SAVEPOINT);
			this.state = 4489;
			_localctx._identifier = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockTables(): LockTablesContext {
		let _localctx: LockTablesContext = new LockTablesContext(this._ctx, this.state);
		this.enterRule(_localctx, 336, MySqlParser.RULE_lockTables);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4491;
			this.match(MySqlParser.KW_LOCK);
			this.state = 4492;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_TABLE || _la === MySqlParser.KW_TABLES)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4493;
			this.lockTableElement();
			this.state = 4498;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 4494;
				this.match(MySqlParser.COMMA);
				this.state = 4495;
				this.lockTableElement();
				}
				}
				this.state = 4500;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unlockTables(): UnlockTablesContext {
		let _localctx: UnlockTablesContext = new UnlockTablesContext(this._ctx, this.state);
		this.enterRule(_localctx, 338, MySqlParser.RULE_unlockTables);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4501;
			this.match(MySqlParser.KW_UNLOCK);
			this.state = 4502;
			this.match(MySqlParser.KW_TABLES);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setAutocommitStatement(): SetAutocommitStatementContext {
		let _localctx: SetAutocommitStatementContext = new SetAutocommitStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 340, MySqlParser.RULE_setAutocommitStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4504;
			this.match(MySqlParser.KW_SET);
			this.state = 4505;
			this.match(MySqlParser.KW_AUTOCOMMIT);
			this.state = 4506;
			this.match(MySqlParser.EQUAL_SYMBOL);
			this.state = 4507;
			_localctx._autocommitValue = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
				_localctx._autocommitValue = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setTransactionStatement(): SetTransactionStatementContext {
		let _localctx: SetTransactionStatementContext = new SetTransactionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 342, MySqlParser.RULE_setTransactionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4509;
			this.match(MySqlParser.KW_SET);
			this.state = 4511;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_GLOBAL || _la === MySqlParser.KW_SESSION) {
				{
				this.state = 4510;
				_localctx._transactionContext = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_GLOBAL || _la === MySqlParser.KW_SESSION)) {
					_localctx._transactionContext = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 4513;
			this.match(MySqlParser.KW_TRANSACTION);
			this.state = 4514;
			this.transactionOption();
			this.state = 4519;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 4515;
				this.match(MySqlParser.COMMA);
				this.state = 4516;
				this.transactionOption();
				}
				}
				this.state = 4521;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionMode(): TransactionModeContext {
		let _localctx: TransactionModeContext = new TransactionModeContext(this._ctx, this.state);
		this.enterRule(_localctx, 344, MySqlParser.RULE_transactionMode);
		try {
			this.state = 4529;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 655, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4522;
				this.match(MySqlParser.KW_WITH);
				this.state = 4523;
				this.match(MySqlParser.KW_CONSISTENT);
				this.state = 4524;
				this.match(MySqlParser.KW_SNAPSHOT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4525;
				this.match(MySqlParser.KW_READ);
				this.state = 4526;
				this.match(MySqlParser.KW_WRITE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4527;
				this.match(MySqlParser.KW_READ);
				this.state = 4528;
				this.match(MySqlParser.KW_ONLY);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockTableElement(): LockTableElementContext {
		let _localctx: LockTableElementContext = new LockTableElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 346, MySqlParser.RULE_lockTableElement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4531;
			this.tableName();
			this.state = 4536;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_AS) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 4533;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 4532;
					this.match(MySqlParser.KW_AS);
					}
				}

				this.state = 4535;
				_localctx._alias = this.uid();
				}
			}

			this.state = 4538;
			this.lockAction();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockAction(): LockActionContext {
		let _localctx: LockActionContext = new LockActionContext(this._ctx, this.state);
		this.enterRule(_localctx, 348, MySqlParser.RULE_lockAction);
		let _la: number;
		try {
			this.state = 4548;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_READ:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4540;
				this.match(MySqlParser.KW_READ);
				this.state = 4542;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LOCAL) {
					{
					this.state = 4541;
					this.match(MySqlParser.KW_LOCAL);
					}
				}

				}
				break;
			case MySqlParser.KW_LOW_PRIORITY:
			case MySqlParser.KW_WRITE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4545;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LOW_PRIORITY) {
					{
					this.state = 4544;
					this.match(MySqlParser.KW_LOW_PRIORITY);
					}
				}

				this.state = 4547;
				this.match(MySqlParser.KW_WRITE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionOption(): TransactionOptionContext {
		let _localctx: TransactionOptionContext = new TransactionOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 350, MySqlParser.RULE_transactionOption);
		try {
			this.state = 4557;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 661, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4550;
				this.match(MySqlParser.KW_ISOLATION);
				this.state = 4551;
				this.match(MySqlParser.KW_LEVEL);
				this.state = 4552;
				this.transactionLevel();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4553;
				this.match(MySqlParser.KW_READ);
				this.state = 4554;
				this.match(MySqlParser.KW_WRITE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4555;
				this.match(MySqlParser.KW_READ);
				this.state = 4556;
				this.match(MySqlParser.KW_ONLY);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionLevel(): TransactionLevelContext {
		let _localctx: TransactionLevelContext = new TransactionLevelContext(this._ctx, this.state);
		this.enterRule(_localctx, 352, MySqlParser.RULE_transactionLevel);
		try {
			this.state = 4566;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 662, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4559;
				this.match(MySqlParser.KW_REPEATABLE);
				this.state = 4560;
				this.match(MySqlParser.KW_READ);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4561;
				this.match(MySqlParser.KW_READ);
				this.state = 4562;
				this.match(MySqlParser.KW_COMMITTED);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4563;
				this.match(MySqlParser.KW_READ);
				this.state = 4564;
				this.match(MySqlParser.KW_UNCOMMITTED);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4565;
				this.match(MySqlParser.KW_SERIALIZABLE);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public changeMaster(): ChangeMasterContext {
		let _localctx: ChangeMasterContext = new ChangeMasterContext(this._ctx, this.state);
		this.enterRule(_localctx, 354, MySqlParser.RULE_changeMaster);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4568;
			this.match(MySqlParser.KW_CHANGE);
			this.state = 4569;
			this.match(MySqlParser.KW_MASTER);
			this.state = 4570;
			this.match(MySqlParser.KW_TO);
			this.state = 4571;
			this.masterOption();
			this.state = 4576;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 4572;
				this.match(MySqlParser.COMMA);
				this.state = 4573;
				this.masterOption();
				}
				}
				this.state = 4578;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4580;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 4579;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public changeReplicationFilter(): ChangeReplicationFilterContext {
		let _localctx: ChangeReplicationFilterContext = new ChangeReplicationFilterContext(this._ctx, this.state);
		this.enterRule(_localctx, 356, MySqlParser.RULE_changeReplicationFilter);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4582;
			this.match(MySqlParser.KW_CHANGE);
			this.state = 4583;
			this.match(MySqlParser.KW_REPLICATION);
			this.state = 4584;
			this.match(MySqlParser.KW_FILTER);
			this.state = 4585;
			this.replicationFilter();
			this.state = 4590;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 4586;
				this.match(MySqlParser.COMMA);
				this.state = 4587;
				this.replicationFilter();
				}
				}
				this.state = 4592;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4594;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 4593;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public changeReplicationSource(): ChangeReplicationSourceContext {
		let _localctx: ChangeReplicationSourceContext = new ChangeReplicationSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 358, MySqlParser.RULE_changeReplicationSource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4596;
			this.match(MySqlParser.KW_CHANGE);
			this.state = 4597;
			this.match(MySqlParser.KW_REPLICATION);
			this.state = 4598;
			this.match(MySqlParser.KW_SOURCE);
			this.state = 4599;
			this.match(MySqlParser.KW_TO);
			this.state = 4600;
			this.replicationSourceOption();
			this.state = 4605;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 4601;
				this.match(MySqlParser.COMMA);
				this.state = 4602;
				this.replicationSourceOption();
				}
				}
				this.state = 4607;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4609;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 4608;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public purgeBinaryLogs(): PurgeBinaryLogsContext {
		let _localctx: PurgeBinaryLogsContext = new PurgeBinaryLogsContext(this._ctx, this.state);
		this.enterRule(_localctx, 360, MySqlParser.RULE_purgeBinaryLogs);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4611;
			this.match(MySqlParser.KW_PURGE);
			this.state = 4612;
			_localctx._purgeFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_BINARY || _la === MySqlParser.KW_MASTER)) {
				_localctx._purgeFormat = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4613;
			this.match(MySqlParser.KW_LOGS);
			this.state = 4618;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_TO:
				{
				this.state = 4614;
				this.match(MySqlParser.KW_TO);
				this.state = 4615;
				_localctx._fileName = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_BEFORE:
				{
				this.state = 4616;
				this.match(MySqlParser.KW_BEFORE);
				this.state = 4617;
				_localctx._timeValue = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public startSlaveOrReplica(): StartSlaveOrReplicaContext {
		let _localctx: StartSlaveOrReplicaContext = new StartSlaveOrReplicaContext(this._ctx, this.state);
		this.enterRule(_localctx, 362, MySqlParser.RULE_startSlaveOrReplica);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4620;
			this.match(MySqlParser.KW_START);
			this.state = 4621;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_REPLICA || _la === MySqlParser.KW_SLAVE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4630;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IO_THREAD || _la === MySqlParser.KW_SQL_THREAD) {
				{
				this.state = 4622;
				this.threadType();
				this.state = 4627;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 4623;
					this.match(MySqlParser.COMMA);
					this.state = 4624;
					this.threadType();
					}
					}
					this.state = 4629;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 4634;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_UNTIL) {
				{
				this.state = 4632;
				this.match(MySqlParser.KW_UNTIL);
				this.state = 4633;
				this.untilOption();
				}
			}

			this.state = 4639;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_DEFAULT_AUTH || _la === MySqlParser.KW_PASSWORD || _la === MySqlParser.KW_PLUGIN_DIR || _la === MySqlParser.KW_USER) {
				{
				{
				this.state = 4636;
				this.connectionOptions();
				}
				}
				this.state = 4641;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4643;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 4642;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stopSlaveOrReplica(): StopSlaveOrReplicaContext {
		let _localctx: StopSlaveOrReplicaContext = new StopSlaveOrReplicaContext(this._ctx, this.state);
		this.enterRule(_localctx, 364, MySqlParser.RULE_stopSlaveOrReplica);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4645;
			this.match(MySqlParser.KW_STOP);
			this.state = 4646;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_REPLICA || _la === MySqlParser.KW_SLAVE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4655;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IO_THREAD || _la === MySqlParser.KW_SQL_THREAD) {
				{
				this.state = 4647;
				this.threadType();
				this.state = 4652;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 4648;
					this.match(MySqlParser.COMMA);
					this.state = 4649;
					this.threadType();
					}
					}
					this.state = 4654;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 4658;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 4657;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public startGroupReplication(): StartGroupReplicationContext {
		let _localctx: StartGroupReplicationContext = new StartGroupReplicationContext(this._ctx, this.state);
		this.enterRule(_localctx, 366, MySqlParser.RULE_startGroupReplication);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4660;
			this.match(MySqlParser.KW_START);
			this.state = 4661;
			this.match(MySqlParser.KW_GROUP_REPLICATION);
			this.state = 4665;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_USER) {
				{
				this.state = 4662;
				this.match(MySqlParser.KW_USER);
				this.state = 4663;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4664;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			this.state = 4671;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 679, this._ctx) ) {
			case 1:
				{
				this.state = 4667;
				this.match(MySqlParser.COMMA);
				this.state = 4668;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 4669;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4670;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			}
			this.state = 4677;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.COMMA) {
				{
				this.state = 4673;
				this.match(MySqlParser.COMMA);
				this.state = 4674;
				this.match(MySqlParser.KW_DEFAULT_AUTH);
				this.state = 4675;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4676;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stopGroupReplication(): StopGroupReplicationContext {
		let _localctx: StopGroupReplicationContext = new StopGroupReplicationContext(this._ctx, this.state);
		this.enterRule(_localctx, 368, MySqlParser.RULE_stopGroupReplication);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4679;
			this.match(MySqlParser.KW_STOP);
			this.state = 4680;
			this.match(MySqlParser.KW_GROUP_REPLICATION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public masterOption(): MasterOptionContext {
		let _localctx: MasterOptionContext = new MasterOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 370, MySqlParser.RULE_masterOption);
		let _la: number;
		try {
			this.state = 4709;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_MASTER_BIND:
			case MySqlParser.KW_MASTER_COMPRESSION_ALGORITHMS:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PUBLIC_KEY_PATH:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_CIPHERSUITES:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_NETWORK_NAMESPACE:
			case MySqlParser.KW_RELAY_LOG_FILE:
				_localctx = new MasterStringOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4682;
				this.stringMasterOption();
				this.state = 4683;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4684;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_ZSTD_COMPRESSION_LEVEL:
			case MySqlParser.KW_RELAY_LOG_POS:
				_localctx = new MasterDecimalOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4686;
				this.decimalMasterOption();
				this.state = 4687;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4688;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_MASTER_SSL_VERIFY_SERVER_CERT:
			case MySqlParser.KW_GET_MASTER_PUBLIC_KEY:
			case MySqlParser.KW_GTID_ONLY:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_REQUIRE_ROW_FORMAT:
			case MySqlParser.KW_SOURCE_CONNECTION_AUTO_FAILOVER:
				_localctx = new MasterBoolOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4690;
				this.boolMasterOption();
				this.state = 4691;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4692;
				(_localctx as MasterBoolOptionContext)._boolVal = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as MasterBoolOptionContext)._boolVal = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS:
			case MySqlParser.KW_PRIVILEGE_CHECKS_USER:
			case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK:
				_localctx = new V8AddMasterOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4694;
				this.v8NewMasterOption();
				}
				break;
			case MySqlParser.KW_IGNORE_SERVER_IDS:
				_localctx = new MasterUidListOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4695;
				this.match(MySqlParser.KW_IGNORE_SERVER_IDS);
				this.state = 4696;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4697;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4706;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 4698;
					(_localctx as MasterUidListOptionContext)._server_id = this.uid();
					this.state = 4703;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 4699;
						this.match(MySqlParser.COMMA);
						this.state = 4700;
						(_localctx as MasterUidListOptionContext)._server_id = this.uid();
						}
						}
						this.state = 4705;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 4708;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stringMasterOption(): StringMasterOptionContext {
		let _localctx: StringMasterOptionContext = new StringMasterOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 372, MySqlParser.RULE_stringMasterOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4711;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_MASTER_BIND || ((((_la - 455)) & ~0x1F) === 0 && ((1 << (_la - 455)) & ((1 << (MySqlParser.KW_MASTER_COMPRESSION_ALGORITHMS - 455)) | (1 << (MySqlParser.KW_MASTER_HOST - 455)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 455)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 455)) | (1 << (MySqlParser.KW_MASTER_PUBLIC_KEY_PATH - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 455)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 455)) | (1 << (MySqlParser.KW_MASTER_TLS_CIPHERSUITES - 455)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 455)) | (1 << (MySqlParser.KW_MASTER_USER - 455)))) !== 0) || _la === MySqlParser.KW_NETWORK_NAMESPACE || _la === MySqlParser.KW_RELAY_LOG_FILE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decimalMasterOption(): DecimalMasterOptionContext {
		let _localctx: DecimalMasterOptionContext = new DecimalMasterOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 374, MySqlParser.RULE_decimalMasterOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4713;
			_la = this._input.LA(1);
			if (!(((((_la - 456)) & ~0x1F) === 0 && ((1 << (_la - 456)) & ((1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 456)) | (1 << (MySqlParser.KW_MASTER_DELAY - 456)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 456)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 456)) | (1 << (MySqlParser.KW_MASTER_PORT - 456)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 456)) | (1 << (MySqlParser.KW_MASTER_ZSTD_COMPRESSION_LEVEL - 456)))) !== 0) || _la === MySqlParser.KW_RELAY_LOG_POS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public boolMasterOption(): BoolMasterOptionContext {
		let _localctx: BoolMasterOptionContext = new BoolMasterOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 376, MySqlParser.RULE_boolMasterOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4715;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_MASTER_SSL_VERIFY_SERVER_CERT || _la === MySqlParser.KW_GET_MASTER_PUBLIC_KEY || _la === MySqlParser.KW_GTID_ONLY || _la === MySqlParser.KW_MASTER_AUTO_POSITION || _la === MySqlParser.KW_MASTER_SSL || _la === MySqlParser.KW_REQUIRE_ROW_FORMAT || _la === MySqlParser.KW_SOURCE_CONNECTION_AUTO_FAILOVER)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public v8NewMasterOption(): V8NewMasterOptionContext {
		let _localctx: V8NewMasterOptionContext = new V8NewMasterOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 378, MySqlParser.RULE_v8NewMasterOption);
		let _la: number;
		try {
			this.state = 4730;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_PRIVILEGE_CHECKS_USER:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4717;
				this.match(MySqlParser.KW_PRIVILEGE_CHECKS_USER);
				this.state = 4718;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4719;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_NULL_LITERAL || _la === MySqlParser.STRING_LITERAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4720;
				this.match(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK);
				this.state = 4721;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4722;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_STREAM || _la === MySqlParser.KW_ON || _la === MySqlParser.KW_OFF)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4723;
				this.match(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS);
				this.state = 4724;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4728;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_OFF:
					{
					this.state = 4725;
					this.match(MySqlParser.KW_OFF);
					}
					break;
				case MySqlParser.KW_LOCAL:
					{
					this.state = 4726;
					this.match(MySqlParser.KW_LOCAL);
					}
					break;
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 4727;
					this.gtuidSet();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replicationSourceOption(): ReplicationSourceOptionContext {
		let _localctx: ReplicationSourceOptionContext = new ReplicationSourceOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 380, MySqlParser.RULE_replicationSourceOption);
		let _la: number;
		try {
			this.state = 4759;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_NETWORK_NAMESPACE:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_SOURCE_BIND:
			case MySqlParser.KW_SOURCE_HOST:
			case MySqlParser.KW_SOURCE_USER:
			case MySqlParser.KW_SOURCE_PASSWORD:
			case MySqlParser.KW_SOURCE_LOG_FILE:
			case MySqlParser.KW_SOURCE_COMPRESSION_ALGORITHMS:
			case MySqlParser.KW_SOURCE_SSL_CA:
			case MySqlParser.KW_SOURCE_SSL_CAPATH:
			case MySqlParser.KW_SOURCE_SSL_CERT:
			case MySqlParser.KW_SOURCE_SSL_CRL:
			case MySqlParser.KW_SOURCE_SSL_CRLPATH:
			case MySqlParser.KW_SOURCE_SSL_KEY:
			case MySqlParser.KW_SOURCE_SSL_CIPHER:
			case MySqlParser.KW_SOURCE_TLS_VERSION:
			case MySqlParser.KW_SOURCE_TLS_CIPHERSUITES:
			case MySqlParser.KW_SOURCE_PUBLIC_KEY_PATH:
				_localctx = new SourceStringOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4732;
				this.stringSourceOption();
				this.state = 4733;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4734;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_SOURCE_PORT:
			case MySqlParser.KW_SOURCE_LOG_POS:
			case MySqlParser.KW_SOURCE_HEARTBEAT_PERIOD:
			case MySqlParser.KW_SOURCE_CONNECT_RETRY:
			case MySqlParser.KW_SOURCE_RETRY_COUNT:
			case MySqlParser.KW_SOURCE_DELAY:
			case MySqlParser.KW_SOURCE_ZSTD_COMPRESSION_LEVEL:
				_localctx = new SourceDecimalOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4736;
				this.decimalSourceOption();
				this.state = 4737;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4738;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_GET_SOURCE_PUBLIC_KEY:
			case MySqlParser.KW_GTID_ONLY:
			case MySqlParser.KW_REQUIRE_ROW_FORMAT:
			case MySqlParser.KW_SOURCE_AUTO_POSITION:
			case MySqlParser.KW_SOURCE_CONNECTION_AUTO_FAILOVER:
			case MySqlParser.KW_SOURCE_SSL:
			case MySqlParser.KW_SOURCE_SSL_VERIFY_SERVER_CERT:
				_localctx = new SourceBoolOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4740;
				this.boolSourceOption();
				this.state = 4741;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4742;
				(_localctx as SourceBoolOptionContext)._boolVal = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.ZERO_DECIMAL || _la === MySqlParser.ONE_DECIMAL)) {
					(_localctx as SourceBoolOptionContext)._boolVal = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS:
			case MySqlParser.KW_PRIVILEGE_CHECKS_USER:
			case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK:
				_localctx = new SourceOtherOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4744;
				this.otherSourceOption();
				}
				break;
			case MySqlParser.KW_IGNORE_SERVER_IDS:
				_localctx = new SourceUidListOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4745;
				this.match(MySqlParser.KW_IGNORE_SERVER_IDS);
				this.state = 4746;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4747;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4756;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
					{
					this.state = 4748;
					(_localctx as SourceUidListOptionContext)._server_id = this.uid();
					this.state = 4753;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 4749;
						this.match(MySqlParser.COMMA);
						this.state = 4750;
						(_localctx as SourceUidListOptionContext)._server_id = this.uid();
						}
						}
						this.state = 4755;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 4758;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stringSourceOption(): StringSourceOptionContext {
		let _localctx: StringSourceOptionContext = new StringSourceOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 382, MySqlParser.RULE_stringSourceOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4761;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_NETWORK_NAMESPACE || _la === MySqlParser.KW_RELAY_LOG_FILE || ((((_la - 606)) & ~0x1F) === 0 && ((1 << (_la - 606)) & ((1 << (MySqlParser.KW_SOURCE_BIND - 606)) | (1 << (MySqlParser.KW_SOURCE_HOST - 606)) | (1 << (MySqlParser.KW_SOURCE_USER - 606)) | (1 << (MySqlParser.KW_SOURCE_PASSWORD - 606)) | (1 << (MySqlParser.KW_SOURCE_LOG_FILE - 606)) | (1 << (MySqlParser.KW_SOURCE_COMPRESSION_ALGORITHMS - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_CA - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_CAPATH - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_CERT - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_CRL - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_CRLPATH - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_KEY - 606)) | (1 << (MySqlParser.KW_SOURCE_SSL_CIPHER - 606)) | (1 << (MySqlParser.KW_SOURCE_TLS_VERSION - 606)) | (1 << (MySqlParser.KW_SOURCE_TLS_CIPHERSUITES - 606)) | (1 << (MySqlParser.KW_SOURCE_PUBLIC_KEY_PATH - 606)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decimalSourceOption(): DecimalSourceOptionContext {
		let _localctx: DecimalSourceOptionContext = new DecimalSourceOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 384, MySqlParser.RULE_decimalSourceOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4763;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_RELAY_LOG_POS || ((((_la - 610)) & ~0x1F) === 0 && ((1 << (_la - 610)) & ((1 << (MySqlParser.KW_SOURCE_PORT - 610)) | (1 << (MySqlParser.KW_SOURCE_LOG_POS - 610)) | (1 << (MySqlParser.KW_SOURCE_HEARTBEAT_PERIOD - 610)) | (1 << (MySqlParser.KW_SOURCE_CONNECT_RETRY - 610)) | (1 << (MySqlParser.KW_SOURCE_RETRY_COUNT - 610)) | (1 << (MySqlParser.KW_SOURCE_DELAY - 610)) | (1 << (MySqlParser.KW_SOURCE_ZSTD_COMPRESSION_LEVEL - 610)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public boolSourceOption(): BoolSourceOptionContext {
		let _localctx: BoolSourceOptionContext = new BoolSourceOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 386, MySqlParser.RULE_boolSourceOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4765;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_GET_SOURCE_PUBLIC_KEY || _la === MySqlParser.KW_GTID_ONLY || _la === MySqlParser.KW_REQUIRE_ROW_FORMAT || ((((_la - 613)) & ~0x1F) === 0 && ((1 << (_la - 613)) & ((1 << (MySqlParser.KW_SOURCE_AUTO_POSITION - 613)) | (1 << (MySqlParser.KW_SOURCE_CONNECTION_AUTO_FAILOVER - 613)) | (1 << (MySqlParser.KW_SOURCE_SSL - 613)) | (1 << (MySqlParser.KW_SOURCE_SSL_VERIFY_SERVER_CERT - 613)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public otherSourceOption(): OtherSourceOptionContext {
		let _localctx: OtherSourceOptionContext = new OtherSourceOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 388, MySqlParser.RULE_otherSourceOption);
		let _la: number;
		try {
			this.state = 4780;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_PRIVILEGE_CHECKS_USER:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4767;
				this.match(MySqlParser.KW_PRIVILEGE_CHECKS_USER);
				this.state = 4768;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4769;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_NULL_LITERAL || _la === MySqlParser.STRING_LITERAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4770;
				this.match(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK);
				this.state = 4771;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4772;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_GENERATE || _la === MySqlParser.KW_STREAM || _la === MySqlParser.KW_ON || _la === MySqlParser.KW_OFF)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4773;
				this.match(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS);
				this.state = 4774;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4778;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_OFF:
					{
					this.state = 4775;
					this.match(MySqlParser.KW_OFF);
					}
					break;
				case MySqlParser.KW_LOCAL:
					{
					this.state = 4776;
					this.match(MySqlParser.KW_LOCAL);
					}
					break;
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 4777;
					this.gtuidSet();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public channelOption(): ChannelOptionContext {
		let _localctx: ChannelOptionContext = new ChannelOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 390, MySqlParser.RULE_channelOption);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4782;
			this.match(MySqlParser.KW_FOR);
			this.state = 4783;
			this.match(MySqlParser.KW_CHANNEL);
			this.state = 4784;
			this.match(MySqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replicationFilter(): ReplicationFilterContext {
		let _localctx: ReplicationFilterContext = new ReplicationFilterContext(this._ctx, this.state);
		this.enterRule(_localctx, 392, MySqlParser.RULE_replicationFilter);
		let _la: number;
		try {
			this.state = 4849;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_REPLICATE_DO_DB:
				_localctx = new DoDbReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4786;
				this.match(MySqlParser.KW_REPLICATE_DO_DB);
				this.state = 4787;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4788;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4789;
				this.databaseName();
				this.state = 4794;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 4790;
					this.match(MySqlParser.COMMA);
					this.state = 4791;
					this.databaseName();
					}
					}
					this.state = 4796;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4797;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
				_localctx = new IgnoreDbReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4799;
				this.match(MySqlParser.KW_REPLICATE_IGNORE_DB);
				this.state = 4800;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4801;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4802;
				this.databaseName();
				this.state = 4807;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 4803;
					this.match(MySqlParser.COMMA);
					this.state = 4804;
					this.databaseName();
					}
					}
					this.state = 4809;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4810;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_REPLICATE_DO_TABLE:
				_localctx = new DoTableReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4812;
				this.match(MySqlParser.KW_REPLICATE_DO_TABLE);
				this.state = 4813;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4814;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4815;
				this.tableNames();
				this.state = 4816;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				_localctx = new IgnoreTableReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4818;
				this.match(MySqlParser.KW_REPLICATE_IGNORE_TABLE);
				this.state = 4819;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4820;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4821;
				this.tableNames();
				this.state = 4822;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				_localctx = new WildDoTableReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4824;
				this.match(MySqlParser.KW_REPLICATE_WILD_DO_TABLE);
				this.state = 4825;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4826;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4827;
				this.simpleStrings();
				this.state = 4828;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				_localctx = new WildIgnoreTableReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4830;
				this.match(MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE);
				this.state = 4831;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4832;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4833;
				this.simpleStrings();
				this.state = 4834;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
				_localctx = new RewriteDbReplicationContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4836;
				this.match(MySqlParser.KW_REPLICATE_REWRITE_DB);
				this.state = 4837;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4838;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 4839;
				this.tablePair();
				this.state = 4844;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 4840;
					this.match(MySqlParser.COMMA);
					this.state = 4841;
					this.tablePair();
					}
					}
					this.state = 4846;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4847;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablePair(): TablePairContext {
		let _localctx: TablePairContext = new TablePairContext(this._ctx, this.state);
		this.enterRule(_localctx, 394, MySqlParser.RULE_tablePair);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4851;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 4852;
			_localctx._firstTable = this.tableName();
			this.state = 4853;
			this.match(MySqlParser.COMMA);
			this.state = 4854;
			_localctx._secondTable = this.tableName();
			this.state = 4855;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public threadType(): ThreadTypeContext {
		let _localctx: ThreadTypeContext = new ThreadTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 396, MySqlParser.RULE_threadType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4857;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_IO_THREAD || _la === MySqlParser.KW_SQL_THREAD)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public untilOption(): UntilOptionContext {
		let _localctx: UntilOptionContext = new UntilOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 398, MySqlParser.RULE_untilOption);
		let _la: number;
		try {
			this.state = 4884;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
				_localctx = new GtidsUntilOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4859;
				(_localctx as GtidsUntilOptionContext)._gtids = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_SQL_AFTER_GTIDS || _la === MySqlParser.KW_SQL_BEFORE_GTIDS)) {
					(_localctx as GtidsUntilOptionContext)._gtids = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 4860;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4861;
				this.gtuidSet();
				}
				break;
			case MySqlParser.KW_MASTER_LOG_FILE:
				_localctx = new MasterLogUntilOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4862;
				this.match(MySqlParser.KW_MASTER_LOG_FILE);
				this.state = 4863;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4864;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 4865;
				this.match(MySqlParser.COMMA);
				this.state = 4866;
				this.match(MySqlParser.KW_MASTER_LOG_POS);
				this.state = 4867;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4868;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_SOURCE_LOG_FILE:
				_localctx = new SourceLogUntilOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4869;
				this.match(MySqlParser.KW_SOURCE_LOG_FILE);
				this.state = 4870;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4871;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 4872;
				this.match(MySqlParser.COMMA);
				this.state = 4873;
				this.match(MySqlParser.KW_SOURCE_LOG_POS);
				this.state = 4874;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4875;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_RELAY_LOG_FILE:
				_localctx = new RelayLogUntilOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4876;
				this.match(MySqlParser.KW_RELAY_LOG_FILE);
				this.state = 4877;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4878;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 4879;
				this.match(MySqlParser.COMMA);
				this.state = 4880;
				this.match(MySqlParser.KW_RELAY_LOG_POS);
				this.state = 4881;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4882;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				_localctx = new SqlGapsUntilOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4883;
				this.match(MySqlParser.KW_SQL_AFTER_MTS_GAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public connectionOptions(): ConnectionOptionsContext {
		let _localctx: ConnectionOptionsContext = new ConnectionOptionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 400, MySqlParser.RULE_connectionOptions);
		try {
			this.state = 4898;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_USER:
				_localctx = new UserConnectionOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4886;
				this.match(MySqlParser.KW_USER);
				this.state = 4887;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4888;
				(_localctx as UserConnectionOptionContext)._conOptUser = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_PASSWORD:
				_localctx = new PasswordConnectionOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4889;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 4890;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4891;
				(_localctx as PasswordConnectionOptionContext)._conOptPassword = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_DEFAULT_AUTH:
				_localctx = new DefaultAuthConnectionOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4892;
				this.match(MySqlParser.KW_DEFAULT_AUTH);
				this.state = 4893;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4894;
				(_localctx as DefaultAuthConnectionOptionContext)._conOptDefAuth = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_PLUGIN_DIR:
				_localctx = new PluginDirConnectionOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4895;
				this.match(MySqlParser.KW_PLUGIN_DIR);
				this.state = 4896;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 4897;
				(_localctx as PluginDirConnectionOptionContext)._conOptPluginDir = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public gtuidSet(): GtuidSetContext {
		let _localctx: GtuidSetContext = new GtuidSetContext(this._ctx, this.state);
		this.enterRule(_localctx, 402, MySqlParser.RULE_gtuidSet);
		try {
			let _alt: number;
			this.state = 4909;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.ZERO_DECIMAL:
			case MySqlParser.ONE_DECIMAL:
			case MySqlParser.TWO_DECIMAL:
			case MySqlParser.THREE_DECIMAL:
			case MySqlParser.DECIMAL_LITERAL:
			case MySqlParser.REAL_LITERAL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4900;
				this.uuidSet();
				this.state = 4905;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 697, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4901;
						this.match(MySqlParser.COMMA);
						this.state = 4902;
						this.uuidSet();
						}
						}
					}
					this.state = 4907;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 697, this._ctx);
				}
				}
				break;
			case MySqlParser.STRING_LITERAL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4908;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xaStartTransaction(): XaStartTransactionContext {
		let _localctx: XaStartTransactionContext = new XaStartTransactionContext(this._ctx, this.state);
		this.enterRule(_localctx, 404, MySqlParser.RULE_xaStartTransaction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4911;
			this.match(MySqlParser.KW_XA);
			this.state = 4912;
			_localctx._xaStart = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_BEGIN || _la === MySqlParser.KW_START)) {
				_localctx._xaStart = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4913;
			this.xid();
			this.state = 4915;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_JOIN || _la === MySqlParser.KW_RESUME) {
				{
				this.state = 4914;
				_localctx._xaAction = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_JOIN || _la === MySqlParser.KW_RESUME)) {
					_localctx._xaAction = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xaEndTransaction(): XaEndTransactionContext {
		let _localctx: XaEndTransactionContext = new XaEndTransactionContext(this._ctx, this.state);
		this.enterRule(_localctx, 406, MySqlParser.RULE_xaEndTransaction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4917;
			this.match(MySqlParser.KW_XA);
			this.state = 4918;
			this.match(MySqlParser.KW_END);
			this.state = 4919;
			this.xid();
			this.state = 4925;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_SUSPEND) {
				{
				this.state = 4920;
				this.match(MySqlParser.KW_SUSPEND);
				this.state = 4923;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 4921;
					this.match(MySqlParser.KW_FOR);
					this.state = 4922;
					this.match(MySqlParser.KW_MIGRATE);
					}
				}

				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xaPrepareStatement(): XaPrepareStatementContext {
		let _localctx: XaPrepareStatementContext = new XaPrepareStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 408, MySqlParser.RULE_xaPrepareStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4927;
			this.match(MySqlParser.KW_XA);
			this.state = 4928;
			this.match(MySqlParser.KW_PREPARE);
			this.state = 4929;
			this.xid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xaCommitWork(): XaCommitWorkContext {
		let _localctx: XaCommitWorkContext = new XaCommitWorkContext(this._ctx, this.state);
		this.enterRule(_localctx, 410, MySqlParser.RULE_xaCommitWork);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4931;
			this.match(MySqlParser.KW_XA);
			this.state = 4932;
			this.match(MySqlParser.KW_COMMIT);
			this.state = 4933;
			this.xid();
			this.state = 4936;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ONE) {
				{
				this.state = 4934;
				this.match(MySqlParser.KW_ONE);
				this.state = 4935;
				this.match(MySqlParser.KW_PHASE);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xaRollbackWork(): XaRollbackWorkContext {
		let _localctx: XaRollbackWorkContext = new XaRollbackWorkContext(this._ctx, this.state);
		this.enterRule(_localctx, 412, MySqlParser.RULE_xaRollbackWork);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4938;
			this.match(MySqlParser.KW_XA);
			this.state = 4939;
			this.match(MySqlParser.KW_ROLLBACK);
			this.state = 4940;
			this.xid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xaRecoverWork(): XaRecoverWorkContext {
		let _localctx: XaRecoverWorkContext = new XaRecoverWorkContext(this._ctx, this.state);
		this.enterRule(_localctx, 414, MySqlParser.RULE_xaRecoverWork);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4942;
			this.match(MySqlParser.KW_XA);
			this.state = 4943;
			this.match(MySqlParser.KW_RECOVER);
			this.state = 4946;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CONVERT) {
				{
				this.state = 4944;
				this.match(MySqlParser.KW_CONVERT);
				this.state = 4945;
				this.xid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public prepareStatement(): PrepareStatementContext {
		let _localctx: PrepareStatementContext = new PrepareStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 416, MySqlParser.RULE_prepareStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4948;
			this.match(MySqlParser.KW_PREPARE);
			this.state = 4949;
			_localctx._stmt_name = this.uid();
			this.state = 4950;
			this.match(MySqlParser.KW_FROM);
			this.state = 4953;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.STRING_LITERAL:
				{
				this.state = 4951;
				_localctx._query = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.LOCAL_ID:
				{
				this.state = 4952;
				_localctx._variable = this.match(MySqlParser.LOCAL_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public executeStatement(): ExecuteStatementContext {
		let _localctx: ExecuteStatementContext = new ExecuteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 418, MySqlParser.RULE_executeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4955;
			this.match(MySqlParser.KW_EXECUTE);
			this.state = 4956;
			_localctx._stmt_name = this.uid();
			this.state = 4959;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_USING) {
				{
				this.state = 4957;
				this.match(MySqlParser.KW_USING);
				this.state = 4958;
				this.userVariables();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public deallocatePrepare(): DeallocatePrepareContext {
		let _localctx: DeallocatePrepareContext = new DeallocatePrepareContext(this._ctx, this.state);
		this.enterRule(_localctx, 420, MySqlParser.RULE_deallocatePrepare);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4961;
			_localctx._dropFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_DROP || _la === MySqlParser.KW_DEALLOCATE)) {
				_localctx._dropFormat = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4962;
			this.match(MySqlParser.KW_PREPARE);
			this.state = 4963;
			_localctx._stmt_name = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public routineBody(): RoutineBodyContext {
		let _localctx: RoutineBodyContext = new RoutineBodyContext(this._ctx, this.state);
		this.enterRule(_localctx, 422, MySqlParser.RULE_routineBody);
		try {
			this.state = 4967;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 706, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4965;
				this.blockStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4966;
				this.sqlStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public blockStatement(): BlockStatementContext {
		let _localctx: BlockStatementContext = new BlockStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 424, MySqlParser.RULE_blockStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4972;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 707, this._ctx) ) {
			case 1:
				{
				this.state = 4969;
				_localctx._begin = this.uid();
				this.state = 4970;
				this.match(MySqlParser.COLON_SYMB);
				}
				break;
			}
			this.state = 4974;
			this.match(MySqlParser.KW_BEGIN);
			this.state = 4980;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 708, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4975;
					this.declareVariable();
					this.state = 4976;
					this.match(MySqlParser.SEMI);
					}
					}
				}
				this.state = 4982;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 708, this._ctx);
			}
			this.state = 4988;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 709, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4983;
					this.declareCondition();
					this.state = 4984;
					this.match(MySqlParser.SEMI);
					}
					}
				}
				this.state = 4990;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 709, this._ctx);
			}
			this.state = 4996;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 710, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4991;
					this.declareCursor();
					this.state = 4992;
					this.match(MySqlParser.SEMI);
					}
					}
				}
				this.state = 4998;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 710, this._ctx);
			}
			this.state = 5004;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_DECLARE) {
				{
				{
				this.state = 4999;
				this.declareHandler();
				this.state = 5000;
				this.match(MySqlParser.SEMI);
				}
				}
				this.state = 5006;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5010;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 712, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 5007;
					this.procedureSqlStatement();
					}
					}
				}
				this.state = 5012;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 712, this._ctx);
			}
			this.state = 5013;
			this.match(MySqlParser.KW_END);
			this.state = 5015;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 713, this._ctx) ) {
			case 1:
				{
				this.state = 5014;
				_localctx._end = this.uid();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public caseStatement(): CaseStatementContext {
		let _localctx: CaseStatementContext = new CaseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 426, MySqlParser.RULE_caseStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5017;
			this.match(MySqlParser.KW_CASE);
			this.state = 5020;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 714, this._ctx) ) {
			case 1:
				{
				this.state = 5018;
				_localctx._case_value = this.uid();
				}
				break;

			case 2:
				{
				this.state = 5019;
				this.expression(0);
				}
				break;
			}
			this.state = 5023;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 5022;
				this.caseAlternative();
				}
				}
				this.state = 5025;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === MySqlParser.KW_WHEN);
			this.state = 5033;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ELSE) {
				{
				this.state = 5027;
				this.match(MySqlParser.KW_ELSE);
				this.state = 5029;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 5028;
						this.procedureSqlStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5031;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 716, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
			}

			this.state = 5035;
			this.match(MySqlParser.KW_END);
			this.state = 5036;
			this.match(MySqlParser.KW_CASE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ifStatement(): IfStatementContext {
		let _localctx: IfStatementContext = new IfStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 428, MySqlParser.RULE_ifStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5038;
			this.match(MySqlParser.KW_IF);
			this.state = 5039;
			this.expression(0);
			this.state = 5040;
			this.match(MySqlParser.KW_THEN);
			this.state = 5042;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5041;
					_localctx._procedureSqlStatement = this.procedureSqlStatement();
					_localctx._thenStatements.push(_localctx._procedureSqlStatement);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5044;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 718, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 5049;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_ELSEIF) {
				{
				{
				this.state = 5046;
				this.elifAlternative();
				}
				}
				this.state = 5051;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5058;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ELSE) {
				{
				this.state = 5052;
				this.match(MySqlParser.KW_ELSE);
				this.state = 5054;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 5053;
						_localctx._procedureSqlStatement = this.procedureSqlStatement();
						_localctx._elseStatements.push(_localctx._procedureSqlStatement);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5056;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 720, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
			}

			this.state = 5060;
			this.match(MySqlParser.KW_END);
			this.state = 5061;
			this.match(MySqlParser.KW_IF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public iterateStatement(): IterateStatementContext {
		let _localctx: IterateStatementContext = new IterateStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 430, MySqlParser.RULE_iterateStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5063;
			this.match(MySqlParser.KW_ITERATE);
			this.state = 5064;
			_localctx._label = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public leaveStatement(): LeaveStatementContext {
		let _localctx: LeaveStatementContext = new LeaveStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 432, MySqlParser.RULE_leaveStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5066;
			this.match(MySqlParser.KW_LEAVE);
			this.state = 5067;
			_localctx._label = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loopStatement(): LoopStatementContext {
		let _localctx: LoopStatementContext = new LoopStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 434, MySqlParser.RULE_loopStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5072;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 5069;
				_localctx._begin_label = this.uid();
				this.state = 5070;
				this.match(MySqlParser.COLON_SYMB);
				}
			}

			this.state = 5074;
			this.match(MySqlParser.KW_LOOP);
			this.state = 5076;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5075;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5078;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 723, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 5080;
			this.match(MySqlParser.KW_END);
			this.state = 5081;
			this.match(MySqlParser.KW_LOOP);
			this.state = 5083;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 5082;
				_localctx._end_label = this.uid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public repeatStatement(): RepeatStatementContext {
		let _localctx: RepeatStatementContext = new RepeatStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 436, MySqlParser.RULE_repeatStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5088;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 725, this._ctx) ) {
			case 1:
				{
				this.state = 5085;
				_localctx._begin_label = this.uid();
				this.state = 5086;
				this.match(MySqlParser.COLON_SYMB);
				}
				break;
			}
			this.state = 5090;
			this.match(MySqlParser.KW_REPEAT);
			this.state = 5092;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5091;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5094;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 726, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 5096;
			this.match(MySqlParser.KW_UNTIL);
			this.state = 5097;
			this.expression(0);
			this.state = 5098;
			this.match(MySqlParser.KW_END);
			this.state = 5099;
			this.match(MySqlParser.KW_REPEAT);
			this.state = 5101;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 5100;
				_localctx._end_label = this.uid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public returnStatement(): ReturnStatementContext {
		let _localctx: ReturnStatementContext = new ReturnStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 438, MySqlParser.RULE_returnStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5103;
			this.match(MySqlParser.KW_RETURN);
			this.state = 5104;
			this.expression(0);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whileStatement(): WhileStatementContext {
		let _localctx: WhileStatementContext = new WhileStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 440, MySqlParser.RULE_whileStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5109;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 5106;
				_localctx._begin_label = this.uid();
				this.state = 5107;
				this.match(MySqlParser.COLON_SYMB);
				}
			}

			this.state = 5111;
			this.match(MySqlParser.KW_WHILE);
			this.state = 5112;
			this.expression(0);
			this.state = 5113;
			this.match(MySqlParser.KW_DO);
			this.state = 5115;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5114;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5117;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 729, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 5119;
			this.match(MySqlParser.KW_END);
			this.state = 5120;
			this.match(MySqlParser.KW_WHILE);
			this.state = 5122;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DATABASE - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (MySqlParser.KW_GROUP - 74)) | (1 << (MySqlParser.KW_IF - 74)) | (1 << (MySqlParser.KW_INSERT - 74)) | (1 << (MySqlParser.KW_LATERAL - 74)) | (1 << (MySqlParser.KW_LEFT - 74)))) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)) | (1 << (MySqlParser.KW_REPEAT - 117)) | (1 << (MySqlParser.KW_REPLACE - 117)))) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & ((1 << (MySqlParser.KW_RIGHT - 150)) | (1 << (MySqlParser.KW_SCHEMA - 150)) | (1 << (MySqlParser.KW_SKIP_QUERY_REWRITE - 150)) | (1 << (MySqlParser.KW_STACKED - 150)))) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_BINARY - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_NESTED - 253)) | (1 << (MySqlParser.KW_ORDINALITY - 253)) | (1 << (MySqlParser.KW_PATH - 253)) | (1 << (MySqlParser.KW_AVG - 253)) | (1 << (MySqlParser.KW_BIT_AND - 253)) | (1 << (MySqlParser.KW_BIT_OR - 253)) | (1 << (MySqlParser.KW_BIT_XOR - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_MAX - 253)) | (1 << (MySqlParser.KW_MIN - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)) | (1 << (MySqlParser.KW_STD - 253)) | (1 << (MySqlParser.KW_STDDEV - 253)) | (1 << (MySqlParser.KW_STDDEV_POP - 253)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 253)) | (1 << (MySqlParser.KW_SUM - 253)) | (1 << (MySqlParser.KW_VAR_POP - 253)) | (1 << (MySqlParser.KW_VAR_SAMP - 253)) | (1 << (MySqlParser.KW_VARIANCE - 253)))) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_CURDATE - 285)) | (1 << (MySqlParser.KW_CURTIME - 285)) | (1 << (MySqlParser.KW_DATE_ADD - 285)) | (1 << (MySqlParser.KW_DATE_SUB - 285)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 285)) | (1 << (MySqlParser.KW_NOW - 285)) | (1 << (MySqlParser.KW_POSITION - 285)) | (1 << (MySqlParser.KW_SUBSTR - 285)) | (1 << (MySqlParser.KW_SUBSTRING - 285)) | (1 << (MySqlParser.KW_SYSDATE - 285)) | (1 << (MySqlParser.KW_TRIM - 285)) | (1 << (MySqlParser.KW_UTC_DATE - 285)) | (1 << (MySqlParser.KW_UTC_TIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_ACCOUNT - 285)) | (1 << (MySqlParser.KW_ACTION - 285)) | (1 << (MySqlParser.KW_AFTER - 285)) | (1 << (MySqlParser.KW_AGGREGATE - 285)) | (1 << (MySqlParser.KW_ALGORITHM - 285)) | (1 << (MySqlParser.KW_ANY - 285)) | (1 << (MySqlParser.KW_AT - 285)) | (1 << (MySqlParser.KW_AUTHORS - 285)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 285)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 285)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 285)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 285)))) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & ((1 << (MySqlParser.KW_BEGIN - 317)) | (1 << (MySqlParser.KW_BINLOG - 317)) | (1 << (MySqlParser.KW_BIT - 317)) | (1 << (MySqlParser.KW_BLOCK - 317)) | (1 << (MySqlParser.KW_BOOL - 317)) | (1 << (MySqlParser.KW_BOOLEAN - 317)) | (1 << (MySqlParser.KW_BTREE - 317)) | (1 << (MySqlParser.KW_CACHE - 317)) | (1 << (MySqlParser.KW_CASCADED - 317)) | (1 << (MySqlParser.KW_CHAIN - 317)) | (1 << (MySqlParser.KW_CHANGED - 317)) | (1 << (MySqlParser.KW_CHANNEL - 317)) | (1 << (MySqlParser.KW_CHECKSUM - 317)) | (1 << (MySqlParser.KW_CIPHER - 317)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 317)) | (1 << (MySqlParser.KW_CLIENT - 317)) | (1 << (MySqlParser.KW_CLOSE - 317)) | (1 << (MySqlParser.KW_COALESCE - 317)) | (1 << (MySqlParser.KW_CODE - 317)) | (1 << (MySqlParser.KW_COLUMNS - 317)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 317)) | (1 << (MySqlParser.KW_COLUMN_NAME - 317)) | (1 << (MySqlParser.KW_COMMENT - 317)) | (1 << (MySqlParser.KW_COMMIT - 317)) | (1 << (MySqlParser.KW_COMPACT - 317)) | (1 << (MySqlParser.KW_COMPLETION - 317)) | (1 << (MySqlParser.KW_COMPRESSED - 317)) | (1 << (MySqlParser.KW_COMPRESSION - 317)) | (1 << (MySqlParser.KW_CONCURRENT - 317)) | (1 << (MySqlParser.KW_CONNECT - 317)))) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & ((1 << (MySqlParser.KW_CONNECTION - 349)) | (1 << (MySqlParser.KW_CONSISTENT - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 349)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 349)) | (1 << (MySqlParser.KW_CONTAINS - 349)) | (1 << (MySqlParser.KW_CONTEXT - 349)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 349)) | (1 << (MySqlParser.KW_COPY - 349)) | (1 << (MySqlParser.KW_CPU - 349)) | (1 << (MySqlParser.KW_CURSOR_NAME - 349)) | (1 << (MySqlParser.KW_DATA - 349)) | (1 << (MySqlParser.KW_DATAFILE - 349)) | (1 << (MySqlParser.KW_DEALLOCATE - 349)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 349)) | (1 << (MySqlParser.KW_DEFINER - 349)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 349)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 349)) | (1 << (MySqlParser.KW_DIRECTORY - 349)) | (1 << (MySqlParser.KW_DISABLE - 349)) | (1 << (MySqlParser.KW_DISCARD - 349)) | (1 << (MySqlParser.KW_DISK - 349)) | (1 << (MySqlParser.KW_DO - 349)) | (1 << (MySqlParser.KW_DUMPFILE - 349)) | (1 << (MySqlParser.KW_DUPLICATE - 349)) | (1 << (MySqlParser.KW_DYNAMIC - 349)) | (1 << (MySqlParser.KW_ENABLE - 349)) | (1 << (MySqlParser.KW_ENCRYPTION - 349)) | (1 << (MySqlParser.KW_END - 349)) | (1 << (MySqlParser.KW_ENDS - 349)) | (1 << (MySqlParser.KW_ENGINE - 349)))) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & ((1 << (MySqlParser.KW_ENGINES - 381)) | (1 << (MySqlParser.KW_ERROR - 381)) | (1 << (MySqlParser.KW_ERRORS - 381)) | (1 << (MySqlParser.KW_ESCAPE - 381)) | (1 << (MySqlParser.KW_EVENT - 381)) | (1 << (MySqlParser.KW_EVENTS - 381)) | (1 << (MySqlParser.KW_EVERY - 381)) | (1 << (MySqlParser.KW_EXCHANGE - 381)) | (1 << (MySqlParser.KW_EXCLUSIVE - 381)) | (1 << (MySqlParser.KW_EXPIRE - 381)) | (1 << (MySqlParser.KW_EXPORT - 381)) | (1 << (MySqlParser.KW_EXTENDED - 381)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 381)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 381)) | (1 << (MySqlParser.KW_FAST - 381)) | (1 << (MySqlParser.KW_FAULTS - 381)) | (1 << (MySqlParser.KW_FIELDS - 381)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 381)) | (1 << (MySqlParser.KW_FILTER - 381)) | (1 << (MySqlParser.KW_FIRST - 381)) | (1 << (MySqlParser.KW_FIXED - 381)) | (1 << (MySqlParser.KW_FLUSH - 381)) | (1 << (MySqlParser.KW_FOLLOWS - 381)) | (1 << (MySqlParser.KW_FOUND - 381)) | (1 << (MySqlParser.KW_FULL - 381)) | (1 << (MySqlParser.KW_FUNCTION - 381)) | (1 << (MySqlParser.KW_GENERAL - 381)))) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & ((1 << (MySqlParser.KW_GLOBAL - 413)) | (1 << (MySqlParser.KW_GRANTS - 413)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 413)) | (1 << (MySqlParser.KW_HANDLER - 413)) | (1 << (MySqlParser.KW_HASH - 413)) | (1 << (MySqlParser.KW_HELP - 413)) | (1 << (MySqlParser.KW_HISTORY - 413)) | (1 << (MySqlParser.KW_HOST - 413)) | (1 << (MySqlParser.KW_HOSTS - 413)) | (1 << (MySqlParser.KW_IDENTIFIED - 413)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 413)) | (1 << (MySqlParser.KW_IMPORT - 413)) | (1 << (MySqlParser.KW_INDEXES - 413)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 413)) | (1 << (MySqlParser.KW_INPLACE - 413)) | (1 << (MySqlParser.KW_INSERT_METHOD - 413)) | (1 << (MySqlParser.KW_INSTALL - 413)) | (1 << (MySqlParser.KW_INSTANCE - 413)) | (1 << (MySqlParser.KW_INSTANT - 413)) | (1 << (MySqlParser.KW_INVISIBLE - 413)) | (1 << (MySqlParser.KW_INVOKER - 413)) | (1 << (MySqlParser.KW_IO - 413)) | (1 << (MySqlParser.KW_IO_THREAD - 413)) | (1 << (MySqlParser.KW_IPC - 413)) | (1 << (MySqlParser.KW_ISOLATION - 413)) | (1 << (MySqlParser.KW_ISSUER - 413)) | (1 << (MySqlParser.KW_JSON - 413)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 413)) | (1 << (MySqlParser.KW_LANGUAGE - 413)))) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & ((1 << (MySqlParser.KW_LAST - 445)) | (1 << (MySqlParser.KW_LEAVES - 445)) | (1 << (MySqlParser.KW_LESS - 445)) | (1 << (MySqlParser.KW_LEVEL - 445)) | (1 << (MySqlParser.KW_LIST - 445)) | (1 << (MySqlParser.KW_LOCAL - 445)) | (1 << (MySqlParser.KW_LOGFILE - 445)) | (1 << (MySqlParser.KW_LOGS - 445)) | (1 << (MySqlParser.KW_MASTER - 445)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 445)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 445)) | (1 << (MySqlParser.KW_MASTER_DELAY - 445)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 445)) | (1 << (MySqlParser.KW_MASTER_HOST - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 445)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 445)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 445)) | (1 << (MySqlParser.KW_MASTER_PORT - 445)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 445)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 445)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 445)) | (1 << (MySqlParser.KW_MASTER_USER - 445)))) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_ROWS - 478)) | (1 << (MySqlParser.KW_MAX_SIZE - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)) | (1 << (MySqlParser.KW_MEDIUM - 478)) | (1 << (MySqlParser.KW_MEMBER - 478)) | (1 << (MySqlParser.KW_MERGE - 478)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 478)) | (1 << (MySqlParser.KW_MID - 478)) | (1 << (MySqlParser.KW_MIGRATE - 478)) | (1 << (MySqlParser.KW_MIN_ROWS - 478)) | (1 << (MySqlParser.KW_MODE - 478)) | (1 << (MySqlParser.KW_MODIFY - 478)) | (1 << (MySqlParser.KW_MUTEX - 478)) | (1 << (MySqlParser.KW_MYSQL - 478)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 478)) | (1 << (MySqlParser.KW_NAME - 478)) | (1 << (MySqlParser.KW_NAMES - 478)) | (1 << (MySqlParser.KW_NCHAR - 478)) | (1 << (MySqlParser.KW_NEVER - 478)) | (1 << (MySqlParser.KW_NEXT - 478)) | (1 << (MySqlParser.KW_NO - 478)) | (1 << (MySqlParser.KW_NOWAIT - 478)) | (1 << (MySqlParser.KW_NODEGROUP - 478)) | (1 << (MySqlParser.KW_NONE - 478)) | (1 << (MySqlParser.KW_ODBC - 478)) | (1 << (MySqlParser.KW_OFFLINE - 478)) | (1 << (MySqlParser.KW_OFFSET - 478)))) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & ((1 << (MySqlParser.KW_OF - 510)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 510)) | (1 << (MySqlParser.KW_ONE - 510)) | (1 << (MySqlParser.KW_ONLINE - 510)) | (1 << (MySqlParser.KW_ONLY - 510)) | (1 << (MySqlParser.KW_OPEN - 510)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 510)) | (1 << (MySqlParser.KW_OPTIONS - 510)) | (1 << (MySqlParser.KW_OWNER - 510)) | (1 << (MySqlParser.KW_PACK_KEYS - 510)) | (1 << (MySqlParser.KW_PAGE - 510)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 510)) | (1 << (MySqlParser.KW_PARSER - 510)) | (1 << (MySqlParser.KW_PARTIAL - 510)) | (1 << (MySqlParser.KW_PARTITIONING - 510)) | (1 << (MySqlParser.KW_PARTITIONS - 510)) | (1 << (MySqlParser.KW_PASSWORD - 510)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 510)) | (1 << (MySqlParser.KW_PHASE - 510)) | (1 << (MySqlParser.KW_PLUGIN - 510)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 510)) | (1 << (MySqlParser.KW_PLUGINS - 510)) | (1 << (MySqlParser.KW_PORT - 510)) | (1 << (MySqlParser.KW_PRECEDES - 510)) | (1 << (MySqlParser.KW_PREPARE - 510)) | (1 << (MySqlParser.KW_PRESERVE - 510)))) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & ((1 << (MySqlParser.KW_PREV - 542)) | (1 << (MySqlParser.KW_PROCESSLIST - 542)) | (1 << (MySqlParser.KW_PROFILE - 542)) | (1 << (MySqlParser.KW_PROFILES - 542)) | (1 << (MySqlParser.KW_PROXY - 542)) | (1 << (MySqlParser.KW_QUERY - 542)) | (1 << (MySqlParser.KW_QUICK - 542)) | (1 << (MySqlParser.KW_REBUILD - 542)) | (1 << (MySqlParser.KW_RECOVER - 542)) | (1 << (MySqlParser.KW_RECURSIVE - 542)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 542)) | (1 << (MySqlParser.KW_REDUNDANT - 542)) | (1 << (MySqlParser.KW_RELAY - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 542)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 542)) | (1 << (MySqlParser.KW_RELAYLOG - 542)) | (1 << (MySqlParser.KW_REMOVE - 542)) | (1 << (MySqlParser.KW_REORGANIZE - 542)) | (1 << (MySqlParser.KW_REPAIR - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 542)) | (1 << (MySqlParser.KW_REPLICATION - 542)))) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & ((1 << (MySqlParser.KW_RESET - 575)) | (1 << (MySqlParser.KW_RESUME - 575)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 575)) | (1 << (MySqlParser.KW_RETURNS - 575)) | (1 << (MySqlParser.KW_REUSE - 575)) | (1 << (MySqlParser.KW_ROLE - 575)) | (1 << (MySqlParser.KW_ROLLBACK - 575)) | (1 << (MySqlParser.KW_ROLLUP - 575)) | (1 << (MySqlParser.KW_ROTATE - 575)) | (1 << (MySqlParser.KW_ROW - 575)) | (1 << (MySqlParser.KW_ROWS - 575)) | (1 << (MySqlParser.KW_ROW_FORMAT - 575)) | (1 << (MySqlParser.KW_SAVEPOINT - 575)) | (1 << (MySqlParser.KW_SCHEDULE - 575)) | (1 << (MySqlParser.KW_SECURITY - 575)) | (1 << (MySqlParser.KW_SERVER - 575)) | (1 << (MySqlParser.KW_SESSION - 575)) | (1 << (MySqlParser.KW_SHARE - 575)) | (1 << (MySqlParser.KW_SHARED - 575)) | (1 << (MySqlParser.KW_SIGNED - 575)) | (1 << (MySqlParser.KW_SIMPLE - 575)) | (1 << (MySqlParser.KW_SLAVE - 575)) | (1 << (MySqlParser.KW_SLOW - 575)) | (1 << (MySqlParser.KW_SNAPSHOT - 575)) | (1 << (MySqlParser.KW_SOCKET - 575)) | (1 << (MySqlParser.KW_SOME - 575)) | (1 << (MySqlParser.KW_SONAME - 575)) | (1 << (MySqlParser.KW_SOUNDS - 575)) | (1 << (MySqlParser.KW_SOURCE - 575)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_VISIBLE - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)) | (1 << (MySqlParser.KW_QUARTER - 665)))) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & ((1 << (MySqlParser.KW_MONTH - 697)) | (1 << (MySqlParser.KW_DAY - 697)) | (1 << (MySqlParser.KW_HOUR - 697)) | (1 << (MySqlParser.KW_MINUTE - 697)) | (1 << (MySqlParser.KW_WEEK - 697)) | (1 << (MySqlParser.KW_SECOND - 697)) | (1 << (MySqlParser.KW_MICROSECOND - 697)) | (1 << (MySqlParser.KW_ADMIN - 697)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 697)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 697)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 697)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 697)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 697)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 697)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 697)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 697)) | (1 << (MySqlParser.KW_EXECUTE - 697)) | (1 << (MySqlParser.KW_FILE - 697)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 697)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 697)) | (1 << (MySqlParser.KW_FIREWALL_USER - 697)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 697)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 697)))) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & ((1 << (MySqlParser.KW_INVOKE - 729)) | (1 << (MySqlParser.KW_LAMBDA - 729)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 729)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 729)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_PRIVILEGES - 729)) | (1 << (MySqlParser.KW_PROCESS - 729)) | (1 << (MySqlParser.KW_RELOAD - 729)) | (1 << (MySqlParser.KW_REPLICATION_APPLIER - 729)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 729)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 729)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 729)) | (1 << (MySqlParser.KW_ROUTINE - 729)) | (1 << (MySqlParser.KW_S3 - 729)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_SET_USER_ID - 729)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 729)) | (1 << (MySqlParser.KW_SHUTDOWN - 729)) | (1 << (MySqlParser.KW_SUPER - 729)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 729)) | (1 << (MySqlParser.KW_TABLES - 729)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 729)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 729)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 729)) | (1 << (MySqlParser.KW_ARMSCII8 - 729)) | (1 << (MySqlParser.KW_ASCII - 729)) | (1 << (MySqlParser.KW_BIG5 - 729)) | (1 << (MySqlParser.KW_CP1250 - 729)) | (1 << (MySqlParser.KW_CP1251 - 729)))) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & ((1 << (MySqlParser.KW_CP1256 - 761)) | (1 << (MySqlParser.KW_CP1257 - 761)) | (1 << (MySqlParser.KW_CP850 - 761)) | (1 << (MySqlParser.KW_CP852 - 761)) | (1 << (MySqlParser.KW_CP866 - 761)) | (1 << (MySqlParser.KW_CP932 - 761)) | (1 << (MySqlParser.KW_DEC8 - 761)) | (1 << (MySqlParser.KW_EUCJPMS - 761)) | (1 << (MySqlParser.KW_EUCKR - 761)) | (1 << (MySqlParser.KW_GB18030 - 761)) | (1 << (MySqlParser.KW_GB2312 - 761)) | (1 << (MySqlParser.KW_GBK - 761)) | (1 << (MySqlParser.KW_GEOSTD8 - 761)) | (1 << (MySqlParser.KW_GREEK - 761)) | (1 << (MySqlParser.KW_HEBREW - 761)) | (1 << (MySqlParser.KW_HP8 - 761)) | (1 << (MySqlParser.KW_KEYBCS2 - 761)) | (1 << (MySqlParser.KW_KOI8R - 761)) | (1 << (MySqlParser.KW_KOI8U - 761)) | (1 << (MySqlParser.KW_LATIN1 - 761)) | (1 << (MySqlParser.KW_LATIN2 - 761)) | (1 << (MySqlParser.KW_LATIN5 - 761)) | (1 << (MySqlParser.KW_LATIN7 - 761)) | (1 << (MySqlParser.KW_MACCE - 761)) | (1 << (MySqlParser.KW_MACROMAN - 761)) | (1 << (MySqlParser.KW_SJIS - 761)) | (1 << (MySqlParser.KW_SWE7 - 761)) | (1 << (MySqlParser.KW_TIS620 - 761)) | (1 << (MySqlParser.KW_UCS2 - 761)) | (1 << (MySqlParser.KW_UJIS - 761)) | (1 << (MySqlParser.KW_UTF16 - 761)) | (1 << (MySqlParser.KW_UTF16LE - 761)))) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & ((1 << (MySqlParser.KW_UTF32 - 793)) | (1 << (MySqlParser.KW_UTF8 - 793)) | (1 << (MySqlParser.KW_UTF8MB3 - 793)) | (1 << (MySqlParser.KW_UTF8MB4 - 793)) | (1 << (MySqlParser.KW_ARCHIVE - 793)) | (1 << (MySqlParser.KW_BLACKHOLE - 793)) | (1 << (MySqlParser.KW_CSV - 793)) | (1 << (MySqlParser.KW_FEDERATED - 793)) | (1 << (MySqlParser.KW_INNODB - 793)) | (1 << (MySqlParser.KW_MEMORY - 793)) | (1 << (MySqlParser.KW_MRG_MYISAM - 793)) | (1 << (MySqlParser.KW_MYISAM - 793)) | (1 << (MySqlParser.KW_NDB - 793)) | (1 << (MySqlParser.KW_NDBCLUSTER - 793)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 793)) | (1 << (MySqlParser.KW_TOKUDB - 793)) | (1 << (MySqlParser.KW_REPEATABLE - 793)) | (1 << (MySqlParser.KW_COMMITTED - 793)) | (1 << (MySqlParser.KW_UNCOMMITTED - 793)) | (1 << (MySqlParser.KW_SERIALIZABLE - 793)) | (1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 793)) | (1 << (MySqlParser.KW_LINESTRING - 793)) | (1 << (MySqlParser.KW_MULTILINESTRING - 793)) | (1 << (MySqlParser.KW_MULTIPOINT - 793)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 793)) | (1 << (MySqlParser.KW_POINT - 793)) | (1 << (MySqlParser.KW_POLYGON - 793)) | (1 << (MySqlParser.KW_CATALOG_NAME - 793)) | (1 << (MySqlParser.KW_CHARSET - 793)) | (1 << (MySqlParser.KW_COLLATION - 793)))) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & ((1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_FORMAT - 825)) | (1 << (MySqlParser.KW_GET_FORMAT - 825)) | (1 << (MySqlParser.KW_RANDOM - 825)) | (1 << (MySqlParser.KW_REVERSE - 825)) | (1 << (MySqlParser.KW_ROW_COUNT - 825)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 825)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 825)) | (1 << (MySqlParser.KW_SRID - 825)) | (1 << (MySqlParser.KW_SYSTEM_USER - 825)) | (1 << (MySqlParser.KW_TP_CONNECTION_ADMIN - 825)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 825)) | (1 << (MySqlParser.MOD - 825)))) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & ((1 << (MySqlParser.CHARSET_REVERSE_QOUTE_STRING - 879)) | (1 << (MySqlParser.STRING_LITERAL - 879)) | (1 << (MySqlParser.ID - 879)))) !== 0)) {
				{
				this.state = 5121;
				_localctx._end_label = this.uid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cursorStatement(): CursorStatementContext {
		let _localctx: CursorStatementContext = new CursorStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 442, MySqlParser.RULE_cursorStatement);
		let _la: number;
		try {
			this.state = 5139;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_CLOSE:
				_localctx = new CloseCursorContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5124;
				this.match(MySqlParser.KW_CLOSE);
				this.state = 5125;
				(_localctx as CloseCursorContext)._cursor_name = this.uid();
				}
				break;
			case MySqlParser.KW_FETCH:
				_localctx = new FetchCursorContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5126;
				this.match(MySqlParser.KW_FETCH);
				this.state = 5131;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 732, this._ctx) ) {
				case 1:
					{
					this.state = 5128;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_NEXT) {
						{
						this.state = 5127;
						this.match(MySqlParser.KW_NEXT);
						}
					}

					this.state = 5130;
					this.match(MySqlParser.KW_FROM);
					}
					break;
				}
				this.state = 5133;
				(_localctx as FetchCursorContext)._cursor_name = this.uid();
				this.state = 5134;
				this.match(MySqlParser.KW_INTO);
				this.state = 5135;
				(_localctx as FetchCursorContext)._var_names = this.uidList();
				}
				break;
			case MySqlParser.KW_OPEN:
				_localctx = new OpenCursorContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5137;
				this.match(MySqlParser.KW_OPEN);
				this.state = 5138;
				(_localctx as OpenCursorContext)._cursor_name = this.uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public declareVariable(): DeclareVariableContext {
		let _localctx: DeclareVariableContext = new DeclareVariableContext(this._ctx, this.state);
		this.enterRule(_localctx, 444, MySqlParser.RULE_declareVariable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5141;
			this.match(MySqlParser.KW_DECLARE);
			this.state = 5142;
			_localctx._var_names = this.uidList();
			this.state = 5143;
			this.dataType();
			this.state = 5146;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFAULT) {
				{
				this.state = 5144;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 5145;
				this.expression(0);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public declareCondition(): DeclareConditionContext {
		let _localctx: DeclareConditionContext = new DeclareConditionContext(this._ctx, this.state);
		this.enterRule(_localctx, 446, MySqlParser.RULE_declareCondition);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5148;
			this.match(MySqlParser.KW_DECLARE);
			this.state = 5149;
			_localctx._condition_name = this.uid();
			this.state = 5150;
			this.match(MySqlParser.KW_CONDITION);
			this.state = 5151;
			this.match(MySqlParser.KW_FOR);
			this.state = 5158;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.ZERO_DECIMAL:
			case MySqlParser.ONE_DECIMAL:
			case MySqlParser.TWO_DECIMAL:
			case MySqlParser.THREE_DECIMAL:
			case MySqlParser.DECIMAL_LITERAL:
			case MySqlParser.REAL_LITERAL:
				{
				this.state = 5152;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_SQLSTATE:
				{
				this.state = 5153;
				this.match(MySqlParser.KW_SQLSTATE);
				this.state = 5155;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_VALUE) {
					{
					this.state = 5154;
					this.match(MySqlParser.KW_VALUE);
					}
				}

				this.state = 5157;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public declareCursor(): DeclareCursorContext {
		let _localctx: DeclareCursorContext = new DeclareCursorContext(this._ctx, this.state);
		this.enterRule(_localctx, 448, MySqlParser.RULE_declareCursor);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5160;
			this.match(MySqlParser.KW_DECLARE);
			this.state = 5161;
			_localctx._condition_name = this.uid();
			this.state = 5162;
			this.match(MySqlParser.KW_CURSOR);
			this.state = 5163;
			this.match(MySqlParser.KW_FOR);
			this.state = 5164;
			this.selectStatement();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public declareHandler(): DeclareHandlerContext {
		let _localctx: DeclareHandlerContext = new DeclareHandlerContext(this._ctx, this.state);
		this.enterRule(_localctx, 450, MySqlParser.RULE_declareHandler);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5166;
			this.match(MySqlParser.KW_DECLARE);
			this.state = 5167;
			_localctx._handlerAction = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_CONTINUE || _la === MySqlParser.KW_EXIT || _la === MySqlParser.KW_UNDO)) {
				_localctx._handlerAction = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 5168;
			this.match(MySqlParser.KW_HANDLER);
			this.state = 5169;
			this.match(MySqlParser.KW_FOR);
			this.state = 5170;
			this.handlerConditionValue();
			this.state = 5175;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 5171;
				this.match(MySqlParser.COMMA);
				this.state = 5172;
				this.handlerConditionValue();
				}
				}
				this.state = 5177;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5178;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handlerConditionValue(): HandlerConditionValueContext {
		let _localctx: HandlerConditionValueContext = new HandlerConditionValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 452, MySqlParser.RULE_handlerConditionValue);
		let _la: number;
		try {
			this.state = 5191;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.ZERO_DECIMAL:
			case MySqlParser.ONE_DECIMAL:
			case MySqlParser.TWO_DECIMAL:
			case MySqlParser.THREE_DECIMAL:
			case MySqlParser.DECIMAL_LITERAL:
			case MySqlParser.REAL_LITERAL:
				_localctx = new HandlerConditionCodeContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5180;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_SQLSTATE:
				_localctx = new HandlerConditionStateContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5181;
				this.match(MySqlParser.KW_SQLSTATE);
				this.state = 5183;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_VALUE) {
					{
					this.state = 5182;
					this.match(MySqlParser.KW_VALUE);
					}
				}

				this.state = 5185;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
			case MySqlParser.STRING_LITERAL:
			case MySqlParser.ID:
				_localctx = new HandlerConditionNameContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5186;
				(_localctx as HandlerConditionNameContext)._condition_name = this.uid();
				}
				break;
			case MySqlParser.KW_SQLWARNING:
				_localctx = new HandlerConditionWarningContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5187;
				this.match(MySqlParser.KW_SQLWARNING);
				}
				break;
			case MySqlParser.KW_NOT:
				_localctx = new HandlerConditionNotfoundContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5188;
				this.match(MySqlParser.KW_NOT);
				this.state = 5189;
				this.match(MySqlParser.KW_FOUND);
				}
				break;
			case MySqlParser.KW_SQLEXCEPTION:
				_localctx = new HandlerConditionExceptionContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5190;
				this.match(MySqlParser.KW_SQLEXCEPTION);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public procedureSqlStatement(): ProcedureSqlStatementContext {
		let _localctx: ProcedureSqlStatementContext = new ProcedureSqlStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 454, MySqlParser.RULE_procedureSqlStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5195;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 740, this._ctx) ) {
			case 1:
				{
				this.state = 5193;
				this.compoundStatement();
				}
				break;

			case 2:
				{
				this.state = 5194;
				this.sqlStatement();
				}
				break;
			}
			this.state = 5197;
			this.match(MySqlParser.SEMI);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public caseAlternative(): CaseAlternativeContext {
		let _localctx: CaseAlternativeContext = new CaseAlternativeContext(this._ctx, this.state);
		this.enterRule(_localctx, 456, MySqlParser.RULE_caseAlternative);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5199;
			this.match(MySqlParser.KW_WHEN);
			this.state = 5202;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 741, this._ctx) ) {
			case 1:
				{
				this.state = 5200;
				this.constant();
				}
				break;

			case 2:
				{
				this.state = 5201;
				this.expression(0);
				}
				break;
			}
			this.state = 5204;
			this.match(MySqlParser.KW_THEN);
			this.state = 5206;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5205;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5208;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 742, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public elifAlternative(): ElifAlternativeContext {
		let _localctx: ElifAlternativeContext = new ElifAlternativeContext(this._ctx, this.state);
		this.enterRule(_localctx, 458, MySqlParser.RULE_elifAlternative);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5210;
			this.match(MySqlParser.KW_ELSEIF);
			this.state = 5211;
			this.expression(0);
			this.state = 5212;
			this.match(MySqlParser.KW_THEN);
			this.state = 5214;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5213;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5216;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 743, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterUser(): AlterUserContext {
		let _localctx: AlterUserContext = new AlterUserContext(this._ctx, this.state);
		this.enterRule(_localctx, 460, MySqlParser.RULE_alterUser);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5218;
			this.match(MySqlParser.KW_ALTER);
			this.state = 5219;
			this.match(MySqlParser.KW_USER);
			this.state = 5221;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 744, this._ctx) ) {
			case 1:
				{
				this.state = 5220;
				this.ifExists();
				}
				break;
			}
			this.state = 5279;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 756, this._ctx) ) {
			case 1:
				{
				{
				this.state = 5223;
				this.userSpecification();
				this.state = 5228;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5224;
					this.match(MySqlParser.COMMA);
					this.state = 5225;
					this.userSpecification();
					}
					}
					this.state = 5230;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				}
				break;

			case 2:
				{
				{
				this.state = 5231;
				this.alterUserAuthOption();
				this.state = 5236;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5232;
					this.match(MySqlParser.COMMA);
					this.state = 5233;
					this.alterUserAuthOption();
					}
					}
					this.state = 5238;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5253;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_REQUIRE) {
					{
					this.state = 5239;
					this.match(MySqlParser.KW_REQUIRE);
					this.state = 5251;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_NONE:
						{
						this.state = 5240;
						this.match(MySqlParser.KW_NONE);
						}
						break;
					case MySqlParser.KW_SSL:
					case MySqlParser.KW_CIPHER:
					case MySqlParser.KW_ISSUER:
					case MySqlParser.KW_SUBJECT:
					case MySqlParser.KW_X509:
						{
						this.state = 5241;
						this.tlsOption();
						this.state = 5248;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						while (_la === MySqlParser.KW_AND || _la === MySqlParser.KW_SSL || _la === MySqlParser.KW_CIPHER || _la === MySqlParser.KW_ISSUER || _la === MySqlParser.KW_SUBJECT || _la === MySqlParser.KW_X509) {
							{
							{
							this.state = 5243;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
							if (_la === MySqlParser.KW_AND) {
								{
								this.state = 5242;
								this.match(MySqlParser.KW_AND);
								}
							}

							this.state = 5245;
							this.tlsOption();
							}
							}
							this.state = 5250;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				this.state = 5261;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 752, this._ctx) ) {
				case 1:
					{
					this.state = 5255;
					this.match(MySqlParser.KW_WITH);
					this.state = 5257;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					do {
						{
						{
						this.state = 5256;
						this.userResourceOption();
						}
						}
						this.state = 5259;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					} while (((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)))) !== 0));
					}
					break;
				}
				this.state = 5267;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_ACCOUNT || _la === MySqlParser.KW_FAILED_LOGIN_ATTEMPTS || _la === MySqlParser.KW_PASSWORD || _la === MySqlParser.KW_PASSWORD_LOCK_TIME) {
					{
					this.state = 5265;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
					case MySqlParser.KW_PASSWORD:
					case MySqlParser.KW_PASSWORD_LOCK_TIME:
						{
						this.state = 5263;
						this.userPasswordOption();
						}
						break;
					case MySqlParser.KW_ACCOUNT:
						{
						this.state = 5264;
						this.userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					this.state = 5269;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5272;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ATTRIBUTE || _la === MySqlParser.KW_COMMENT) {
					{
					this.state = 5270;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_ATTRIBUTE || _la === MySqlParser.KW_COMMENT)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 5271;
					this.match(MySqlParser.STRING_LITERAL);
					}
				}

				}
				}
				break;

			case 3:
				{
				{
				{
				this.state = 5274;
				this.userOrRoleName();
				}
				this.state = 5275;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 5276;
				this.match(MySqlParser.KW_ROLE);
				this.state = 5277;
				this.roleOption();
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createUser(): CreateUserContext {
		let _localctx: CreateUserContext = new CreateUserContext(this._ctx, this.state);
		this.enterRule(_localctx, 462, MySqlParser.RULE_createUser);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5281;
			this.match(MySqlParser.KW_CREATE);
			this.state = 5282;
			this.match(MySqlParser.KW_USER);
			this.state = 5284;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IF) {
				{
				this.state = 5283;
				this.ifNotExists();
				}
			}

			this.state = 5286;
			this.userName();
			this.state = 5288;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IDENTIFIED) {
				{
				this.state = 5287;
				this.createUserAuthOption();
				}
			}

			this.state = 5297;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 5290;
				this.match(MySqlParser.COMMA);
				this.state = 5291;
				this.userName();
				this.state = 5293;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IDENTIFIED) {
					{
					this.state = 5292;
					this.createUserAuthOption();
					}
				}

				}
				}
				this.state = 5299;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5303;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DEFAULT) {
				{
				this.state = 5300;
				this.match(MySqlParser.KW_DEFAULT);
				this.state = 5301;
				this.match(MySqlParser.KW_ROLE);
				this.state = 5302;
				this.roleOption();
				}
			}

			this.state = 5319;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_REQUIRE) {
				{
				this.state = 5305;
				this.match(MySqlParser.KW_REQUIRE);
				this.state = 5317;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_NONE:
					{
					this.state = 5306;
					this.match(MySqlParser.KW_NONE);
					}
					break;
				case MySqlParser.KW_SSL:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_X509:
					{
					this.state = 5307;
					this.tlsOption();
					this.state = 5314;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.KW_AND || _la === MySqlParser.KW_SSL || _la === MySqlParser.KW_CIPHER || _la === MySqlParser.KW_ISSUER || _la === MySqlParser.KW_SUBJECT || _la === MySqlParser.KW_X509) {
						{
						{
						this.state = 5309;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_AND) {
							{
							this.state = 5308;
							this.match(MySqlParser.KW_AND);
							}
						}

						this.state = 5311;
						this.tlsOption();
						}
						}
						this.state = 5316;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			this.state = 5327;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 767, this._ctx) ) {
			case 1:
				{
				this.state = 5321;
				this.match(MySqlParser.KW_WITH);
				this.state = 5323;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 5322;
					this.userResourceOption();
					}
					}
					this.state = 5325;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & ((1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 478)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 478)))) !== 0));
				}
				break;
			}
			this.state = 5333;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_ACCOUNT || _la === MySqlParser.KW_FAILED_LOGIN_ATTEMPTS || _la === MySqlParser.KW_PASSWORD || _la === MySqlParser.KW_PASSWORD_LOCK_TIME) {
				{
				this.state = 5331;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
					{
					this.state = 5329;
					this.userPasswordOption();
					}
					break;
				case MySqlParser.KW_ACCOUNT:
					{
					this.state = 5330;
					this.userLockOption();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				this.state = 5335;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5338;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ATTRIBUTE || _la === MySqlParser.KW_COMMENT) {
				{
				this.state = 5336;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ATTRIBUTE || _la === MySqlParser.KW_COMMENT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 5337;
				this.match(MySqlParser.STRING_LITERAL);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropUser(): DropUserContext {
		let _localctx: DropUserContext = new DropUserContext(this._ctx, this.state);
		this.enterRule(_localctx, 464, MySqlParser.RULE_dropUser);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5340;
			this.match(MySqlParser.KW_DROP);
			this.state = 5341;
			this.match(MySqlParser.KW_USER);
			this.state = 5343;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IF) {
				{
				this.state = 5342;
				this.ifExists();
				}
			}

			this.state = 5345;
			this.userName();
			this.state = 5350;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 5346;
				this.match(MySqlParser.COMMA);
				this.state = 5347;
				this.userName();
				}
				}
				this.state = 5352;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantStatement(): GrantStatementContext {
		let _localctx: GrantStatementContext = new GrantStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 466, MySqlParser.RULE_grantStatement);
		let _la: number;
		try {
			let _alt: number;
			this.state = 5442;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 790, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5353;
				this.match(MySqlParser.KW_GRANT);
				this.state = 5354;
				this.privelegeClause();
				this.state = 5359;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5355;
					this.match(MySqlParser.COMMA);
					this.state = 5356;
					this.privelegeClause();
					}
					}
					this.state = 5361;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5362;
				this.match(MySqlParser.KW_ON);
				this.state = 5364;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 774, this._ctx) ) {
				case 1:
					{
					this.state = 5363;
					this.privilegeObjectType();
					}
					break;
				}
				this.state = 5366;
				this.privilegeLevel();
				this.state = 5367;
				this.match(MySqlParser.KW_TO);
				this.state = 5377;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 776, this._ctx) ) {
				case 1:
					{
					{
					this.state = 5368;
					this.userAuthOption();
					this.state = 5373;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 5369;
						this.match(MySqlParser.COMMA);
						this.state = 5370;
						this.userAuthOption();
						}
						}
						this.state = 5375;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
					}
					break;

				case 2:
					{
					this.state = 5376;
					this.userOrRoleNames();
					}
					break;
				}
				this.state = 5393;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_REQUIRE) {
					{
					this.state = 5379;
					this.match(MySqlParser.KW_REQUIRE);
					this.state = 5391;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.KW_NONE:
						{
						this.state = 5380;
						_localctx._tlsNone = this.match(MySqlParser.KW_NONE);
						}
						break;
					case MySqlParser.KW_SSL:
					case MySqlParser.KW_CIPHER:
					case MySqlParser.KW_ISSUER:
					case MySqlParser.KW_SUBJECT:
					case MySqlParser.KW_X509:
						{
						this.state = 5381;
						this.tlsOption();
						this.state = 5388;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						while (_la === MySqlParser.KW_AND || _la === MySqlParser.KW_SSL || _la === MySqlParser.KW_CIPHER || _la === MySqlParser.KW_ISSUER || _la === MySqlParser.KW_SUBJECT || _la === MySqlParser.KW_X509) {
							{
							{
							this.state = 5383;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
							if (_la === MySqlParser.KW_AND) {
								{
								this.state = 5382;
								this.match(MySqlParser.KW_AND);
								}
							}

							this.state = 5385;
							this.tlsOption();
							}
							}
							this.state = 5390;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				this.state = 5404;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 783, this._ctx) ) {
				case 1:
					{
					this.state = 5395;
					this.match(MySqlParser.KW_WITH);
					this.state = 5401;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 782, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							this.state = 5399;
							this._errHandler.sync(this);
							switch (this._input.LA(1)) {
							case MySqlParser.KW_GRANT:
								{
								this.state = 5396;
								this.match(MySqlParser.KW_GRANT);
								this.state = 5397;
								this.match(MySqlParser.KW_OPTION);
								}
								break;
							case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
							case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
							case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
							case MySqlParser.KW_MAX_USER_CONNECTIONS:
								{
								this.state = 5398;
								this.userResourceOption();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							}
						}
						this.state = 5403;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 782, this._ctx);
					}
					}
					break;
				}
				this.state = 5413;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 5406;
					this.match(MySqlParser.KW_AS);
					this.state = 5407;
					this.userName();
					this.state = 5411;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 784, this._ctx) ) {
					case 1:
						{
						this.state = 5408;
						this.match(MySqlParser.KW_WITH);
						this.state = 5409;
						this.match(MySqlParser.KW_ROLE);
						this.state = 5410;
						this.roleOption();
						}
						break;
					}
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5415;
				this.match(MySqlParser.KW_GRANT);
				this.state = 5418;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 786, this._ctx) ) {
				case 1:
					{
					this.state = 5416;
					this.match(MySqlParser.KW_PROXY);
					this.state = 5417;
					this.match(MySqlParser.KW_ON);
					}
					break;
				}
				{
				this.state = 5420;
				this.userOrRoleName();
				}
				this.state = 5425;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5421;
					this.match(MySqlParser.COMMA);
					{
					this.state = 5422;
					this.userOrRoleName();
					}
					}
					}
					this.state = 5427;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5428;
				this.match(MySqlParser.KW_TO);
				{
				this.state = 5429;
				this.userOrRoleName();
				}
				this.state = 5434;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5430;
					this.match(MySqlParser.COMMA);
					{
					this.state = 5431;
					this.userOrRoleName();
					}
					}
					}
					this.state = 5436;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5440;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 789, this._ctx) ) {
				case 1:
					{
					this.state = 5437;
					this.match(MySqlParser.KW_WITH);
					this.state = 5438;
					this.match(MySqlParser.KW_ADMIN);
					this.state = 5439;
					this.match(MySqlParser.KW_OPTION);
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public roleOption(): RoleOptionContext {
		let _localctx: RoleOptionContext = new RoleOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 468, MySqlParser.RULE_roleOption);
		let _la: number;
		try {
			this.state = 5452;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 792, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5444;
				this.match(MySqlParser.KW_DEFAULT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5445;
				this.match(MySqlParser.KW_NONE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5446;
				this.match(MySqlParser.KW_ALL);
				this.state = 5449;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_EXCEPT) {
					{
					this.state = 5447;
					this.match(MySqlParser.KW_EXCEPT);
					this.state = 5448;
					this.userOrRoleNames();
					}
				}

				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5451;
				this.userOrRoleNames();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantProxy(): GrantProxyContext {
		let _localctx: GrantProxyContext = new GrantProxyContext(this._ctx, this.state);
		this.enterRule(_localctx, 470, MySqlParser.RULE_grantProxy);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5454;
			this.match(MySqlParser.KW_GRANT);
			this.state = 5455;
			this.match(MySqlParser.KW_PROXY);
			this.state = 5456;
			this.match(MySqlParser.KW_ON);
			this.state = 5457;
			_localctx._fromFirst = this.userName();
			this.state = 5458;
			this.match(MySqlParser.KW_TO);
			this.state = 5459;
			_localctx._toFirst = this.userName();
			this.state = 5464;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 5460;
				this.match(MySqlParser.COMMA);
				this.state = 5461;
				_localctx._userName = this.userName();
				_localctx._toOther.push(_localctx._userName);
				}
				}
				this.state = 5466;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5470;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 794, this._ctx) ) {
			case 1:
				{
				this.state = 5467;
				this.match(MySqlParser.KW_WITH);
				this.state = 5468;
				this.match(MySqlParser.KW_GRANT);
				this.state = 5469;
				this.match(MySqlParser.KW_OPTION);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterResourceGroup(): AlterResourceGroupContext {
		let _localctx: AlterResourceGroupContext = new AlterResourceGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 472, MySqlParser.RULE_alterResourceGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5472;
			this.match(MySqlParser.KW_ALTER);
			this.state = 5473;
			this.match(MySqlParser.KW_RESOURCE);
			this.state = 5474;
			this.match(MySqlParser.KW_GROUP);
			this.state = 5475;
			this.groupName();
			this.state = 5481;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_VCPU) {
				{
				this.state = 5476;
				this.match(MySqlParser.KW_VCPU);
				this.state = 5478;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 5477;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 5480;
				this.resourceGroupVcpuSpec();
				}
			}

			this.state = 5488;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_THREAD_PRIORITY) {
				{
				this.state = 5483;
				this.match(MySqlParser.KW_THREAD_PRIORITY);
				this.state = 5485;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 5484;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 5487;
				this.decimalLiteral();
				}
			}

			this.state = 5494;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE) {
				{
				this.state = 5490;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 5492;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FORCE) {
					{
					this.state = 5491;
					this.match(MySqlParser.KW_FORCE);
					}
				}

				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createResourceGroup(): CreateResourceGroupContext {
		let _localctx: CreateResourceGroupContext = new CreateResourceGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 474, MySqlParser.RULE_createResourceGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5496;
			this.match(MySqlParser.KW_CREATE);
			this.state = 5497;
			this.match(MySqlParser.KW_RESOURCE);
			this.state = 5498;
			this.match(MySqlParser.KW_GROUP);
			this.state = 5499;
			this.groupNameCreate();
			this.state = 5500;
			this.match(MySqlParser.KW_TYPE);
			this.state = 5501;
			this.match(MySqlParser.EQUAL_SYMBOL);
			this.state = 5502;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_USER || _la === MySqlParser.KW_SYSTEM)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 5508;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_VCPU) {
				{
				this.state = 5503;
				this.match(MySqlParser.KW_VCPU);
				this.state = 5505;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 5504;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 5507;
				this.resourceGroupVcpuSpec();
				}
			}

			this.state = 5515;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_THREAD_PRIORITY) {
				{
				this.state = 5510;
				this.match(MySqlParser.KW_THREAD_PRIORITY);
				this.state = 5512;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 5511;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 5514;
				this.decimalLiteral();
				}
			}

			this.state = 5518;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE) {
				{
				this.state = 5517;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DISABLE || _la === MySqlParser.KW_ENABLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropResourceGroup(): DropResourceGroupContext {
		let _localctx: DropResourceGroupContext = new DropResourceGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 476, MySqlParser.RULE_dropResourceGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5520;
			this.match(MySqlParser.KW_DROP);
			this.state = 5521;
			this.match(MySqlParser.KW_RESOURCE);
			this.state = 5522;
			this.match(MySqlParser.KW_GROUP);
			this.state = 5523;
			this.groupName();
			this.state = 5525;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FORCE) {
				{
				this.state = 5524;
				this.match(MySqlParser.KW_FORCE);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setResourceGroup(): SetResourceGroupContext {
		let _localctx: SetResourceGroupContext = new SetResourceGroupContext(this._ctx, this.state);
		this.enterRule(_localctx, 478, MySqlParser.RULE_setResourceGroup);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5527;
			this.match(MySqlParser.KW_SET);
			this.state = 5528;
			this.match(MySqlParser.KW_RESOURCE);
			this.state = 5529;
			this.match(MySqlParser.KW_GROUP);
			this.state = 5530;
			this.groupName();
			this.state = 5540;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 5531;
				this.match(MySqlParser.KW_FOR);
				this.state = 5532;
				this.decimalLiteral();
				this.state = 5537;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5533;
					this.match(MySqlParser.COMMA);
					this.state = 5534;
					this.decimalLiteral();
					}
					}
					this.state = 5539;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resourceGroupVcpuSpec(): ResourceGroupVcpuSpecContext {
		let _localctx: ResourceGroupVcpuSpecContext = new ResourceGroupVcpuSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 480, MySqlParser.RULE_resourceGroupVcpuSpec);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5547;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 809, this._ctx) ) {
			case 1:
				{
				this.state = 5542;
				this.decimalLiteral();
				}
				break;

			case 2:
				{
				this.state = 5543;
				this.decimalLiteral();
				this.state = 5544;
				this.match(MySqlParser.MINUS);
				this.state = 5545;
				this.decimalLiteral();
				}
				break;
			}
			this.state = 5553;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 810, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 5549;
					this.match(MySqlParser.COMMA);
					this.state = 5550;
					this.resourceGroupVcpuSpec();
					}
					}
				}
				this.state = 5555;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 810, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public renameUser(): RenameUserContext {
		let _localctx: RenameUserContext = new RenameUserContext(this._ctx, this.state);
		this.enterRule(_localctx, 482, MySqlParser.RULE_renameUser);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5556;
			this.match(MySqlParser.KW_RENAME);
			this.state = 5557;
			this.match(MySqlParser.KW_USER);
			this.state = 5558;
			this.renameUserClause();
			this.state = 5563;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 5559;
				this.match(MySqlParser.COMMA);
				this.state = 5560;
				this.renameUserClause();
				}
				}
				this.state = 5565;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public revokeStatement(): RevokeStatementContext {
		let _localctx: RevokeStatementContext = new RevokeStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 484, MySqlParser.RULE_revokeStatement);
		let _la: number;
		try {
			this.state = 5618;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 822, this._ctx) ) {
			case 1:
				_localctx = new DetailRevokeContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5566;
				this.match(MySqlParser.KW_REVOKE);
				this.state = 5568;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IF) {
					{
					this.state = 5567;
					this.ifExists();
					}
				}

				this.state = 5570;
				this.privelegeClause();
				this.state = 5575;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 5571;
					this.match(MySqlParser.COMMA);
					this.state = 5572;
					this.privelegeClause();
					}
					}
					this.state = 5577;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5578;
				this.match(MySqlParser.KW_ON);
				this.state = 5580;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 814, this._ctx) ) {
				case 1:
					{
					this.state = 5579;
					this.privilegeObjectType();
					}
					break;
				}
				this.state = 5582;
				this.privilegeLevel();
				this.state = 5583;
				this.match(MySqlParser.KW_FROM);
				this.state = 5584;
				this.userOrRoleNames();
				this.state = 5586;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IGNORE) {
					{
					this.state = 5585;
					this.ignoreUnknownUser();
					}
				}

				}
				break;

			case 2:
				_localctx = new ShortRevokeContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5588;
				this.match(MySqlParser.KW_REVOKE);
				this.state = 5590;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IF) {
					{
					this.state = 5589;
					this.ifExists();
					}
				}

				this.state = 5592;
				this.match(MySqlParser.KW_ALL);
				this.state = 5594;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PRIVILEGES) {
					{
					this.state = 5593;
					this.match(MySqlParser.KW_PRIVILEGES);
					}
				}

				this.state = 5596;
				this.match(MySqlParser.COMMA);
				this.state = 5597;
				this.match(MySqlParser.KW_GRANT);
				this.state = 5598;
				this.match(MySqlParser.KW_OPTION);
				this.state = 5599;
				this.match(MySqlParser.KW_FROM);
				this.state = 5600;
				this.userOrRoleNames();
				this.state = 5602;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IGNORE) {
					{
					this.state = 5601;
					this.ignoreUnknownUser();
					}
				}

				}
				break;

			case 3:
				_localctx = new ProxyAndRoleRevokeContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5604;
				this.match(MySqlParser.KW_REVOKE);
				this.state = 5606;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 819, this._ctx) ) {
				case 1:
					{
					this.state = 5605;
					this.ifExists();
					}
					break;
				}
				this.state = 5610;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 820, this._ctx) ) {
				case 1:
					{
					this.state = 5608;
					this.match(MySqlParser.KW_PROXY);
					this.state = 5609;
					this.match(MySqlParser.KW_ON);
					}
					break;
				}
				this.state = 5612;
				this.userOrRoleNames();
				this.state = 5613;
				this.match(MySqlParser.KW_FROM);
				this.state = 5614;
				this.userOrRoleNames();
				this.state = 5616;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IGNORE) {
					{
					this.state = 5615;
					this.ignoreUnknownUser();
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ignoreUnknownUser(): IgnoreUnknownUserContext {
		let _localctx: IgnoreUnknownUserContext = new IgnoreUnknownUserContext(this._ctx, this.state);
		this.enterRule(_localctx, 486, MySqlParser.RULE_ignoreUnknownUser);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5620;
			this.match(MySqlParser.KW_IGNORE);
			this.state = 5621;
			this.match(MySqlParser.KW_UNKNOWN);
			this.state = 5622;
			this.match(MySqlParser.KW_USER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegeObjectType(): PrivilegeObjectTypeContext {
		let _localctx: PrivilegeObjectTypeContext = new PrivilegeObjectTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 488, MySqlParser.RULE_privilegeObjectType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5624;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_PROCEDURE || _la === MySqlParser.KW_TABLE || _la === MySqlParser.KW_FUNCTION)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setPasswordStatement(): SetPasswordStatementContext {
		let _localctx: SetPasswordStatementContext = new SetPasswordStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 490, MySqlParser.RULE_setPasswordStatement);
		let _la: number;
		try {
			this.state = 5658;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 829, this._ctx) ) {
			case 1:
				_localctx = new V57Context(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5626;
				this.match(MySqlParser.KW_SET);
				this.state = 5627;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5630;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 5628;
					this.match(MySqlParser.KW_FOR);
					this.state = 5629;
					this.userName();
					}
				}

				this.state = 5632;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 5635;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_PASSWORD:
					{
					this.state = 5633;
					this.passwordFunctionClause();
					}
					break;
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 5634;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				_localctx = new V80Context(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5637;
				this.match(MySqlParser.KW_SET);
				this.state = 5638;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5641;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 5639;
					this.match(MySqlParser.KW_FOR);
					this.state = 5640;
					this.userName();
					}
				}

				this.state = 5647;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_TO:
					{
					this.state = 5643;
					this.match(MySqlParser.KW_TO);
					this.state = 5644;
					this.match(MySqlParser.KW_RANDOM);
					}
					break;
				case MySqlParser.EQUAL_SYMBOL:
					{
					this.state = 5645;
					this.match(MySqlParser.EQUAL_SYMBOL);
					this.state = 5646;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5651;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 827, this._ctx) ) {
				case 1:
					{
					this.state = 5649;
					this.match(MySqlParser.KW_REPLACE);
					this.state = 5650;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				}
				this.state = 5656;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_RETAIN) {
					{
					this.state = 5653;
					this.match(MySqlParser.KW_RETAIN);
					this.state = 5654;
					this.match(MySqlParser.KW_CURRENT);
					this.state = 5655;
					this.match(MySqlParser.KW_PASSWORD);
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userSpecification(): UserSpecificationContext {
		let _localctx: UserSpecificationContext = new UserSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 492, MySqlParser.RULE_userSpecification);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5660;
			this.userName();
			this.state = 5661;
			this.userPasswordOption();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterUserAuthOption(): AlterUserAuthOptionContext {
		let _localctx: AlterUserAuthOptionContext = new AlterUserAuthOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 494, MySqlParser.RULE_alterUserAuthOption);
		let _la: number;
		try {
			let _alt: number;
			this.state = 5701;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 833, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5663;
				this.userName();
				this.state = 5664;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5665;
				this.match(MySqlParser.KW_BY);
				this.state = 5666;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 5667;
				this.authOptionClause();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5669;
				this.userName();
				this.state = 5670;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5671;
				this.match(MySqlParser.KW_BY);
				this.state = 5672;
				this.match(MySqlParser.KW_RANDOM);
				this.state = 5673;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5674;
				this.authOptionClause();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5676;
				this.userName();
				this.state = 5677;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5678;
				this.match(MySqlParser.KW_WITH);
				this.state = 5679;
				this.authenticationRule();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5681;
				this.userName();
				this.state = 5682;
				this.match(MySqlParser.KW_DISCARD);
				this.state = 5683;
				this.match(MySqlParser.KW_OLD);
				this.state = 5684;
				this.match(MySqlParser.KW_PASSWORD);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5686;
				this.userName();
				this.state = 5692;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 5687;
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_ADD || _la === MySqlParser.KW_DROP || _la === MySqlParser.KW_MODIFY)) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						this.state = 5688;
						this.factor();
						this.state = 5690;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_IDENTIFIED) {
							{
							this.state = 5689;
							this.factorAuthOption();
							}
						}

						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5694;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 831, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5696;
				this.userName();
				this.state = 5698;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.TWO_DECIMAL || _la === MySqlParser.THREE_DECIMAL) {
					{
					this.state = 5697;
					this.registrationOption();
					}
				}

				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5700;
				this.userName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createUserAuthOption(): CreateUserAuthOptionContext {
		let _localctx: CreateUserAuthOptionContext = new CreateUserAuthOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 496, MySqlParser.RULE_createUserAuthOption);
		let _la: number;
		try {
			this.state = 5739;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 840, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5703;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5704;
				this.match(MySqlParser.KW_BY);
				this.state = 5710;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 5705;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				case MySqlParser.KW_RANDOM:
					{
					{
					this.state = 5706;
					this.match(MySqlParser.KW_RANDOM);
					this.state = 5707;
					this.match(MySqlParser.KW_PASSWORD);
					}
					}
					break;
				case MySqlParser.KW_PASSWORD:
					{
					{
					this.state = 5708;
					this.match(MySqlParser.KW_PASSWORD);
					this.state = 5709;
					this.match(MySqlParser.STRING_LITERAL);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5714;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AND) {
					{
					this.state = 5712;
					this.match(MySqlParser.KW_AND);
					this.state = 5713;
					this.createUserAuthOption();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5716;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5717;
				this.match(MySqlParser.KW_WITH);
				this.state = 5718;
				_localctx._authPlugin = this.uid();
				this.state = 5727;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_BY:
					{
					{
					this.state = 5719;
					this.match(MySqlParser.KW_BY);
					this.state = 5723;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.STRING_LITERAL:
						{
						this.state = 5720;
						this.match(MySqlParser.STRING_LITERAL);
						}
						break;
					case MySqlParser.KW_RANDOM:
						{
						{
						this.state = 5721;
						this.match(MySqlParser.KW_RANDOM);
						this.state = 5722;
						this.match(MySqlParser.KW_PASSWORD);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					}
					break;
				case MySqlParser.KW_AS:
					{
					this.state = 5725;
					this.match(MySqlParser.KW_AS);
					this.state = 5726;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				case MySqlParser.EOF:
				case MySqlParser.KW_ALTER:
				case MySqlParser.KW_ANALYZE:
				case MySqlParser.KW_AND:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_CALL:
				case MySqlParser.KW_CHANGE:
				case MySqlParser.KW_CHECK:
				case MySqlParser.KW_CREATE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DELETE:
				case MySqlParser.KW_DESC:
				case MySqlParser.KW_DESCRIBE:
				case MySqlParser.KW_DROP:
				case MySqlParser.KW_EXPLAIN:
				case MySqlParser.KW_GET:
				case MySqlParser.KW_GRANT:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_KILL:
				case MySqlParser.KW_LOAD:
				case MySqlParser.KW_LOCK:
				case MySqlParser.KW_OPTIMIZE:
				case MySqlParser.KW_PURGE:
				case MySqlParser.KW_RELEASE:
				case MySqlParser.KW_RENAME:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_REQUIRE:
				case MySqlParser.KW_RESIGNAL:
				case MySqlParser.KW_REVOKE:
				case MySqlParser.KW_SELECT:
				case MySqlParser.KW_SET:
				case MySqlParser.KW_SHOW:
				case MySqlParser.KW_SIGNAL:
				case MySqlParser.KW_TABLE:
				case MySqlParser.KW_UNLOCK:
				case MySqlParser.KW_UPDATE:
				case MySqlParser.KW_USE:
				case MySqlParser.KW_VALUES:
				case MySqlParser.KW_WITH:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESTART:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_CLONE:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.LR_BRACKET:
				case MySqlParser.COMMA:
				case MySqlParser.SEMI:
					break;
				default:
					break;
				}
				this.state = 5731;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AND) {
					{
					this.state = 5729;
					this.match(MySqlParser.KW_AND);
					this.state = 5730;
					this.createUserAuthOption();
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5733;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5734;
				this.match(MySqlParser.KW_WITH);
				this.state = 5735;
				_localctx._authPlugin = this.uid();
				this.state = 5737;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INITIAL) {
					{
					this.state = 5736;
					this.createUserInitialAuthOption();
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createUserInitialAuthOption(): CreateUserInitialAuthOptionContext {
		let _localctx: CreateUserInitialAuthOptionContext = new CreateUserInitialAuthOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 498, MySqlParser.RULE_createUserInitialAuthOption);
		try {
			this.state = 5758;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 842, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5741;
				this.match(MySqlParser.KW_INITIAL);
				this.state = 5742;
				this.match(MySqlParser.KW_AUTHENTICATION);
				this.state = 5743;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5744;
				this.match(MySqlParser.KW_BY);
				this.state = 5748;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_RANDOM:
					{
					{
					this.state = 5745;
					this.match(MySqlParser.KW_RANDOM);
					this.state = 5746;
					this.match(MySqlParser.KW_PASSWORD);
					}
					}
					break;
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 5747;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5750;
				this.match(MySqlParser.KW_INITIAL);
				this.state = 5751;
				this.match(MySqlParser.KW_AUTHENTICATION);
				this.state = 5752;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5753;
				this.match(MySqlParser.KW_WITH);
				this.state = 5754;
				_localctx._authPlugin = this.uid();
				this.state = 5755;
				this.match(MySqlParser.KW_AS);
				this.state = 5756;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userAuthOption(): UserAuthOptionContext {
		let _localctx: UserAuthOptionContext = new UserAuthOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 500, MySqlParser.RULE_userAuthOption);
		try {
			this.state = 5785;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 843, this._ctx) ) {
			case 1:
				_localctx = new HashAuthOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5760;
				this.userName();
				this.state = 5761;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5762;
				this.match(MySqlParser.KW_BY);
				this.state = 5763;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5764;
				(_localctx as HashAuthOptionContext)._hashed = this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 2:
				_localctx = new RandomAuthOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5766;
				this.userName();
				this.state = 5767;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5768;
				this.match(MySqlParser.KW_BY);
				this.state = 5769;
				this.match(MySqlParser.KW_RANDOM);
				this.state = 5770;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5771;
				this.authOptionClause();
				}
				break;

			case 3:
				_localctx = new StringAuthOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5773;
				this.userName();
				this.state = 5774;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5775;
				this.match(MySqlParser.KW_BY);
				this.state = 5776;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 5777;
				this.authOptionClause();
				}
				break;

			case 4:
				_localctx = new ModuleAuthOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5779;
				this.userName();
				this.state = 5780;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 5781;
				this.match(MySqlParser.KW_WITH);
				this.state = 5782;
				this.authenticationRule();
				}
				break;

			case 5:
				_localctx = new SimpleAuthOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5784;
				this.userName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public authOptionClause(): AuthOptionClauseContext {
		let _localctx: AuthOptionClauseContext = new AuthOptionClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 502, MySqlParser.RULE_authOptionClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5789;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 844, this._ctx) ) {
			case 1:
				{
				this.state = 5787;
				this.match(MySqlParser.KW_REPLACE);
				this.state = 5788;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			}
			this.state = 5794;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_RETAIN) {
				{
				this.state = 5791;
				this.match(MySqlParser.KW_RETAIN);
				this.state = 5792;
				this.match(MySqlParser.KW_CURRENT);
				this.state = 5793;
				this.match(MySqlParser.KW_PASSWORD);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public authenticationRule(): AuthenticationRuleContext {
		let _localctx: AuthenticationRuleContext = new AuthenticationRuleContext(this._ctx, this.state);
		this.enterRule(_localctx, 504, MySqlParser.RULE_authenticationRule);
		let _la: number;
		try {
			this.state = 5810;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 848, this._ctx) ) {
			case 1:
				_localctx = new ModuleContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5796;
				(_localctx as ModuleContext)._authPlugin = this.uid();
				this.state = 5804;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 847, this._ctx) ) {
				case 1:
					{
					this.state = 5797;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_AS || _la === MySqlParser.KW_BY || _la === MySqlParser.KW_USING)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 5801;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case MySqlParser.STRING_LITERAL:
						{
						this.state = 5798;
						this.match(MySqlParser.STRING_LITERAL);
						}
						break;
					case MySqlParser.KW_RANDOM:
						{
						this.state = 5799;
						this.match(MySqlParser.KW_RANDOM);
						this.state = 5800;
						this.match(MySqlParser.KW_PASSWORD);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5803;
					this.authOptionClause();
					}
					break;
				}
				}
				break;

			case 2:
				_localctx = new PasswordModuleOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5806;
				(_localctx as PasswordModuleOptionContext)._authPlugin = this.uid();
				this.state = 5807;
				this.match(MySqlParser.KW_USING);
				this.state = 5808;
				this.passwordFunctionClause();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tlsOption(): TlsOptionContext {
		let _localctx: TlsOptionContext = new TlsOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 506, MySqlParser.RULE_tlsOption);
		try {
			this.state = 5820;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SSL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5812;
				this.match(MySqlParser.KW_SSL);
				}
				break;
			case MySqlParser.KW_X509:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5813;
				this.match(MySqlParser.KW_X509);
				}
				break;
			case MySqlParser.KW_CIPHER:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5814;
				this.match(MySqlParser.KW_CIPHER);
				this.state = 5815;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_ISSUER:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5816;
				this.match(MySqlParser.KW_ISSUER);
				this.state = 5817;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_SUBJECT:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5818;
				this.match(MySqlParser.KW_SUBJECT);
				this.state = 5819;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userResourceOption(): UserResourceOptionContext {
		let _localctx: UserResourceOptionContext = new UserResourceOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 508, MySqlParser.RULE_userResourceOption);
		try {
			this.state = 5830;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5822;
				this.match(MySqlParser.KW_MAX_QUERIES_PER_HOUR);
				this.state = 5823;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5824;
				this.match(MySqlParser.KW_MAX_UPDATES_PER_HOUR);
				this.state = 5825;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5826;
				this.match(MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR);
				this.state = 5827;
				this.decimalLiteral();
				}
				break;
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5828;
				this.match(MySqlParser.KW_MAX_USER_CONNECTIONS);
				this.state = 5829;
				this.decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userPasswordOption(): UserPasswordOptionContext {
		let _localctx: UserPasswordOptionContext = new UserPasswordOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 510, MySqlParser.RULE_userPasswordOption);
		let _la: number;
		try {
			this.state = 5870;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 856, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5832;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5833;
				this.match(MySqlParser.KW_EXPIRE);
				this.state = 5840;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 5834;
					_localctx._expireType = this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				case MySqlParser.KW_NEVER:
					{
					this.state = 5835;
					_localctx._expireType = this.match(MySqlParser.KW_NEVER);
					}
					break;
				case MySqlParser.KW_INTERVAL:
					{
					this.state = 5836;
					_localctx._expireType = this.match(MySqlParser.KW_INTERVAL);
					this.state = 5837;
					this.decimalLiteral();
					this.state = 5838;
					this.match(MySqlParser.KW_DAY);
					}
					break;
				case MySqlParser.EOF:
				case MySqlParser.KW_ALTER:
				case MySqlParser.KW_ANALYZE:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_CALL:
				case MySqlParser.KW_CHANGE:
				case MySqlParser.KW_CHECK:
				case MySqlParser.KW_CREATE:
				case MySqlParser.KW_DELETE:
				case MySqlParser.KW_DESC:
				case MySqlParser.KW_DESCRIBE:
				case MySqlParser.KW_DROP:
				case MySqlParser.KW_EXPLAIN:
				case MySqlParser.KW_GET:
				case MySqlParser.KW_GRANT:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_KILL:
				case MySqlParser.KW_LOAD:
				case MySqlParser.KW_LOCK:
				case MySqlParser.KW_OPTIMIZE:
				case MySqlParser.KW_PURGE:
				case MySqlParser.KW_RELEASE:
				case MySqlParser.KW_RENAME:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RESIGNAL:
				case MySqlParser.KW_REVOKE:
				case MySqlParser.KW_SELECT:
				case MySqlParser.KW_SET:
				case MySqlParser.KW_SHOW:
				case MySqlParser.KW_SIGNAL:
				case MySqlParser.KW_TABLE:
				case MySqlParser.KW_UNLOCK:
				case MySqlParser.KW_UPDATE:
				case MySqlParser.KW_USE:
				case MySqlParser.KW_VALUES:
				case MySqlParser.KW_WITH:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESTART:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_CLONE:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.LR_BRACKET:
				case MySqlParser.COMMA:
				case MySqlParser.SEMI:
					break;
				default:
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5842;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5843;
				this.match(MySqlParser.KW_HISTORY);
				this.state = 5846;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 5844;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 5845;
					this.decimalLiteral();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5848;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5849;
				this.match(MySqlParser.KW_REUSE);
				this.state = 5850;
				this.match(MySqlParser.KW_INTERVAL);
				this.state = 5855;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 5851;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 5852;
					this.decimalLiteral();
					this.state = 5853;
					this.match(MySqlParser.KW_DAY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5857;
				this.match(MySqlParser.KW_PASSWORD);
				this.state = 5858;
				this.match(MySqlParser.KW_REQUIRE);
				this.state = 5859;
				this.match(MySqlParser.KW_CURRENT);
				this.state = 5861;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_OPTIONAL) {
					{
					this.state = 5860;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_OPTIONAL)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5863;
				this.match(MySqlParser.KW_FAILED_LOGIN_ATTEMPTS);
				this.state = 5864;
				this.decimalLiteral();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5865;
				this.match(MySqlParser.KW_PASSWORD_LOCK_TIME);
				this.state = 5868;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 5866;
					this.decimalLiteral();
					}
					break;
				case MySqlParser.KW_UNBOUNDED:
					{
					this.state = 5867;
					this.match(MySqlParser.KW_UNBOUNDED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userLockOption(): UserLockOptionContext {
		let _localctx: UserLockOptionContext = new UserLockOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 512, MySqlParser.RULE_userLockOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5872;
			this.match(MySqlParser.KW_ACCOUNT);
			this.state = 5873;
			_localctx._lockType = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_LOCK || _la === MySqlParser.KW_UNLOCK)) {
				_localctx._lockType = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public factorAuthOption(): FactorAuthOptionContext {
		let _localctx: FactorAuthOptionContext = new FactorAuthOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 514, MySqlParser.RULE_factorAuthOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5875;
			this.match(MySqlParser.KW_IDENTIFIED);
			this.state = 5878;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_WITH) {
				{
				this.state = 5876;
				this.match(MySqlParser.KW_WITH);
				this.state = 5877;
				_localctx._authPlugin = this.uid();
				}
			}

			this.state = 5888;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_BY:
				{
				{
				this.state = 5880;
				this.match(MySqlParser.KW_BY);
				this.state = 5884;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 5881;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				case MySqlParser.KW_RANDOM:
					{
					{
					this.state = 5882;
					this.match(MySqlParser.KW_RANDOM);
					this.state = 5883;
					this.match(MySqlParser.KW_PASSWORD);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				}
				break;
			case MySqlParser.KW_AS:
				{
				this.state = 5886;
				this.match(MySqlParser.KW_AS);
				this.state = 5887;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public registrationOption(): RegistrationOptionContext {
		let _localctx: RegistrationOptionContext = new RegistrationOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 516, MySqlParser.RULE_registrationOption);
		try {
			this.state = 5905;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 860, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5890;
				this.factor();
				this.state = 5891;
				this.match(MySqlParser.KW_INITIATE);
				this.state = 5892;
				this.match(MySqlParser.KW_REGISTRATION);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5894;
				this.factor();
				this.state = 5895;
				this.match(MySqlParser.KW_FINISH);
				this.state = 5896;
				this.match(MySqlParser.KW_REGISTRATION);
				this.state = 5897;
				this.match(MySqlParser.KW_SET);
				this.state = 5898;
				this.match(MySqlParser.KW_CHALLENGE_RESPONSE);
				this.state = 5899;
				this.match(MySqlParser.KW_AS);
				this.state = 5900;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5902;
				this.factor();
				this.state = 5903;
				this.match(MySqlParser.KW_UNREGISTER);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public factor(): FactorContext {
		let _localctx: FactorContext = new FactorContext(this._ctx, this.state);
		this.enterRule(_localctx, 518, MySqlParser.RULE_factor);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5907;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.TWO_DECIMAL || _la === MySqlParser.THREE_DECIMAL)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 5908;
			this.match(MySqlParser.KW_FACTOR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privelegeClause(): PrivelegeClauseContext {
		let _localctx: PrivelegeClauseContext = new PrivelegeClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 520, MySqlParser.RULE_privelegeClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5910;
			this.privilege();
			this.state = 5915;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.LR_BRACKET) {
				{
				this.state = 5911;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 5912;
				this.columnNames();
				this.state = 5913;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilege(): PrivilegeContext {
		let _localctx: PrivilegeContext = new PrivilegeContext(this._ctx, this.state);
		this.enterRule(_localctx, 522, MySqlParser.RULE_privilege);
		let _la: number;
		try {
			this.state = 6010;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 866, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5917;
				this.match(MySqlParser.KW_ALL);
				this.state = 5919;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PRIVILEGES) {
					{
					this.state = 5918;
					this.match(MySqlParser.KW_PRIVILEGES);
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5921;
				this.match(MySqlParser.KW_ALTER);
				this.state = 5923;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ROUTINE) {
					{
					this.state = 5922;
					this.match(MySqlParser.KW_ROUTINE);
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5925;
				this.match(MySqlParser.KW_CREATE);
				this.state = 5933;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_TEMPORARY:
					{
					this.state = 5926;
					this.match(MySqlParser.KW_TEMPORARY);
					this.state = 5927;
					this.match(MySqlParser.KW_TABLES);
					}
					break;
				case MySqlParser.KW_ROUTINE:
					{
					this.state = 5928;
					this.match(MySqlParser.KW_ROUTINE);
					}
					break;
				case MySqlParser.KW_VIEW:
					{
					this.state = 5929;
					this.match(MySqlParser.KW_VIEW);
					}
					break;
				case MySqlParser.KW_USER:
					{
					this.state = 5930;
					this.match(MySqlParser.KW_USER);
					}
					break;
				case MySqlParser.KW_TABLESPACE:
					{
					this.state = 5931;
					this.match(MySqlParser.KW_TABLESPACE);
					}
					break;
				case MySqlParser.KW_ROLE:
					{
					this.state = 5932;
					this.match(MySqlParser.KW_ROLE);
					}
					break;
				case MySqlParser.KW_ON:
				case MySqlParser.LR_BRACKET:
				case MySqlParser.COMMA:
					break;
				default:
					break;
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5935;
				this.match(MySqlParser.KW_DELETE);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5936;
				this.match(MySqlParser.KW_DROP);
				this.state = 5938;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ROLE) {
					{
					this.state = 5937;
					this.match(MySqlParser.KW_ROLE);
					}
				}

				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5940;
				this.match(MySqlParser.KW_EVENT);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5941;
				this.match(MySqlParser.KW_EXECUTE);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5942;
				this.match(MySqlParser.KW_FILE);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5943;
				this.match(MySqlParser.KW_GRANT);
				this.state = 5944;
				this.match(MySqlParser.KW_OPTION);
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5945;
				this.match(MySqlParser.KW_INDEX);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5946;
				this.match(MySqlParser.KW_INSERT);
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5947;
				this.match(MySqlParser.KW_LOCK);
				this.state = 5948;
				this.match(MySqlParser.KW_TABLES);
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5949;
				this.match(MySqlParser.KW_PROCESS);
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 5950;
				this.match(MySqlParser.KW_PROXY);
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 5951;
				this.match(MySqlParser.KW_REFERENCES);
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 5952;
				this.match(MySqlParser.KW_RELOAD);
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 5953;
				this.match(MySqlParser.KW_REPLICATION);
				this.state = 5954;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CLIENT || _la === MySqlParser.KW_SLAVE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 5955;
				this.match(MySqlParser.KW_SELECT);
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 5956;
				this.match(MySqlParser.KW_SHOW);
				this.state = 5957;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DATABASES || _la === MySqlParser.KW_VIEW)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 5958;
				this.match(MySqlParser.KW_SHUTDOWN);
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 5959;
				this.match(MySqlParser.KW_SUPER);
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 5960;
				this.match(MySqlParser.KW_TRIGGER);
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 5961;
				this.match(MySqlParser.KW_UPDATE);
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 5962;
				this.match(MySqlParser.KW_USAGE);
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 5963;
				this.match(MySqlParser.KW_APPLICATION_PASSWORD_ADMIN);
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 5964;
				this.match(MySqlParser.KW_AUDIT_ABORT_EXEMPT);
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 5965;
				this.match(MySqlParser.KW_AUDIT_ADMIN);
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 5966;
				this.match(MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN);
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 5967;
				this.match(MySqlParser.KW_BACKUP_ADMIN);
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 5968;
				this.match(MySqlParser.KW_BINLOG_ADMIN);
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 5969;
				this.match(MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN);
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 5970;
				this.match(MySqlParser.KW_CLONE_ADMIN);
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 5971;
				this.match(MySqlParser.KW_CONNECTION_ADMIN);
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 5972;
				this.match(MySqlParser.KW_ENCRYPTION_KEY_ADMIN);
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 5973;
				this.match(MySqlParser.KW_FIREWALL_ADMIN);
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 5974;
				this.match(MySqlParser.KW_FIREWALL_EXEMPT);
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 5975;
				this.match(MySqlParser.KW_FIREWALL_USER);
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 5976;
				this.match(MySqlParser.KW_FLUSH_OPTIMIZER_COSTS);
				}
				break;

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 5977;
				this.match(MySqlParser.KW_FLUSH_STATUS);
				}
				break;

			case 40:
				this.enterOuterAlt(_localctx, 40);
				{
				this.state = 5978;
				this.match(MySqlParser.KW_FLUSH_TABLES);
				}
				break;

			case 41:
				this.enterOuterAlt(_localctx, 41);
				{
				this.state = 5979;
				this.match(MySqlParser.KW_FLUSH_USER_RESOURCES);
				}
				break;

			case 42:
				this.enterOuterAlt(_localctx, 42);
				{
				this.state = 5980;
				this.match(MySqlParser.KW_GROUP_REPLICATION_ADMIN);
				}
				break;

			case 43:
				this.enterOuterAlt(_localctx, 43);
				{
				this.state = 5981;
				this.match(MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE);
				}
				break;

			case 44:
				this.enterOuterAlt(_localctx, 44);
				{
				this.state = 5982;
				this.match(MySqlParser.KW_INNODB_REDO_LOG_ENABLE);
				}
				break;

			case 45:
				this.enterOuterAlt(_localctx, 45);
				{
				this.state = 5983;
				this.match(MySqlParser.KW_NDB_STORED_USER);
				}
				break;

			case 46:
				this.enterOuterAlt(_localctx, 46);
				{
				this.state = 5984;
				this.match(MySqlParser.KW_PASSWORDLESS_USER_ADMIN);
				}
				break;

			case 47:
				this.enterOuterAlt(_localctx, 47);
				{
				this.state = 5985;
				this.match(MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN);
				}
				break;

			case 48:
				this.enterOuterAlt(_localctx, 48);
				{
				this.state = 5986;
				this.match(MySqlParser.KW_REPLICATION_APPLIER);
				}
				break;

			case 49:
				this.enterOuterAlt(_localctx, 49);
				{
				this.state = 5987;
				this.match(MySqlParser.KW_REPLICATION_SLAVE_ADMIN);
				}
				break;

			case 50:
				this.enterOuterAlt(_localctx, 50);
				{
				this.state = 5988;
				this.match(MySqlParser.KW_RESOURCE_GROUP_ADMIN);
				}
				break;

			case 51:
				this.enterOuterAlt(_localctx, 51);
				{
				this.state = 5989;
				this.match(MySqlParser.KW_RESOURCE_GROUP_USER);
				}
				break;

			case 52:
				this.enterOuterAlt(_localctx, 52);
				{
				this.state = 5990;
				this.match(MySqlParser.KW_ROLE_ADMIN);
				}
				break;

			case 53:
				this.enterOuterAlt(_localctx, 53);
				{
				this.state = 5991;
				this.match(MySqlParser.KW_SERVICE_CONNECTION_ADMIN);
				}
				break;

			case 54:
				this.enterOuterAlt(_localctx, 54);
				{
				this.state = 5992;
				this.match(MySqlParser.KW_SESSION_VARIABLES_ADMIN);
				}
				break;

			case 55:
				this.enterOuterAlt(_localctx, 55);
				{
				this.state = 5993;
				this.match(MySqlParser.KW_SET_USER_ID);
				}
				break;

			case 56:
				this.enterOuterAlt(_localctx, 56);
				{
				this.state = 5994;
				this.match(MySqlParser.KW_SKIP_QUERY_REWRITE);
				}
				break;

			case 57:
				this.enterOuterAlt(_localctx, 57);
				{
				this.state = 5995;
				this.match(MySqlParser.KW_SHOW_ROUTINE);
				}
				break;

			case 58:
				this.enterOuterAlt(_localctx, 58);
				{
				this.state = 5996;
				this.match(MySqlParser.KW_SYSTEM_USER);
				}
				break;

			case 59:
				this.enterOuterAlt(_localctx, 59);
				{
				this.state = 5997;
				this.match(MySqlParser.KW_SYSTEM_VARIABLES_ADMIN);
				}
				break;

			case 60:
				this.enterOuterAlt(_localctx, 60);
				{
				this.state = 5998;
				this.match(MySqlParser.KW_TABLE_ENCRYPTION_ADMIN);
				}
				break;

			case 61:
				this.enterOuterAlt(_localctx, 61);
				{
				this.state = 5999;
				this.match(MySqlParser.KW_TP_CONNECTION_ADMIN);
				}
				break;

			case 62:
				this.enterOuterAlt(_localctx, 62);
				{
				this.state = 6000;
				this.match(MySqlParser.KW_VERSION_TOKEN_ADMIN);
				}
				break;

			case 63:
				this.enterOuterAlt(_localctx, 63);
				{
				this.state = 6001;
				this.match(MySqlParser.KW_XA_RECOVER_ADMIN);
				}
				break;

			case 64:
				this.enterOuterAlt(_localctx, 64);
				{
				this.state = 6002;
				this.match(MySqlParser.KW_LOAD);
				this.state = 6003;
				this.match(MySqlParser.KW_FROM);
				this.state = 6004;
				this.match(MySqlParser.KW_S3);
				}
				break;

			case 65:
				this.enterOuterAlt(_localctx, 65);
				{
				this.state = 6005;
				this.match(MySqlParser.KW_SELECT);
				this.state = 6006;
				this.match(MySqlParser.KW_INTO);
				this.state = 6007;
				this.match(MySqlParser.KW_S3);
				}
				break;

			case 66:
				this.enterOuterAlt(_localctx, 66);
				{
				this.state = 6008;
				this.match(MySqlParser.KW_INVOKE);
				this.state = 6009;
				this.match(MySqlParser.KW_LAMBDA);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegeLevel(): PrivilegeLevelContext {
		let _localctx: PrivilegeLevelContext = new PrivilegeLevelContext(this._ctx, this.state);
		this.enterRule(_localctx, 524, MySqlParser.RULE_privilegeLevel);
		try {
			this.state = 6028;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 867, this._ctx) ) {
			case 1:
				_localctx = new CurrentSchemaPriviLevelContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6012;
				this.match(MySqlParser.STAR);
				}
				break;

			case 2:
				_localctx = new GlobalPrivLevelContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6013;
				this.match(MySqlParser.STAR);
				this.state = 6014;
				this.match(MySqlParser.DOT);
				this.state = 6015;
				this.match(MySqlParser.STAR);
				}
				break;

			case 3:
				_localctx = new DefiniteSchemaPrivLevelContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6016;
				this.uid();
				this.state = 6017;
				this.match(MySqlParser.DOT);
				this.state = 6018;
				this.match(MySqlParser.STAR);
				}
				break;

			case 4:
				_localctx = new DefiniteFullTablePrivLevelContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6020;
				this.uid();
				this.state = 6021;
				this.match(MySqlParser.DOT);
				this.state = 6022;
				this.uid();
				}
				break;

			case 5:
				_localctx = new DefiniteFullTablePrivLevel2Context(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6024;
				this.uid();
				this.state = 6025;
				this.dottedId();
				}
				break;

			case 6:
				_localctx = new DefiniteTablePrivLevelContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6027;
				this.uid();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public renameUserClause(): RenameUserClauseContext {
		let _localctx: RenameUserClauseContext = new RenameUserClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 526, MySqlParser.RULE_renameUserClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6030;
			_localctx._fromFirst = this.userName();
			this.state = 6031;
			this.match(MySqlParser.KW_TO);
			this.state = 6032;
			_localctx._toFirst = this.userName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public analyzeTable(): AnalyzeTableContext {
		let _localctx: AnalyzeTableContext = new AnalyzeTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 528, MySqlParser.RULE_analyzeTable);
		let _la: number;
		try {
			this.state = 6082;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 874, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6034;
				this.match(MySqlParser.KW_ANALYZE);
				this.state = 6036;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
					{
					this.state = 6035;
					this.tableActionOption();
					}
				}

				this.state = 6038;
				this.match(MySqlParser.KW_TABLE);
				this.state = 6039;
				this.tableNames();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6040;
				this.match(MySqlParser.KW_ANALYZE);
				this.state = 6042;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
					{
					this.state = 6041;
					this.tableActionOption();
					}
				}

				this.state = 6044;
				this.match(MySqlParser.KW_TABLE);
				this.state = 6045;
				this.tableName();
				this.state = 6046;
				this.match(MySqlParser.KW_UPDATE);
				this.state = 6047;
				this.match(MySqlParser.KW_HISTOGRAM);
				this.state = 6048;
				this.match(MySqlParser.KW_ON);
				this.state = 6049;
				this.columnNames();
				this.state = 6054;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 870, this._ctx) ) {
				case 1:
					{
					this.state = 6050;
					this.match(MySqlParser.KW_WITH);
					this.state = 6051;
					this.decimalLiteral();
					this.state = 6052;
					this.match(MySqlParser.KW_BUCKETS);
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6056;
				this.match(MySqlParser.KW_ANALYZE);
				this.state = 6058;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
					{
					this.state = 6057;
					this.tableActionOption();
					}
				}

				this.state = 6060;
				this.match(MySqlParser.KW_TABLE);
				this.state = 6061;
				this.tableName();
				this.state = 6062;
				this.match(MySqlParser.KW_UPDATE);
				this.state = 6063;
				this.match(MySqlParser.KW_HISTOGRAM);
				this.state = 6064;
				this.match(MySqlParser.KW_ON);
				this.state = 6065;
				this.columnName();
				this.state = 6069;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 6066;
					this.match(MySqlParser.KW_USING);
					this.state = 6067;
					this.match(MySqlParser.KW_DATA);
					this.state = 6068;
					this.match(MySqlParser.STRING_LITERAL);
					}
				}

				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6071;
				this.match(MySqlParser.KW_ANALYZE);
				this.state = 6073;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
					{
					this.state = 6072;
					this.tableActionOption();
					}
				}

				this.state = 6075;
				this.match(MySqlParser.KW_TABLE);
				this.state = 6076;
				this.tableName();
				this.state = 6077;
				this.match(MySqlParser.KW_DROP);
				this.state = 6078;
				this.match(MySqlParser.KW_HISTOGRAM);
				this.state = 6079;
				this.match(MySqlParser.KW_ON);
				this.state = 6080;
				this.columnNames();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public checkTable(): CheckTableContext {
		let _localctx: CheckTableContext = new CheckTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 530, MySqlParser.RULE_checkTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6084;
			this.match(MySqlParser.KW_CHECK);
			this.state = 6085;
			this.match(MySqlParser.KW_TABLE);
			this.state = 6086;
			this.tableNames();
			this.state = 6090;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.KW_FOR || _la === MySqlParser.KW_CHANGED || _la === MySqlParser.KW_EXTENDED || _la === MySqlParser.KW_FAST || _la === MySqlParser.KW_MEDIUM || _la === MySqlParser.KW_QUICK) {
				{
				{
				this.state = 6087;
				this.checkTableOption();
				}
				}
				this.state = 6092;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public checksumTable(): ChecksumTableContext {
		let _localctx: ChecksumTableContext = new ChecksumTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 532, MySqlParser.RULE_checksumTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6093;
			this.match(MySqlParser.KW_CHECKSUM);
			this.state = 6094;
			this.match(MySqlParser.KW_TABLE);
			this.state = 6095;
			this.tableNames();
			this.state = 6097;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_EXTENDED || _la === MySqlParser.KW_QUICK) {
				{
				this.state = 6096;
				_localctx._actionOption = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_EXTENDED || _la === MySqlParser.KW_QUICK)) {
					_localctx._actionOption = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optimizeTable(): OptimizeTableContext {
		let _localctx: OptimizeTableContext = new OptimizeTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 534, MySqlParser.RULE_optimizeTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6099;
			this.match(MySqlParser.KW_OPTIMIZE);
			this.state = 6101;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
				{
				this.state = 6100;
				this.tableActionOption();
				}
			}

			this.state = 6103;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_TABLE || _la === MySqlParser.KW_TABLES)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6104;
			this.tableNames();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public repairTable(): RepairTableContext {
		let _localctx: RepairTableContext = new RepairTableContext(this._ctx, this.state);
		this.enterRule(_localctx, 536, MySqlParser.RULE_repairTable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6106;
			this.match(MySqlParser.KW_REPAIR);
			this.state = 6108;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
				{
				this.state = 6107;
				this.tableActionOption();
				}
			}

			this.state = 6110;
			this.match(MySqlParser.KW_TABLE);
			this.state = 6111;
			this.tableNames();
			this.state = 6113;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_QUICK) {
				{
				this.state = 6112;
				this.match(MySqlParser.KW_QUICK);
				}
			}

			this.state = 6116;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_EXTENDED) {
				{
				this.state = 6115;
				this.match(MySqlParser.KW_EXTENDED);
				}
			}

			this.state = 6119;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_USE_FRM) {
				{
				this.state = 6118;
				this.match(MySqlParser.KW_USE_FRM);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableActionOption(): TableActionOptionContext {
		let _localctx: TableActionOptionContext = new TableActionOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 538, MySqlParser.RULE_tableActionOption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6121;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public checkTableOption(): CheckTableOptionContext {
		let _localctx: CheckTableOptionContext = new CheckTableOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 540, MySqlParser.RULE_checkTableOption);
		try {
			this.state = 6130;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_FOR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6123;
				this.match(MySqlParser.KW_FOR);
				this.state = 6124;
				this.match(MySqlParser.KW_UPGRADE);
				}
				break;
			case MySqlParser.KW_QUICK:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6125;
				this.match(MySqlParser.KW_QUICK);
				}
				break;
			case MySqlParser.KW_FAST:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6126;
				this.match(MySqlParser.KW_FAST);
				}
				break;
			case MySqlParser.KW_MEDIUM:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6127;
				this.match(MySqlParser.KW_MEDIUM);
				}
				break;
			case MySqlParser.KW_EXTENDED:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6128;
				this.match(MySqlParser.KW_EXTENDED);
				}
				break;
			case MySqlParser.KW_CHANGED:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6129;
				this.match(MySqlParser.KW_CHANGED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createFunction(): CreateFunctionContext {
		let _localctx: CreateFunctionContext = new CreateFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 542, MySqlParser.RULE_createFunction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6132;
			this.match(MySqlParser.KW_CREATE);
			this.state = 6134;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_AGGREGATE) {
				{
				this.state = 6133;
				this.match(MySqlParser.KW_AGGREGATE);
				}
			}

			this.state = 6136;
			this.match(MySqlParser.KW_FUNCTION);
			this.state = 6138;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 884, this._ctx) ) {
			case 1:
				{
				this.state = 6137;
				this.ifNotExists();
				}
				break;
			}
			this.state = 6140;
			this.functionNameCreate();
			this.state = 6141;
			this.match(MySqlParser.KW_RETURNS);
			this.state = 6142;
			_localctx._returnType = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & ((1 << (MySqlParser.KW_INTEGER - 208)) | (1 << (MySqlParser.KW_REAL - 208)) | (1 << (MySqlParser.KW_DECIMAL - 208)))) !== 0) || _la === MySqlParser.KW_STRING)) {
				_localctx._returnType = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6143;
			this.match(MySqlParser.KW_SONAME);
			this.state = 6144;
			this.match(MySqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public installComponent(): InstallComponentContext {
		let _localctx: InstallComponentContext = new InstallComponentContext(this._ctx, this.state);
		this.enterRule(_localctx, 544, MySqlParser.RULE_installComponent);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6146;
			this.match(MySqlParser.KW_INSTALL);
			this.state = 6147;
			this.match(MySqlParser.KW_COMPONENT);
			this.state = 6148;
			_localctx._component_name = this.uid();
			this.state = 6153;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6149;
				this.match(MySqlParser.COMMA);
				this.state = 6150;
				_localctx._component_name = this.uid();
				}
				}
				this.state = 6155;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 6165;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 887, this._ctx) ) {
			case 1:
				{
				this.state = 6156;
				this.match(MySqlParser.KW_SET);
				this.state = 6157;
				this.variableExpr();
				this.state = 6162;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6158;
					this.match(MySqlParser.COMMA);
					this.state = 6159;
					this.variableExpr();
					}
					}
					this.state = 6164;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public variableExpr(): VariableExprContext {
		let _localctx: VariableExprContext = new VariableExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 546, MySqlParser.RULE_variableExpr);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6167;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_GLOBAL || _la === MySqlParser.KW_PERSIST || _la === MySqlParser.GLOBAL_ID || _la === MySqlParser.PERSIST_ID)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6168;
			_localctx._system_var_name = this.fullId();
			this.state = 6169;
			this.match(MySqlParser.EQUAL_SYMBOL);
			this.state = 6170;
			this.expression(0);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uninstallComponent(): UninstallComponentContext {
		let _localctx: UninstallComponentContext = new UninstallComponentContext(this._ctx, this.state);
		this.enterRule(_localctx, 548, MySqlParser.RULE_uninstallComponent);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6172;
			this.match(MySqlParser.KW_UNINSTALL);
			this.state = 6173;
			this.match(MySqlParser.KW_COMPONENT);
			this.state = 6174;
			_localctx._component_name = this.uid();
			this.state = 6179;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6175;
				this.match(MySqlParser.COMMA);
				this.state = 6176;
				_localctx._component_name = this.uid();
				}
				}
				this.state = 6181;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public installPlugin(): InstallPluginContext {
		let _localctx: InstallPluginContext = new InstallPluginContext(this._ctx, this.state);
		this.enterRule(_localctx, 550, MySqlParser.RULE_installPlugin);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6182;
			this.match(MySqlParser.KW_INSTALL);
			this.state = 6183;
			this.match(MySqlParser.KW_PLUGIN);
			this.state = 6184;
			_localctx._pluginName = this.uid();
			this.state = 6185;
			this.match(MySqlParser.KW_SONAME);
			this.state = 6186;
			this.match(MySqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uninstallPlugin(): UninstallPluginContext {
		let _localctx: UninstallPluginContext = new UninstallPluginContext(this._ctx, this.state);
		this.enterRule(_localctx, 552, MySqlParser.RULE_uninstallPlugin);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6188;
			this.match(MySqlParser.KW_UNINSTALL);
			this.state = 6189;
			this.match(MySqlParser.KW_PLUGIN);
			this.state = 6190;
			_localctx._pluginName = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cloneStatement(): CloneStatementContext {
		let _localctx: CloneStatementContext = new CloneStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 554, MySqlParser.RULE_cloneStatement);
		let _la: number;
		try {
			this.state = 6222;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 894, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6192;
				this.match(MySqlParser.KW_CLONE);
				this.state = 6193;
				this.match(MySqlParser.KW_LOCAL);
				this.state = 6194;
				this.match(MySqlParser.KW_DATA);
				this.state = 6195;
				this.match(MySqlParser.KW_DIRECTORY);
				this.state = 6197;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.EQUAL_SYMBOL) {
					{
					this.state = 6196;
					this.match(MySqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 6199;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6200;
				this.match(MySqlParser.KW_CLONE);
				this.state = 6201;
				this.match(MySqlParser.KW_INSTANCE);
				this.state = 6202;
				this.match(MySqlParser.KW_FROM);
				this.state = 6203;
				this.userHostPort();
				this.state = 6204;
				this.match(MySqlParser.KW_IDENTIFIED);
				this.state = 6205;
				this.match(MySqlParser.KW_BY);
				this.state = 6206;
				this.match(MySqlParser.STRING_LITERAL);
				this.state = 6213;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DATA) {
					{
					this.state = 6207;
					this.match(MySqlParser.KW_DATA);
					this.state = 6208;
					this.match(MySqlParser.KW_DIRECTORY);
					this.state = 6210;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.EQUAL_SYMBOL) {
						{
						this.state = 6209;
						this.match(MySqlParser.EQUAL_SYMBOL);
						}
					}

					this.state = 6212;
					this.match(MySqlParser.STRING_LITERAL);
					}
				}

				this.state = 6220;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_REQUIRE) {
					{
					this.state = 6215;
					this.match(MySqlParser.KW_REQUIRE);
					this.state = 6217;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_NO) {
						{
						this.state = 6216;
						this.match(MySqlParser.KW_NO);
						}
					}

					this.state = 6219;
					this.match(MySqlParser.KW_SSL);
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setStatement(): SetStatementContext {
		let _localctx: SetStatementContext = new SetStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 556, MySqlParser.RULE_setStatement);
		let _la: number;
		try {
			this.state = 6276;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 902, this._ctx) ) {
			case 1:
				_localctx = new SetVariableContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6224;
				this.match(MySqlParser.KW_SET);
				this.state = 6225;
				this.variableClause();
				this.state = 6226;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.VAR_ASSIGN || _la === MySqlParser.EQUAL_SYMBOL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6229;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 895, this._ctx) ) {
				case 1:
					{
					this.state = 6227;
					this.expression(0);
					}
					break;

				case 2:
					{
					this.state = 6228;
					this.match(MySqlParser.KW_ON);
					}
					break;
				}
				this.state = 6240;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6231;
					this.match(MySqlParser.COMMA);
					this.state = 6232;
					this.variableClause();
					this.state = 6233;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.VAR_ASSIGN || _la === MySqlParser.EQUAL_SYMBOL)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 6236;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 896, this._ctx) ) {
					case 1:
						{
						this.state = 6234;
						this.expression(0);
						}
						break;

					case 2:
						{
						this.state = 6235;
						this.match(MySqlParser.KW_ON);
						}
						break;
					}
					}
					}
					this.state = 6242;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 2:
				_localctx = new SetCharsetContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6243;
				this.match(MySqlParser.KW_SET);
				this.state = 6244;
				this.charSet();
				this.state = 6247;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 6245;
					this.charsetName();
					}
					break;
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 6246;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 3:
				_localctx = new SetNamesContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6249;
				this.match(MySqlParser.KW_SET);
				this.state = 6250;
				this.match(MySqlParser.KW_NAMES);
				this.state = 6257;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
					{
					this.state = 6251;
					this.charsetName();
					this.state = 6254;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_COLLATE) {
						{
						this.state = 6252;
						this.match(MySqlParser.KW_COLLATE);
						this.state = 6253;
						this.collationName();
						}
					}

					}
					break;
				case MySqlParser.KW_DEFAULT:
					{
					this.state = 6256;
					this.match(MySqlParser.KW_DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 4:
				_localctx = new SetPasswordContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6259;
				this.setPasswordStatement();
				}
				break;

			case 5:
				_localctx = new SetTransactionContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6260;
				this.setTransactionStatement();
				}
				break;

			case 6:
				_localctx = new SetAutocommitContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6261;
				this.setAutocommitStatement();
				}
				break;

			case 7:
				_localctx = new SetNewValueInsideTriggerContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6262;
				this.match(MySqlParser.KW_SET);
				this.state = 6263;
				(_localctx as SetNewValueInsideTriggerContext)._system_var_name = this.fullId();
				this.state = 6264;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.VAR_ASSIGN || _la === MySqlParser.EQUAL_SYMBOL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6265;
				this.expression(0);
				this.state = 6273;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6266;
					this.match(MySqlParser.COMMA);
					this.state = 6267;
					(_localctx as SetNewValueInsideTriggerContext)._system_var_name = this.fullId();
					this.state = 6268;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.VAR_ASSIGN || _la === MySqlParser.EQUAL_SYMBOL)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 6269;
					this.expression(0);
					}
					}
					this.state = 6275;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showStatement(): ShowStatementContext {
		let _localctx: ShowStatementContext = new ShowStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 558, MySqlParser.RULE_showStatement);
		let _la: number;
		try {
			this.state = 6462;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 931, this._ctx) ) {
			case 1:
				_localctx = new ShowMasterLogsContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6278;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6279;
				(_localctx as ShowMasterLogsContext)._logFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_BINARY || _la === MySqlParser.KW_MASTER)) {
					(_localctx as ShowMasterLogsContext)._logFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6280;
				this.match(MySqlParser.KW_LOGS);
				}
				break;

			case 2:
				_localctx = new ShowLogEventsContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6281;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6282;
				(_localctx as ShowLogEventsContext)._logFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_BINLOG || _la === MySqlParser.KW_RELAYLOG)) {
					(_localctx as ShowLogEventsContext)._logFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6283;
				this.match(MySqlParser.KW_EVENTS);
				this.state = 6286;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_IN) {
					{
					this.state = 6284;
					this.match(MySqlParser.KW_IN);
					this.state = 6285;
					(_localctx as ShowLogEventsContext)._filename = this.match(MySqlParser.STRING_LITERAL);
					}
				}

				this.state = 6290;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FROM) {
					{
					this.state = 6288;
					this.match(MySqlParser.KW_FROM);
					this.state = 6289;
					(_localctx as ShowLogEventsContext)._fromPosition = this.decimalLiteral();
					}
				}

				this.state = 6299;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIMIT) {
					{
					this.state = 6292;
					this.match(MySqlParser.KW_LIMIT);
					this.state = 6296;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 905, this._ctx) ) {
					case 1:
						{
						this.state = 6293;
						(_localctx as ShowLogEventsContext)._offset = this.decimalLiteral();
						this.state = 6294;
						this.match(MySqlParser.COMMA);
						}
						break;
					}
					this.state = 6298;
					(_localctx as ShowLogEventsContext)._rowCount = this.decimalLiteral();
					}
				}

				this.state = 6302;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 6301;
					this.channelOption();
					}
				}

				}
				break;

			case 3:
				_localctx = new ShowObjectFilterContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6304;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6305;
				this.showCommonEntity();
				this.state = 6307;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIKE || _la === MySqlParser.KW_WHERE) {
					{
					this.state = 6306;
					this.showFilter();
					}
				}

				}
				break;

			case 4:
				_localctx = new ShowColumnsContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6309;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6311;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_EXTENDED) {
					{
					this.state = 6310;
					this.match(MySqlParser.KW_EXTENDED);
					}
				}

				this.state = 6314;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FULL) {
					{
					this.state = 6313;
					this.match(MySqlParser.KW_FULL);
					}
				}

				this.state = 6316;
				(_localctx as ShowColumnsContext)._columnsFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_COLUMNS || _la === MySqlParser.KW_FIELDS)) {
					(_localctx as ShowColumnsContext)._columnsFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6317;
				(_localctx as ShowColumnsContext)._tableFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN)) {
					(_localctx as ShowColumnsContext)._tableFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6318;
				this.tableName();
				this.state = 6321;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN) {
					{
					this.state = 6319;
					(_localctx as ShowColumnsContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN)) {
						(_localctx as ShowColumnsContext)._schemaFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 6320;
					this.databaseName();
					}
				}

				this.state = 6324;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIKE || _la === MySqlParser.KW_WHERE) {
					{
					this.state = 6323;
					this.showFilter();
					}
				}

				}
				break;

			case 5:
				_localctx = new ShowCreateDbContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6326;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6327;
				this.match(MySqlParser.KW_CREATE);
				this.state = 6328;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DATABASE || _la === MySqlParser.KW_SCHEMA)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6330;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 913, this._ctx) ) {
				case 1:
					{
					this.state = 6329;
					this.ifNotExists();
					}
					break;
				}
				this.state = 6332;
				this.databaseNameCreate();
				}
				break;

			case 6:
				_localctx = new ShowCreateFullIdObjectContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6333;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6334;
				this.match(MySqlParser.KW_CREATE);
				this.state = 6335;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_PROCEDURE || _la === MySqlParser.KW_TRIGGER || _la === MySqlParser.KW_EVENT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6336;
				this.fullId();
				}
				break;

			case 7:
				_localctx = new ShowCreateFunctionContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6337;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6338;
				this.match(MySqlParser.KW_CREATE);
				this.state = 6339;
				this.match(MySqlParser.KW_FUNCTION);
				this.state = 6340;
				this.functionNameCreate();
				}
				break;

			case 8:
				_localctx = new ShowCreateViewContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 6341;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6342;
				this.match(MySqlParser.KW_CREATE);
				this.state = 6343;
				this.match(MySqlParser.KW_VIEW);
				this.state = 6344;
				this.viewNameCreate();
				}
				break;

			case 9:
				_localctx = new ShowCreateTableContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 6345;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6346;
				this.match(MySqlParser.KW_CREATE);
				this.state = 6347;
				this.match(MySqlParser.KW_TABLE);
				this.state = 6348;
				this.tableNameCreate();
				}
				break;

			case 10:
				_localctx = new ShowCreateUserContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 6349;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6350;
				this.match(MySqlParser.KW_CREATE);
				this.state = 6351;
				this.match(MySqlParser.KW_USER);
				this.state = 6352;
				this.userName();
				}
				break;

			case 11:
				_localctx = new ShowEngineContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 6353;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6354;
				this.match(MySqlParser.KW_ENGINE);
				this.state = 6355;
				this.engineName();
				this.state = 6356;
				(_localctx as ShowEngineContext)._engineOption = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_MUTEX || _la === MySqlParser.KW_STATUS)) {
					(_localctx as ShowEngineContext)._engineOption = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 12:
				_localctx = new ShowGlobalInfoContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 6358;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6359;
				this.showGlobalInfoClause();
				}
				break;

			case 13:
				_localctx = new ShowErrorsContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 6360;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6361;
				(_localctx as ShowErrorsContext)._errorFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ERRORS || _la === MySqlParser.KW_WARNINGS)) {
					(_localctx as ShowErrorsContext)._errorFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6369;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIMIT) {
					{
					this.state = 6362;
					this.match(MySqlParser.KW_LIMIT);
					this.state = 6366;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 914, this._ctx) ) {
					case 1:
						{
						this.state = 6363;
						(_localctx as ShowErrorsContext)._offset = this.decimalLiteral();
						this.state = 6364;
						this.match(MySqlParser.COMMA);
						}
						break;
					}
					this.state = 6368;
					(_localctx as ShowErrorsContext)._rowCount = this.decimalLiteral();
					}
				}

				}
				break;

			case 14:
				_localctx = new ShowCountErrorsContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 6371;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6372;
				this.match(MySqlParser.KW_COUNT);
				this.state = 6373;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 6374;
				this.match(MySqlParser.STAR);
				this.state = 6375;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 6376;
				(_localctx as ShowCountErrorsContext)._errorFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ERRORS || _la === MySqlParser.KW_WARNINGS)) {
					(_localctx as ShowCountErrorsContext)._errorFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 15:
				_localctx = new ShowSchemaFilterContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 6377;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6378;
				this.showSchemaEntity();
				this.state = 6381;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN) {
					{
					this.state = 6379;
					(_localctx as ShowSchemaFilterContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN)) {
						(_localctx as ShowSchemaFilterContext)._schemaFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 6380;
					this.databaseName();
					}
				}

				this.state = 6384;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIKE || _la === MySqlParser.KW_WHERE) {
					{
					this.state = 6383;
					this.showFilter();
					}
				}

				}
				break;

			case 16:
				_localctx = new ShowPercedureCodeContext(_localctx);
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 6386;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6387;
				this.match(MySqlParser.KW_PROCEDURE);
				this.state = 6388;
				this.match(MySqlParser.KW_CODE);
				this.state = 6389;
				(_localctx as ShowPercedureCodeContext)._proc_name = this.fullId();
				}
				break;

			case 17:
				_localctx = new ShowFunctionCodeContext(_localctx);
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 6390;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6391;
				this.match(MySqlParser.KW_FUNCTION);
				this.state = 6392;
				this.match(MySqlParser.KW_CODE);
				this.state = 6393;
				this.functionName();
				}
				break;

			case 18:
				_localctx = new ShowGrantsContext(_localctx);
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 6394;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6395;
				this.match(MySqlParser.KW_GRANTS);
				this.state = 6402;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 6396;
					this.match(MySqlParser.KW_FOR);
					this.state = 6397;
					this.userOrRoleName();
					this.state = 6400;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_USING) {
						{
						this.state = 6398;
						this.match(MySqlParser.KW_USING);
						this.state = 6399;
						this.userOrRoleNames();
						}
					}

					}
				}

				}
				break;

			case 19:
				_localctx = new ShowIndexesContext(_localctx);
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 6404;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6406;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_EXTENDED) {
					{
					this.state = 6405;
					this.match(MySqlParser.KW_EXTENDED);
					}
				}

				this.state = 6408;
				(_localctx as ShowIndexesContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEYS || _la === MySqlParser.KW_INDEXES)) {
					(_localctx as ShowIndexesContext)._indexFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6409;
				(_localctx as ShowIndexesContext)._tableFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN)) {
					(_localctx as ShowIndexesContext)._tableFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6410;
				this.tableName();
				this.state = 6413;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN) {
					{
					this.state = 6411;
					(_localctx as ShowIndexesContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN)) {
						(_localctx as ShowIndexesContext)._schemaFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 6412;
					this.databaseName();
					}
				}

				this.state = 6417;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_WHERE) {
					{
					this.state = 6415;
					this.match(MySqlParser.KW_WHERE);
					this.state = 6416;
					this.expression(0);
					}
				}

				}
				break;

			case 20:
				_localctx = new ShowOpenTablesContext(_localctx);
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 6419;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6420;
				this.match(MySqlParser.KW_OPEN);
				this.state = 6421;
				this.match(MySqlParser.KW_TABLES);
				this.state = 6424;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN) {
					{
					this.state = 6422;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_FROM || _la === MySqlParser.KW_IN)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 6423;
					this.databaseName();
					}
				}

				this.state = 6427;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIKE || _la === MySqlParser.KW_WHERE) {
					{
					this.state = 6426;
					this.showFilter();
					}
				}

				}
				break;

			case 21:
				_localctx = new ShowProfileContext(_localctx);
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 6429;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6430;
				this.match(MySqlParser.KW_PROFILE);
				this.state = 6439;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_BLOCK || _la === MySqlParser.KW_CONTEXT || _la === MySqlParser.KW_CPU || _la === MySqlParser.KW_IPC || _la === MySqlParser.KW_PAGE || _la === MySqlParser.KW_SOURCE || _la === MySqlParser.KW_SWAPS || _la === MySqlParser.KW_MEMORY) {
					{
					this.state = 6431;
					this.showProfileType();
					this.state = 6436;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 6432;
						this.match(MySqlParser.COMMA);
						this.state = 6433;
						this.showProfileType();
						}
						}
						this.state = 6438;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 6444;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 6441;
					this.match(MySqlParser.KW_FOR);
					this.state = 6442;
					this.match(MySqlParser.KW_QUERY);
					this.state = 6443;
					(_localctx as ShowProfileContext)._queryCount = this.decimalLiteral();
					}
				}

				this.state = 6452;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LIMIT) {
					{
					this.state = 6446;
					this.match(MySqlParser.KW_LIMIT);
					this.state = 6447;
					(_localctx as ShowProfileContext)._rowCount = this.decimalLiteral();
					this.state = 6450;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_OFFSET) {
						{
						this.state = 6448;
						this.match(MySqlParser.KW_OFFSET);
						this.state = 6449;
						(_localctx as ShowProfileContext)._offset = this.decimalLiteral();
						}
					}

					}
				}

				}
				break;

			case 22:
				_localctx = new ShowSlaveStatusContext(_localctx);
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 6454;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6455;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_REPLICA || _la === MySqlParser.KW_SLAVE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6456;
				this.match(MySqlParser.KW_STATUS);
				this.state = 6458;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 6457;
					this.channelOption();
					}
				}

				}
				break;

			case 23:
				_localctx = new ShowReplicasContext(_localctx);
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 6460;
				this.match(MySqlParser.KW_SHOW);
				this.state = 6461;
				this.match(MySqlParser.KW_REPLICAS);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public variableClause(): VariableClauseContext {
		let _localctx: VariableClauseContext = new VariableClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 560, MySqlParser.RULE_variableClause);
		let _la: number;
		try {
			this.state = 6474;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.LOCAL_ID:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6464;
				this.match(MySqlParser.LOCAL_ID);
				}
				break;
			case MySqlParser.GLOBAL_ID:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6465;
				this.match(MySqlParser.GLOBAL_ID);
				}
				break;
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PERSIST:
			case MySqlParser.KW_PERSIST_ONLY:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.AT_SIGN:
			case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
			case MySqlParser.STRING_LITERAL:
			case MySqlParser.ID:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6471;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 933, this._ctx) ) {
				case 1:
					{
					this.state = 6468;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.AT_SIGN) {
						{
						this.state = 6466;
						this.match(MySqlParser.AT_SIGN);
						this.state = 6467;
						this.match(MySqlParser.AT_SIGN);
						}
					}

					this.state = 6470;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_GLOBAL || _la === MySqlParser.KW_LOCAL || _la === MySqlParser.KW_PERSIST || _la === MySqlParser.KW_PERSIST_ONLY || _la === MySqlParser.KW_SESSION)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					break;
				}
				this.state = 6473;
				_localctx._target = this.uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showCommonEntity(): ShowCommonEntityContext {
		let _localctx: ShowCommonEntityContext = new ShowCommonEntityContext(this._ctx, this.state);
		this.enterRule(_localctx, 562, MySqlParser.RULE_showCommonEntity);
		let _la: number;
		try {
			this.state = 6490;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_CHARACTER:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6476;
				this.match(MySqlParser.KW_CHARACTER);
				this.state = 6477;
				this.match(MySqlParser.KW_SET);
				}
				break;
			case MySqlParser.KW_CHARSET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6478;
				this.match(MySqlParser.KW_CHARSET);
				}
				break;
			case MySqlParser.KW_COLLATION:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6479;
				this.match(MySqlParser.KW_COLLATION);
				}
				break;
			case MySqlParser.KW_DATABASES:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6480;
				this.match(MySqlParser.KW_DATABASES);
				}
				break;
			case MySqlParser.KW_SCHEMAS:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6481;
				this.match(MySqlParser.KW_SCHEMAS);
				}
				break;
			case MySqlParser.KW_FUNCTION:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6482;
				this.match(MySqlParser.KW_FUNCTION);
				this.state = 6483;
				this.match(MySqlParser.KW_STATUS);
				}
				break;
			case MySqlParser.KW_PROCEDURE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6484;
				this.match(MySqlParser.KW_PROCEDURE);
				this.state = 6485;
				this.match(MySqlParser.KW_STATUS);
				}
				break;
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_VARIABLES:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 6487;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_GLOBAL || _la === MySqlParser.KW_SESSION) {
					{
					this.state = 6486;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_GLOBAL || _la === MySqlParser.KW_SESSION)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 6489;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_STATUS || _la === MySqlParser.KW_VARIABLES)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showFilter(): ShowFilterContext {
		let _localctx: ShowFilterContext = new ShowFilterContext(this._ctx, this.state);
		this.enterRule(_localctx, 564, MySqlParser.RULE_showFilter);
		try {
			this.state = 6496;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_LIKE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6492;
				this.match(MySqlParser.KW_LIKE);
				this.state = 6493;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.KW_WHERE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6494;
				this.match(MySqlParser.KW_WHERE);
				this.state = 6495;
				this.expression(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showGlobalInfoClause(): ShowGlobalInfoClauseContext {
		let _localctx: ShowGlobalInfoClauseContext = new ShowGlobalInfoClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 566, MySqlParser.RULE_showGlobalInfoClause);
		let _la: number;
		try {
			this.state = 6515;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_STORAGE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6499;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_STORAGE) {
					{
					this.state = 6498;
					this.match(MySqlParser.KW_STORAGE);
					}
				}

				this.state = 6501;
				this.match(MySqlParser.KW_ENGINES);
				}
				break;
			case MySqlParser.KW_MASTER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6502;
				this.match(MySqlParser.KW_MASTER);
				this.state = 6503;
				this.match(MySqlParser.KW_STATUS);
				}
				break;
			case MySqlParser.KW_PLUGINS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6504;
				this.match(MySqlParser.KW_PLUGINS);
				}
				break;
			case MySqlParser.KW_PRIVILEGES:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6505;
				this.match(MySqlParser.KW_PRIVILEGES);
				}
				break;
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_PROCESSLIST:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6507;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FULL) {
					{
					this.state = 6506;
					this.match(MySqlParser.KW_FULL);
					}
				}

				this.state = 6509;
				this.match(MySqlParser.KW_PROCESSLIST);
				}
				break;
			case MySqlParser.KW_PROFILES:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6510;
				this.match(MySqlParser.KW_PROFILES);
				}
				break;
			case MySqlParser.KW_SLAVE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6511;
				this.match(MySqlParser.KW_SLAVE);
				this.state = 6512;
				this.match(MySqlParser.KW_HOSTS);
				}
				break;
			case MySqlParser.KW_AUTHORS:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 6513;
				this.match(MySqlParser.KW_AUTHORS);
				}
				break;
			case MySqlParser.KW_CONTRIBUTORS:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 6514;
				this.match(MySqlParser.KW_CONTRIBUTORS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showSchemaEntity(): ShowSchemaEntityContext {
		let _localctx: ShowSchemaEntityContext = new ShowSchemaEntityContext(this._ctx, this.state);
		this.enterRule(_localctx, 568, MySqlParser.RULE_showSchemaEntity);
		let _la: number;
		try {
			this.state = 6528;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_EVENTS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6517;
				this.match(MySqlParser.KW_EVENTS);
				}
				break;
			case MySqlParser.KW_TABLE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6518;
				this.match(MySqlParser.KW_TABLE);
				this.state = 6519;
				this.match(MySqlParser.KW_STATUS);
				}
				break;
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_TABLES:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6521;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_EXTENDED) {
					{
					this.state = 6520;
					this.match(MySqlParser.KW_EXTENDED);
					}
				}

				this.state = 6524;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FULL) {
					{
					this.state = 6523;
					this.match(MySqlParser.KW_FULL);
					}
				}

				this.state = 6526;
				this.match(MySqlParser.KW_TABLES);
				}
				break;
			case MySqlParser.KW_TRIGGERS:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6527;
				this.match(MySqlParser.KW_TRIGGERS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showProfileType(): ShowProfileTypeContext {
		let _localctx: ShowProfileTypeContext = new ShowProfileTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 570, MySqlParser.RULE_showProfileType);
		try {
			this.state = 6542;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ALL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6530;
				this.match(MySqlParser.KW_ALL);
				}
				break;
			case MySqlParser.KW_BLOCK:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6531;
				this.match(MySqlParser.KW_BLOCK);
				this.state = 6532;
				this.match(MySqlParser.KW_IO);
				}
				break;
			case MySqlParser.KW_CONTEXT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6533;
				this.match(MySqlParser.KW_CONTEXT);
				this.state = 6534;
				this.match(MySqlParser.KW_SWITCHES);
				}
				break;
			case MySqlParser.KW_CPU:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6535;
				this.match(MySqlParser.KW_CPU);
				}
				break;
			case MySqlParser.KW_IPC:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6536;
				this.match(MySqlParser.KW_IPC);
				}
				break;
			case MySqlParser.KW_MEMORY:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6537;
				this.match(MySqlParser.KW_MEMORY);
				}
				break;
			case MySqlParser.KW_PAGE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6538;
				this.match(MySqlParser.KW_PAGE);
				this.state = 6539;
				this.match(MySqlParser.KW_FAULTS);
				}
				break;
			case MySqlParser.KW_SOURCE:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 6540;
				this.match(MySqlParser.KW_SOURCE);
				}
				break;
			case MySqlParser.KW_SWAPS:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 6541;
				this.match(MySqlParser.KW_SWAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public binlogStatement(): BinlogStatementContext {
		let _localctx: BinlogStatementContext = new BinlogStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 572, MySqlParser.RULE_binlogStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6544;
			this.match(MySqlParser.KW_BINLOG);
			this.state = 6545;
			this.match(MySqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cacheIndexStatement(): CacheIndexStatementContext {
		let _localctx: CacheIndexStatementContext = new CacheIndexStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 574, MySqlParser.RULE_cacheIndexStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6547;
			this.match(MySqlParser.KW_CACHE);
			this.state = 6548;
			this.match(MySqlParser.KW_INDEX);
			this.state = 6566;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 947, this._ctx) ) {
			case 1:
				{
				this.state = 6549;
				this.tableIndex();
				this.state = 6554;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6550;
					this.match(MySqlParser.COMMA);
					this.state = 6551;
					this.tableIndex();
					}
					}
					this.state = 6556;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 2:
				{
				this.state = 6557;
				this.tableName();
				this.state = 6558;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 6559;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 6562;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 6560;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 6561;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6564;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 6568;
			this.match(MySqlParser.KW_IN);
			this.state = 6569;
			this.databaseName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public flushStatement(): FlushStatementContext {
		let _localctx: FlushStatementContext = new FlushStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 576, MySqlParser.RULE_flushStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6571;
			this.match(MySqlParser.KW_FLUSH);
			this.state = 6573;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_NO_WRITE_TO_BINLOG || _la === MySqlParser.KW_LOCAL) {
				{
				this.state = 6572;
				this.tableActionOption();
				}
			}

			this.state = 6575;
			this.flushOption();
			this.state = 6580;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6576;
				this.match(MySqlParser.COMMA);
				this.state = 6577;
				this.flushOption();
				}
				}
				this.state = 6582;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public killStatement(): KillStatementContext {
		let _localctx: KillStatementContext = new KillStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 578, MySqlParser.RULE_killStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6583;
			this.match(MySqlParser.KW_KILL);
			this.state = 6585;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 950, this._ctx) ) {
			case 1:
				{
				this.state = 6584;
				_localctx._connectionFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CONNECTION || _la === MySqlParser.KW_QUERY)) {
					_localctx._connectionFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
			this.state = 6587;
			this.expression(0);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loadIndexIntoCache(): LoadIndexIntoCacheContext {
		let _localctx: LoadIndexIntoCacheContext = new LoadIndexIntoCacheContext(this._ctx, this.state);
		this.enterRule(_localctx, 580, MySqlParser.RULE_loadIndexIntoCache);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6589;
			this.match(MySqlParser.KW_LOAD);
			this.state = 6590;
			this.match(MySqlParser.KW_INDEX);
			this.state = 6591;
			this.match(MySqlParser.KW_INTO);
			this.state = 6592;
			this.match(MySqlParser.KW_CACHE);
			this.state = 6593;
			this.loadedTableIndexes();
			this.state = 6598;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6594;
				this.match(MySqlParser.COMMA);
				this.state = 6595;
				this.loadedTableIndexes();
				}
				}
				this.state = 6600;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resetStatement(): ResetStatementContext {
		let _localctx: ResetStatementContext = new ResetStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 582, MySqlParser.RULE_resetStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6601;
			this.match(MySqlParser.KW_RESET);
			this.state = 6602;
			this.resetOption();
			this.state = 6607;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6603;
				this.match(MySqlParser.COMMA);
				this.state = 6604;
				this.resetOption();
				}
				}
				this.state = 6609;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resetOption(): ResetOptionContext {
		let _localctx: ResetOptionContext = new ResetOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 584, MySqlParser.RULE_resetOption);
		try {
			this.state = 6615;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_MASTER:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6610;
				this.match(MySqlParser.KW_MASTER);
				}
				break;
			case MySqlParser.KW_REPLICA:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6611;
				this.match(MySqlParser.KW_REPLICA);
				}
				break;
			case MySqlParser.KW_QUERY:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6612;
				this.match(MySqlParser.KW_QUERY);
				this.state = 6613;
				this.match(MySqlParser.KW_CACHE);
				}
				break;
			case MySqlParser.KW_SLAVE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6614;
				this.match(MySqlParser.KW_SLAVE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resetPersist(): ResetPersistContext {
		let _localctx: ResetPersistContext = new ResetPersistContext(this._ctx, this.state);
		this.enterRule(_localctx, 586, MySqlParser.RULE_resetPersist);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6617;
			this.match(MySqlParser.KW_RESET);
			this.state = 6618;
			this.match(MySqlParser.KW_PERSIST);
			this.state = 6623;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 955, this._ctx) ) {
			case 1:
				{
				this.state = 6620;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 954, this._ctx) ) {
				case 1:
					{
					this.state = 6619;
					this.ifExists();
					}
					break;
				}
				this.state = 6622;
				_localctx._system_var_name = this.uid();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resetAllChannel(): ResetAllChannelContext {
		let _localctx: ResetAllChannelContext = new ResetAllChannelContext(this._ctx, this.state);
		this.enterRule(_localctx, 588, MySqlParser.RULE_resetAllChannel);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6625;
			this.match(MySqlParser.KW_RESET);
			this.state = 6626;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_REPLICA || _la === MySqlParser.KW_SLAVE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6628;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ALL) {
				{
				this.state = 6627;
				this.match(MySqlParser.KW_ALL);
				}
			}

			this.state = 6631;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FOR) {
				{
				this.state = 6630;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public reStartStatement(): ReStartStatementContext {
		let _localctx: ReStartStatementContext = new ReStartStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 590, MySqlParser.RULE_reStartStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6633;
			this.match(MySqlParser.KW_RESTART);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public shutdownStatement(): ShutdownStatementContext {
		let _localctx: ShutdownStatementContext = new ShutdownStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 592, MySqlParser.RULE_shutdownStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6635;
			this.match(MySqlParser.KW_SHUTDOWN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableIndex(): TableIndexContext {
		let _localctx: TableIndexContext = new TableIndexContext(this._ctx, this.state);
		this.enterRule(_localctx, 594, MySqlParser.RULE_tableIndex);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6637;
			this.tableName();
			this.state = 6643;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY) {
				{
				this.state = 6638;
				_localctx._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
					_localctx._indexFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6639;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 6640;
				this.indexNames();
				this.state = 6641;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public flushOption(): FlushOptionContext {
		let _localctx: FlushOptionContext = new FlushOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 596, MySqlParser.RULE_flushOption);
		let _la: number;
		try {
			this.state = 6677;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 965, this._ctx) ) {
			case 1:
				_localctx = new SimpleFlushOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6663;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_DES_KEY_FILE:
					{
					this.state = 6645;
					this.match(MySqlParser.KW_DES_KEY_FILE);
					}
					break;
				case MySqlParser.KW_HOSTS:
					{
					this.state = 6646;
					this.match(MySqlParser.KW_HOSTS);
					}
					break;
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_SLOW:
					{
					this.state = 6648;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.KW_BINARY || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (MySqlParser.KW_ENGINE - 380)) | (1 << (MySqlParser.KW_ERROR - 380)) | (1 << (MySqlParser.KW_GENERAL - 380)))) !== 0) || _la === MySqlParser.KW_RELAY || _la === MySqlParser.KW_SLOW) {
						{
						this.state = 6647;
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_BINARY || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (MySqlParser.KW_ENGINE - 380)) | (1 << (MySqlParser.KW_ERROR - 380)) | (1 << (MySqlParser.KW_GENERAL - 380)))) !== 0) || _la === MySqlParser.KW_RELAY || _la === MySqlParser.KW_SLOW)) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
					}

					this.state = 6650;
					this.match(MySqlParser.KW_LOGS);
					}
					break;
				case MySqlParser.KW_OPTIMIZER_COSTS:
					{
					this.state = 6651;
					this.match(MySqlParser.KW_OPTIMIZER_COSTS);
					}
					break;
				case MySqlParser.KW_PRIVILEGES:
					{
					this.state = 6652;
					this.match(MySqlParser.KW_PRIVILEGES);
					}
					break;
				case MySqlParser.KW_QUERY:
					{
					this.state = 6653;
					this.match(MySqlParser.KW_QUERY);
					this.state = 6654;
					this.match(MySqlParser.KW_CACHE);
					}
					break;
				case MySqlParser.KW_STATUS:
					{
					this.state = 6655;
					this.match(MySqlParser.KW_STATUS);
					}
					break;
				case MySqlParser.KW_USER_RESOURCES:
					{
					this.state = 6656;
					this.match(MySqlParser.KW_USER_RESOURCES);
					}
					break;
				case MySqlParser.KW_TABLES:
					{
					this.state = 6657;
					this.match(MySqlParser.KW_TABLES);
					this.state = 6661;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 960, this._ctx) ) {
					case 1:
						{
						this.state = 6658;
						this.match(MySqlParser.KW_WITH);
						this.state = 6659;
						this.match(MySqlParser.KW_READ);
						this.state = 6660;
						this.match(MySqlParser.KW_LOCK);
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				_localctx = new ChannelFlushOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6665;
				this.match(MySqlParser.KW_RELAY);
				this.state = 6666;
				this.match(MySqlParser.KW_LOGS);
				this.state = 6668;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 6667;
					this.channelOption();
					}
				}

				}
				break;

			case 3:
				_localctx = new TableFlushOptionContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6670;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_TABLE || _la === MySqlParser.KW_TABLES)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6672;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 963, this._ctx) ) {
				case 1:
					{
					this.state = 6671;
					this.tableNames();
					}
					break;
				}
				this.state = 6675;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 964, this._ctx) ) {
				case 1:
					{
					this.state = 6674;
					this.flushTableOption();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public flushTableOption(): FlushTableOptionContext {
		let _localctx: FlushTableOptionContext = new FlushTableOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 598, MySqlParser.RULE_flushTableOption);
		try {
			this.state = 6684;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_WITH:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6679;
				this.match(MySqlParser.KW_WITH);
				this.state = 6680;
				this.match(MySqlParser.KW_READ);
				this.state = 6681;
				this.match(MySqlParser.KW_LOCK);
				}
				break;
			case MySqlParser.KW_FOR:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6682;
				this.match(MySqlParser.KW_FOR);
				this.state = 6683;
				this.match(MySqlParser.KW_EXPORT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loadedTableIndexes(): LoadedTableIndexesContext {
		let _localctx: LoadedTableIndexesContext = new LoadedTableIndexesContext(this._ctx, this.state);
		this.enterRule(_localctx, 600, MySqlParser.RULE_loadedTableIndexes);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6686;
			this.tableName();
			this.state = 6694;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITION) {
				{
				this.state = 6687;
				this.match(MySqlParser.KW_PARTITION);
				this.state = 6688;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 6691;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
					{
					this.state = 6689;
					this.partitionNames();
					}
					break;
				case MySqlParser.KW_ALL:
					{
					this.state = 6690;
					this.match(MySqlParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6693;
				this.match(MySqlParser.RR_BRACKET);
				}
			}

			this.state = 6703;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 970, this._ctx) ) {
			case 1:
				{
				this.state = 6697;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY) {
					{
					this.state = 6696;
					_localctx._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INDEX || _la === MySqlParser.KW_KEY)) {
						_localctx._indexFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				this.state = 6699;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 6700;
				this.indexNames();
				this.state = 6701;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 6707;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_IGNORE) {
				{
				this.state = 6705;
				this.match(MySqlParser.KW_IGNORE);
				this.state = 6706;
				this.match(MySqlParser.KW_LEAVES);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public simpleDescribeStatement(): SimpleDescribeStatementContext {
		let _localctx: SimpleDescribeStatementContext = new SimpleDescribeStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 602, MySqlParser.RULE_simpleDescribeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6709;
			_localctx._command = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & ((1 << (MySqlParser.KW_DESC - 45)) | (1 << (MySqlParser.KW_DESCRIBE - 45)) | (1 << (MySqlParser.KW_EXPLAIN - 45)))) !== 0))) {
				_localctx._command = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6710;
			this.tableName();
			this.state = 6713;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 972, this._ctx) ) {
			case 1:
				{
				this.state = 6711;
				_localctx._column = this.columnName();
				}
				break;

			case 2:
				{
				this.state = 6712;
				_localctx._pattern = this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fullDescribeStatement(): FullDescribeStatementContext {
		let _localctx: FullDescribeStatementContext = new FullDescribeStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 604, MySqlParser.RULE_fullDescribeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6715;
			_localctx._command = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & ((1 << (MySqlParser.KW_DESC - 45)) | (1 << (MySqlParser.KW_DESCRIBE - 45)) | (1 << (MySqlParser.KW_EXPLAIN - 45)))) !== 0))) {
				_localctx._command = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6721;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_EXTENDED:
				{
				this.state = 6716;
				this.match(MySqlParser.KW_EXTENDED);
				}
				break;
			case MySqlParser.KW_PARTITIONS:
				{
				this.state = 6717;
				this.match(MySqlParser.KW_PARTITIONS);
				}
				break;
			case MySqlParser.KW_FORMAT:
				{
				this.state = 6718;
				this.match(MySqlParser.KW_FORMAT);
				this.state = 6719;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 6720;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_JSON || _la === MySqlParser.KW_TRADITIONAL || _la === MySqlParser.KW_TREE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_DELETE:
			case MySqlParser.KW_FOR:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_SELECT:
			case MySqlParser.KW_UPDATE:
			case MySqlParser.LR_BRACKET:
				break;
			default:
				break;
			}
			this.state = 6723;
			this.describeObjectClause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public analyzeDescribeStatement(): AnalyzeDescribeStatementContext {
		let _localctx: AnalyzeDescribeStatementContext = new AnalyzeDescribeStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 606, MySqlParser.RULE_analyzeDescribeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6725;
			_localctx._command = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & ((1 << (MySqlParser.KW_DESC - 45)) | (1 << (MySqlParser.KW_DESCRIBE - 45)) | (1 << (MySqlParser.KW_EXPLAIN - 45)))) !== 0))) {
				_localctx._command = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6726;
			this.match(MySqlParser.KW_ANALYZE);
			this.state = 6730;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_FORMAT) {
				{
				this.state = 6727;
				this.match(MySqlParser.KW_FORMAT);
				this.state = 6728;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 6729;
				this.match(MySqlParser.KW_TREE);
				}
			}

			this.state = 6732;
			this.selectStatement();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public helpStatement(): HelpStatementContext {
		let _localctx: HelpStatementContext = new HelpStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 608, MySqlParser.RULE_helpStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6734;
			this.match(MySqlParser.KW_HELP);
			this.state = 6735;
			this.match(MySqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public useStatement(): UseStatementContext {
		let _localctx: UseStatementContext = new UseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 610, MySqlParser.RULE_useStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6737;
			this.match(MySqlParser.KW_USE);
			this.state = 6738;
			this.databaseName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public signalStatement(): SignalStatementContext {
		let _localctx: SignalStatementContext = new SignalStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 612, MySqlParser.RULE_signalStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6740;
			this.match(MySqlParser.KW_SIGNAL);
			this.state = 6748;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SQLSTATE:
				{
				{
				this.state = 6741;
				this.match(MySqlParser.KW_SQLSTATE);
				this.state = 6743;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_VALUE) {
					{
					this.state = 6742;
					this.match(MySqlParser.KW_VALUE);
					}
				}

				this.state = 6745;
				this.stringLiteral();
				}
				}
				break;
			case MySqlParser.ID:
				{
				this.state = 6746;
				this.match(MySqlParser.ID);
				}
				break;
			case MySqlParser.REVERSE_QUOTE_ID:
				{
				this.state = 6747;
				this.match(MySqlParser.REVERSE_QUOTE_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 6759;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 978, this._ctx) ) {
			case 1:
				{
				this.state = 6750;
				this.match(MySqlParser.KW_SET);
				this.state = 6751;
				this.signalConditionInformation();
				this.state = 6756;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6752;
					this.match(MySqlParser.COMMA);
					this.state = 6753;
					this.signalConditionInformation();
					}
					}
					this.state = 6758;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resignalStatement(): ResignalStatementContext {
		let _localctx: ResignalStatementContext = new ResignalStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 614, MySqlParser.RULE_resignalStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6761;
			this.match(MySqlParser.KW_RESIGNAL);
			this.state = 6769;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_SQLSTATE:
				{
				{
				this.state = 6762;
				this.match(MySqlParser.KW_SQLSTATE);
				this.state = 6764;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_VALUE) {
					{
					this.state = 6763;
					this.match(MySqlParser.KW_VALUE);
					}
				}

				this.state = 6766;
				this.stringLiteral();
				}
				}
				break;
			case MySqlParser.ID:
				{
				this.state = 6767;
				this.match(MySqlParser.ID);
				}
				break;
			case MySqlParser.REVERSE_QUOTE_ID:
				{
				this.state = 6768;
				this.match(MySqlParser.REVERSE_QUOTE_ID);
				}
				break;
			case MySqlParser.EOF:
			case MySqlParser.KW_ALTER:
			case MySqlParser.KW_ANALYZE:
			case MySqlParser.KW_CALL:
			case MySqlParser.KW_CHANGE:
			case MySqlParser.KW_CHECK:
			case MySqlParser.KW_CREATE:
			case MySqlParser.KW_DELETE:
			case MySqlParser.KW_DESC:
			case MySqlParser.KW_DESCRIBE:
			case MySqlParser.KW_DROP:
			case MySqlParser.KW_EXPLAIN:
			case MySqlParser.KW_GET:
			case MySqlParser.KW_GRANT:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_KILL:
			case MySqlParser.KW_LOAD:
			case MySqlParser.KW_LOCK:
			case MySqlParser.KW_OPTIMIZE:
			case MySqlParser.KW_PURGE:
			case MySqlParser.KW_RELEASE:
			case MySqlParser.KW_RENAME:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RESIGNAL:
			case MySqlParser.KW_REVOKE:
			case MySqlParser.KW_SELECT:
			case MySqlParser.KW_SET:
			case MySqlParser.KW_SHOW:
			case MySqlParser.KW_SIGNAL:
			case MySqlParser.KW_TABLE:
			case MySqlParser.KW_UNLOCK:
			case MySqlParser.KW_UPDATE:
			case MySqlParser.KW_USE:
			case MySqlParser.KW_VALUES:
			case MySqlParser.KW_WITH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESTART:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_CLONE:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.LR_BRACKET:
			case MySqlParser.SEMI:
				break;
			default:
				break;
			}
			this.state = 6780;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 982, this._ctx) ) {
			case 1:
				{
				this.state = 6771;
				this.match(MySqlParser.KW_SET);
				this.state = 6772;
				this.signalConditionInformation();
				this.state = 6777;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6773;
					this.match(MySqlParser.COMMA);
					this.state = 6774;
					this.signalConditionInformation();
					}
					}
					this.state = 6779;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public signalConditionInformation(): SignalConditionInformationContext {
		let _localctx: SignalConditionInformationContext = new SignalConditionInformationContext(this._ctx, this.state);
		this.enterRule(_localctx, 616, MySqlParser.RULE_signalConditionInformation);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6782;
			_la = this._input.LA(1);
			if (!(((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & ((1 << (MySqlParser.KW_CLASS_ORIGIN - 332)) | (1 << (MySqlParser.KW_COLUMN_NAME - 332)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 332)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 332)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 332)) | (1 << (MySqlParser.KW_CURSOR_NAME - 332)))) !== 0) || _la === MySqlParser.KW_MESSAGE_TEXT || _la === MySqlParser.KW_MYSQL_ERRNO || _la === MySqlParser.KW_SUBCLASS_ORIGIN || _la === MySqlParser.KW_TABLE_NAME || _la === MySqlParser.KW_CATALOG_NAME || _la === MySqlParser.KW_SCHEMA_NAME)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 6783;
			this.match(MySqlParser.EQUAL_SYMBOL);
			this.state = 6788;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.START_NATIONAL_STRING_LITERAL:
			case MySqlParser.STRING_LITERAL:
			case MySqlParser.STRING_CHARSET_NAME:
				{
				this.state = 6784;
				this.stringLiteral();
				}
				break;
			case MySqlParser.DECIMAL_LITERAL:
				{
				this.state = 6785;
				this.match(MySqlParser.DECIMAL_LITERAL);
				}
				break;
			case MySqlParser.LOCAL_ID:
			case MySqlParser.GLOBAL_ID:
				{
				this.state = 6786;
				this.mysqlVariable();
				}
				break;
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.ID:
				{
				this.state = 6787;
				this.simpleId();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public withStatement(): WithStatementContext {
		let _localctx: WithStatementContext = new WithStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 618, MySqlParser.RULE_withStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6790;
			this.match(MySqlParser.KW_WITH);
			this.state = 6792;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 984, this._ctx) ) {
			case 1:
				{
				this.state = 6791;
				this.match(MySqlParser.KW_RECURSIVE);
				}
				break;
			}
			this.state = 6794;
			this.commonTableExpressions();
			this.state = 6799;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6795;
				this.match(MySqlParser.COMMA);
				this.state = 6796;
				this.commonTableExpressions();
				}
				}
				this.state = 6801;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableStatement(): TableStatementContext {
		let _localctx: TableStatementContext = new TableStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 620, MySqlParser.RULE_tableStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6802;
			this.match(MySqlParser.KW_TABLE);
			this.state = 6803;
			this.tableName();
			this.state = 6805;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 986, this._ctx) ) {
			case 1:
				{
				this.state = 6804;
				this.orderByClause();
				}
				break;
			}
			this.state = 6808;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 987, this._ctx) ) {
			case 1:
				{
				this.state = 6807;
				this.limitClause();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public diagnosticsStatement(): DiagnosticsStatementContext {
		let _localctx: DiagnosticsStatementContext = new DiagnosticsStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 622, MySqlParser.RULE_diagnosticsStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6810;
			this.match(MySqlParser.KW_GET);
			this.state = 6812;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_CURRENT || _la === MySqlParser.KW_STACKED) {
				{
				this.state = 6811;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CURRENT || _la === MySqlParser.KW_STACKED)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			this.state = 6814;
			this.match(MySqlParser.KW_DIAGNOSTICS);
			this.state = 6846;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 992, this._ctx) ) {
			case 1:
				{
				{
				this.state = 6815;
				this.variableClause();
				this.state = 6816;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 6817;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_NUMBER || _la === MySqlParser.KW_ROW_COUNT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6825;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6818;
					this.match(MySqlParser.COMMA);
					this.state = 6819;
					this.variableClause();
					this.state = 6820;
					this.match(MySqlParser.EQUAL_SYMBOL);
					this.state = 6821;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_NUMBER || _la === MySqlParser.KW_ROW_COUNT)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					}
					this.state = 6827;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				}
				break;

			case 2:
				{
				{
				this.state = 6828;
				this.match(MySqlParser.KW_CONDITION);
				this.state = 6831;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.ZERO_DECIMAL:
				case MySqlParser.ONE_DECIMAL:
				case MySqlParser.TWO_DECIMAL:
				case MySqlParser.THREE_DECIMAL:
				case MySqlParser.DECIMAL_LITERAL:
				case MySqlParser.REAL_LITERAL:
					{
					this.state = 6829;
					this.decimalLiteral();
					}
					break;
				case MySqlParser.KW_ARRAY:
				case MySqlParser.KW_ATTRIBUTE:
				case MySqlParser.KW_BUCKETS:
				case MySqlParser.KW_CONDITION:
				case MySqlParser.KW_CURRENT:
				case MySqlParser.KW_CURRENT_USER:
				case MySqlParser.KW_DATABASE:
				case MySqlParser.KW_DEFAULT:
				case MySqlParser.KW_DIAGNOSTICS:
				case MySqlParser.KW_EMPTY:
				case MySqlParser.KW_ENFORCED:
				case MySqlParser.KW_EXCEPT:
				case MySqlParser.KW_GROUP:
				case MySqlParser.KW_IF:
				case MySqlParser.KW_INSERT:
				case MySqlParser.KW_LATERAL:
				case MySqlParser.KW_LEFT:
				case MySqlParser.KW_NUMBER:
				case MySqlParser.KW_OPTIONAL:
				case MySqlParser.KW_ORDER:
				case MySqlParser.KW_PRIMARY:
				case MySqlParser.KW_REPEAT:
				case MySqlParser.KW_REPLACE:
				case MySqlParser.KW_RIGHT:
				case MySqlParser.KW_SCHEMA:
				case MySqlParser.KW_SKIP_QUERY_REWRITE:
				case MySqlParser.KW_STACKED:
				case MySqlParser.KW_DATE:
				case MySqlParser.KW_TIME:
				case MySqlParser.KW_TIMESTAMP:
				case MySqlParser.KW_DATETIME:
				case MySqlParser.KW_YEAR:
				case MySqlParser.KW_BINARY:
				case MySqlParser.KW_TEXT:
				case MySqlParser.KW_ENUM:
				case MySqlParser.KW_SERIAL:
				case MySqlParser.KW_JSON_TABLE:
				case MySqlParser.KW_JSON_VALUE:
				case MySqlParser.KW_NESTED:
				case MySqlParser.KW_ORDINALITY:
				case MySqlParser.KW_PATH:
				case MySqlParser.KW_AVG:
				case MySqlParser.KW_BIT_AND:
				case MySqlParser.KW_BIT_OR:
				case MySqlParser.KW_BIT_XOR:
				case MySqlParser.KW_COUNT:
				case MySqlParser.KW_CUME_DIST:
				case MySqlParser.KW_DENSE_RANK:
				case MySqlParser.KW_FIRST_VALUE:
				case MySqlParser.KW_GROUP_CONCAT:
				case MySqlParser.KW_LAG:
				case MySqlParser.KW_LAST_VALUE:
				case MySqlParser.KW_LEAD:
				case MySqlParser.KW_MAX:
				case MySqlParser.KW_MIN:
				case MySqlParser.KW_NTILE:
				case MySqlParser.KW_NTH_VALUE:
				case MySqlParser.KW_PERCENT_RANK:
				case MySqlParser.KW_RANK:
				case MySqlParser.KW_ROW_NUMBER:
				case MySqlParser.KW_STD:
				case MySqlParser.KW_STDDEV:
				case MySqlParser.KW_STDDEV_POP:
				case MySqlParser.KW_STDDEV_SAMP:
				case MySqlParser.KW_SUM:
				case MySqlParser.KW_VAR_POP:
				case MySqlParser.KW_VAR_SAMP:
				case MySqlParser.KW_VARIANCE:
				case MySqlParser.KW_CURRENT_DATE:
				case MySqlParser.KW_CURRENT_TIME:
				case MySqlParser.KW_CURRENT_TIMESTAMP:
				case MySqlParser.KW_LOCALTIME:
				case MySqlParser.KW_CURDATE:
				case MySqlParser.KW_CURTIME:
				case MySqlParser.KW_DATE_ADD:
				case MySqlParser.KW_DATE_SUB:
				case MySqlParser.KW_LOCALTIMESTAMP:
				case MySqlParser.KW_NOW:
				case MySqlParser.KW_POSITION:
				case MySqlParser.KW_SUBSTR:
				case MySqlParser.KW_SUBSTRING:
				case MySqlParser.KW_SYSDATE:
				case MySqlParser.KW_TRIM:
				case MySqlParser.KW_UTC_DATE:
				case MySqlParser.KW_UTC_TIME:
				case MySqlParser.KW_UTC_TIMESTAMP:
				case MySqlParser.KW_ACCOUNT:
				case MySqlParser.KW_ACTION:
				case MySqlParser.KW_AFTER:
				case MySqlParser.KW_AGGREGATE:
				case MySqlParser.KW_ALGORITHM:
				case MySqlParser.KW_ANY:
				case MySqlParser.KW_AT:
				case MySqlParser.KW_AUTHORS:
				case MySqlParser.KW_AUTOCOMMIT:
				case MySqlParser.KW_AUTOEXTEND_SIZE:
				case MySqlParser.KW_AUTO_INCREMENT:
				case MySqlParser.KW_AVG_ROW_LENGTH:
				case MySqlParser.KW_BEGIN:
				case MySqlParser.KW_BINLOG:
				case MySqlParser.KW_BIT:
				case MySqlParser.KW_BLOCK:
				case MySqlParser.KW_BOOL:
				case MySqlParser.KW_BOOLEAN:
				case MySqlParser.KW_BTREE:
				case MySqlParser.KW_CACHE:
				case MySqlParser.KW_CASCADED:
				case MySqlParser.KW_CHAIN:
				case MySqlParser.KW_CHANGED:
				case MySqlParser.KW_CHANNEL:
				case MySqlParser.KW_CHECKSUM:
				case MySqlParser.KW_CIPHER:
				case MySqlParser.KW_CLASS_ORIGIN:
				case MySqlParser.KW_CLIENT:
				case MySqlParser.KW_CLOSE:
				case MySqlParser.KW_COALESCE:
				case MySqlParser.KW_CODE:
				case MySqlParser.KW_COLUMNS:
				case MySqlParser.KW_COLUMN_FORMAT:
				case MySqlParser.KW_COLUMN_NAME:
				case MySqlParser.KW_COMMENT:
				case MySqlParser.KW_COMMIT:
				case MySqlParser.KW_COMPACT:
				case MySqlParser.KW_COMPLETION:
				case MySqlParser.KW_COMPRESSED:
				case MySqlParser.KW_COMPRESSION:
				case MySqlParser.KW_CONCURRENT:
				case MySqlParser.KW_CONNECT:
				case MySqlParser.KW_CONNECTION:
				case MySqlParser.KW_CONSISTENT:
				case MySqlParser.KW_CONSTRAINT_CATALOG:
				case MySqlParser.KW_CONSTRAINT_SCHEMA:
				case MySqlParser.KW_CONSTRAINT_NAME:
				case MySqlParser.KW_CONTAINS:
				case MySqlParser.KW_CONTEXT:
				case MySqlParser.KW_CONTRIBUTORS:
				case MySqlParser.KW_COPY:
				case MySqlParser.KW_CPU:
				case MySqlParser.KW_CURSOR_NAME:
				case MySqlParser.KW_DATA:
				case MySqlParser.KW_DATAFILE:
				case MySqlParser.KW_DEALLOCATE:
				case MySqlParser.KW_DEFAULT_AUTH:
				case MySqlParser.KW_DEFINER:
				case MySqlParser.KW_DELAY_KEY_WRITE:
				case MySqlParser.KW_DES_KEY_FILE:
				case MySqlParser.KW_DIRECTORY:
				case MySqlParser.KW_DISABLE:
				case MySqlParser.KW_DISCARD:
				case MySqlParser.KW_DISK:
				case MySqlParser.KW_DO:
				case MySqlParser.KW_DUMPFILE:
				case MySqlParser.KW_DUPLICATE:
				case MySqlParser.KW_DYNAMIC:
				case MySqlParser.KW_ENABLE:
				case MySqlParser.KW_ENCRYPTION:
				case MySqlParser.KW_END:
				case MySqlParser.KW_ENDS:
				case MySqlParser.KW_ENGINE:
				case MySqlParser.KW_ENGINES:
				case MySqlParser.KW_ERROR:
				case MySqlParser.KW_ERRORS:
				case MySqlParser.KW_ESCAPE:
				case MySqlParser.KW_EVENT:
				case MySqlParser.KW_EVENTS:
				case MySqlParser.KW_EVERY:
				case MySqlParser.KW_EXCHANGE:
				case MySqlParser.KW_EXCLUSIVE:
				case MySqlParser.KW_EXPIRE:
				case MySqlParser.KW_EXPORT:
				case MySqlParser.KW_EXTENDED:
				case MySqlParser.KW_EXTENT_SIZE:
				case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
				case MySqlParser.KW_FAST:
				case MySqlParser.KW_FAULTS:
				case MySqlParser.KW_FIELDS:
				case MySqlParser.KW_FILE_BLOCK_SIZE:
				case MySqlParser.KW_FILTER:
				case MySqlParser.KW_FIRST:
				case MySqlParser.KW_FIXED:
				case MySqlParser.KW_FLUSH:
				case MySqlParser.KW_FOLLOWS:
				case MySqlParser.KW_FOUND:
				case MySqlParser.KW_FULL:
				case MySqlParser.KW_FUNCTION:
				case MySqlParser.KW_GENERAL:
				case MySqlParser.KW_GLOBAL:
				case MySqlParser.KW_GRANTS:
				case MySqlParser.KW_GROUP_REPLICATION:
				case MySqlParser.KW_HANDLER:
				case MySqlParser.KW_HASH:
				case MySqlParser.KW_HELP:
				case MySqlParser.KW_HISTORY:
				case MySqlParser.KW_HOST:
				case MySqlParser.KW_HOSTS:
				case MySqlParser.KW_IDENTIFIED:
				case MySqlParser.KW_IGNORE_SERVER_IDS:
				case MySqlParser.KW_IMPORT:
				case MySqlParser.KW_INDEXES:
				case MySqlParser.KW_INITIAL_SIZE:
				case MySqlParser.KW_INPLACE:
				case MySqlParser.KW_INSERT_METHOD:
				case MySqlParser.KW_INSTALL:
				case MySqlParser.KW_INSTANCE:
				case MySqlParser.KW_INSTANT:
				case MySqlParser.KW_INVISIBLE:
				case MySqlParser.KW_INVOKER:
				case MySqlParser.KW_IO:
				case MySqlParser.KW_IO_THREAD:
				case MySqlParser.KW_IPC:
				case MySqlParser.KW_ISOLATION:
				case MySqlParser.KW_ISSUER:
				case MySqlParser.KW_JSON:
				case MySqlParser.KW_KEY_BLOCK_SIZE:
				case MySqlParser.KW_LANGUAGE:
				case MySqlParser.KW_LAST:
				case MySqlParser.KW_LEAVES:
				case MySqlParser.KW_LESS:
				case MySqlParser.KW_LEVEL:
				case MySqlParser.KW_LIST:
				case MySqlParser.KW_LOCAL:
				case MySqlParser.KW_LOGFILE:
				case MySqlParser.KW_LOGS:
				case MySqlParser.KW_MASTER:
				case MySqlParser.KW_MASTER_AUTO_POSITION:
				case MySqlParser.KW_MASTER_CONNECT_RETRY:
				case MySqlParser.KW_MASTER_DELAY:
				case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
				case MySqlParser.KW_MASTER_HOST:
				case MySqlParser.KW_MASTER_LOG_FILE:
				case MySqlParser.KW_MASTER_LOG_POS:
				case MySqlParser.KW_MASTER_PASSWORD:
				case MySqlParser.KW_MASTER_PORT:
				case MySqlParser.KW_MASTER_RETRY_COUNT:
				case MySqlParser.KW_MASTER_SSL:
				case MySqlParser.KW_MASTER_SSL_CA:
				case MySqlParser.KW_MASTER_SSL_CAPATH:
				case MySqlParser.KW_MASTER_SSL_CERT:
				case MySqlParser.KW_MASTER_SSL_CIPHER:
				case MySqlParser.KW_MASTER_SSL_CRL:
				case MySqlParser.KW_MASTER_SSL_CRLPATH:
				case MySqlParser.KW_MASTER_SSL_KEY:
				case MySqlParser.KW_MASTER_TLS_VERSION:
				case MySqlParser.KW_MASTER_USER:
				case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
				case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
				case MySqlParser.KW_MAX_ROWS:
				case MySqlParser.KW_MAX_SIZE:
				case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
				case MySqlParser.KW_MAX_USER_CONNECTIONS:
				case MySqlParser.KW_MEDIUM:
				case MySqlParser.KW_MEMBER:
				case MySqlParser.KW_MERGE:
				case MySqlParser.KW_MESSAGE_TEXT:
				case MySqlParser.KW_MID:
				case MySqlParser.KW_MIGRATE:
				case MySqlParser.KW_MIN_ROWS:
				case MySqlParser.KW_MODE:
				case MySqlParser.KW_MODIFY:
				case MySqlParser.KW_MUTEX:
				case MySqlParser.KW_MYSQL:
				case MySqlParser.KW_MYSQL_ERRNO:
				case MySqlParser.KW_NAME:
				case MySqlParser.KW_NAMES:
				case MySqlParser.KW_NCHAR:
				case MySqlParser.KW_NEVER:
				case MySqlParser.KW_NEXT:
				case MySqlParser.KW_NO:
				case MySqlParser.KW_NOWAIT:
				case MySqlParser.KW_NODEGROUP:
				case MySqlParser.KW_NONE:
				case MySqlParser.KW_ODBC:
				case MySqlParser.KW_OFFLINE:
				case MySqlParser.KW_OFFSET:
				case MySqlParser.KW_OF:
				case MySqlParser.KW_OLD_PASSWORD:
				case MySqlParser.KW_ONE:
				case MySqlParser.KW_ONLINE:
				case MySqlParser.KW_ONLY:
				case MySqlParser.KW_OPEN:
				case MySqlParser.KW_OPTIMIZER_COSTS:
				case MySqlParser.KW_OPTIONS:
				case MySqlParser.KW_OWNER:
				case MySqlParser.KW_PACK_KEYS:
				case MySqlParser.KW_PAGE:
				case MySqlParser.KW_PAGE_CHECKSUM:
				case MySqlParser.KW_PARSER:
				case MySqlParser.KW_PARTIAL:
				case MySqlParser.KW_PARTITIONING:
				case MySqlParser.KW_PARTITIONS:
				case MySqlParser.KW_PASSWORD:
				case MySqlParser.KW_PASSWORD_LOCK_TIME:
				case MySqlParser.KW_PERSIST:
				case MySqlParser.KW_PERSIST_ONLY:
				case MySqlParser.KW_PHASE:
				case MySqlParser.KW_PLUGIN:
				case MySqlParser.KW_PLUGIN_DIR:
				case MySqlParser.KW_PLUGINS:
				case MySqlParser.KW_PORT:
				case MySqlParser.KW_PRECEDES:
				case MySqlParser.KW_PREPARE:
				case MySqlParser.KW_PRESERVE:
				case MySqlParser.KW_PREV:
				case MySqlParser.KW_PROCESSLIST:
				case MySqlParser.KW_PROFILE:
				case MySqlParser.KW_PROFILES:
				case MySqlParser.KW_PROXY:
				case MySqlParser.KW_QUERY:
				case MySqlParser.KW_QUICK:
				case MySqlParser.KW_REBUILD:
				case MySqlParser.KW_RECOVER:
				case MySqlParser.KW_RECURSIVE:
				case MySqlParser.KW_REDO_BUFFER_SIZE:
				case MySqlParser.KW_REDUNDANT:
				case MySqlParser.KW_RELAY:
				case MySqlParser.KW_RELAY_LOG_FILE:
				case MySqlParser.KW_RELAY_LOG_POS:
				case MySqlParser.KW_RELAYLOG:
				case MySqlParser.KW_REMOVE:
				case MySqlParser.KW_REORGANIZE:
				case MySqlParser.KW_REPAIR:
				case MySqlParser.KW_REPLICATE_DO_DB:
				case MySqlParser.KW_REPLICATE_DO_TABLE:
				case MySqlParser.KW_REPLICATE_IGNORE_DB:
				case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATE_REWRITE_DB:
				case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
				case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
				case MySqlParser.KW_REPLICATION:
				case MySqlParser.KW_RESET:
				case MySqlParser.KW_RESUME:
				case MySqlParser.KW_RETURNED_SQLSTATE:
				case MySqlParser.KW_RETURNS:
				case MySqlParser.KW_REUSE:
				case MySqlParser.KW_ROLE:
				case MySqlParser.KW_ROLLBACK:
				case MySqlParser.KW_ROLLUP:
				case MySqlParser.KW_ROTATE:
				case MySqlParser.KW_ROW:
				case MySqlParser.KW_ROWS:
				case MySqlParser.KW_ROW_FORMAT:
				case MySqlParser.KW_SAVEPOINT:
				case MySqlParser.KW_SCHEDULE:
				case MySqlParser.KW_SECURITY:
				case MySqlParser.KW_SERVER:
				case MySqlParser.KW_SESSION:
				case MySqlParser.KW_SHARE:
				case MySqlParser.KW_SHARED:
				case MySqlParser.KW_SIGNED:
				case MySqlParser.KW_SIMPLE:
				case MySqlParser.KW_SLAVE:
				case MySqlParser.KW_SLOW:
				case MySqlParser.KW_SNAPSHOT:
				case MySqlParser.KW_SOCKET:
				case MySqlParser.KW_SOME:
				case MySqlParser.KW_SONAME:
				case MySqlParser.KW_SOUNDS:
				case MySqlParser.KW_SOURCE:
				case MySqlParser.KW_SQL_AFTER_GTIDS:
				case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
				case MySqlParser.KW_SQL_BEFORE_GTIDS:
				case MySqlParser.KW_SQL_BUFFER_RESULT:
				case MySqlParser.KW_SQL_CACHE:
				case MySqlParser.KW_SQL_NO_CACHE:
				case MySqlParser.KW_SQL_THREAD:
				case MySqlParser.KW_START:
				case MySqlParser.KW_STARTS:
				case MySqlParser.KW_STATS_AUTO_RECALC:
				case MySqlParser.KW_STATS_PERSISTENT:
				case MySqlParser.KW_STATS_SAMPLE_PAGES:
				case MySqlParser.KW_STATUS:
				case MySqlParser.KW_STOP:
				case MySqlParser.KW_STORAGE:
				case MySqlParser.KW_STRING:
				case MySqlParser.KW_SUBCLASS_ORIGIN:
				case MySqlParser.KW_SUBJECT:
				case MySqlParser.KW_SUBPARTITION:
				case MySqlParser.KW_SUBPARTITIONS:
				case MySqlParser.KW_SUSPEND:
				case MySqlParser.KW_SWAPS:
				case MySqlParser.KW_SWITCHES:
				case MySqlParser.KW_TABLE_NAME:
				case MySqlParser.KW_TABLESPACE:
				case MySqlParser.KW_TABLE_TYPE:
				case MySqlParser.KW_TEMPORARY:
				case MySqlParser.KW_TEMPTABLE:
				case MySqlParser.KW_THAN:
				case MySqlParser.KW_TRADITIONAL:
				case MySqlParser.KW_TRANSACTION:
				case MySqlParser.KW_TRANSACTIONAL:
				case MySqlParser.KW_TRIGGERS:
				case MySqlParser.KW_TRUNCATE:
				case MySqlParser.KW_UNBOUNDED:
				case MySqlParser.KW_UNDEFINED:
				case MySqlParser.KW_UNDOFILE:
				case MySqlParser.KW_UNDO_BUFFER_SIZE:
				case MySqlParser.KW_UNINSTALL:
				case MySqlParser.KW_UNKNOWN:
				case MySqlParser.KW_UNTIL:
				case MySqlParser.KW_UPGRADE:
				case MySqlParser.KW_USER:
				case MySqlParser.KW_USE_FRM:
				case MySqlParser.KW_USER_RESOURCES:
				case MySqlParser.KW_VALIDATION:
				case MySqlParser.KW_VALUE:
				case MySqlParser.KW_VARIABLES:
				case MySqlParser.KW_VIEW:
				case MySqlParser.KW_VIRTUAL:
				case MySqlParser.KW_VISIBLE:
				case MySqlParser.KW_WAIT:
				case MySqlParser.KW_WARNINGS:
				case MySqlParser.KW_WITHOUT:
				case MySqlParser.KW_WORK:
				case MySqlParser.KW_WRAPPER:
				case MySqlParser.KW_X509:
				case MySqlParser.KW_XA:
				case MySqlParser.KW_XML:
				case MySqlParser.KW_QUARTER:
				case MySqlParser.KW_MONTH:
				case MySqlParser.KW_DAY:
				case MySqlParser.KW_HOUR:
				case MySqlParser.KW_MINUTE:
				case MySqlParser.KW_WEEK:
				case MySqlParser.KW_SECOND:
				case MySqlParser.KW_MICROSECOND:
				case MySqlParser.KW_ADMIN:
				case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
				case MySqlParser.KW_AUDIT_ADMIN:
				case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
				case MySqlParser.KW_BACKUP_ADMIN:
				case MySqlParser.KW_BINLOG_ADMIN:
				case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
				case MySqlParser.KW_CLONE_ADMIN:
				case MySqlParser.KW_CONNECTION_ADMIN:
				case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
				case MySqlParser.KW_EXECUTE:
				case MySqlParser.KW_FILE:
				case MySqlParser.KW_FIREWALL_ADMIN:
				case MySqlParser.KW_FIREWALL_EXEMPT:
				case MySqlParser.KW_FIREWALL_USER:
				case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
				case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
				case MySqlParser.KW_INVOKE:
				case MySqlParser.KW_LAMBDA:
				case MySqlParser.KW_NDB_STORED_USER:
				case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
				case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
				case MySqlParser.KW_PRIVILEGES:
				case MySqlParser.KW_PROCESS:
				case MySqlParser.KW_RELOAD:
				case MySqlParser.KW_REPLICATION_APPLIER:
				case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
				case MySqlParser.KW_RESOURCE_GROUP_USER:
				case MySqlParser.KW_ROLE_ADMIN:
				case MySqlParser.KW_ROUTINE:
				case MySqlParser.KW_S3:
				case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
				case MySqlParser.KW_SET_USER_ID:
				case MySqlParser.KW_SHOW_ROUTINE:
				case MySqlParser.KW_SHUTDOWN:
				case MySqlParser.KW_SUPER:
				case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
				case MySqlParser.KW_TABLES:
				case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
				case MySqlParser.KW_VERSION_TOKEN_ADMIN:
				case MySqlParser.KW_XA_RECOVER_ADMIN:
				case MySqlParser.KW_ARMSCII8:
				case MySqlParser.KW_ASCII:
				case MySqlParser.KW_BIG5:
				case MySqlParser.KW_CP1250:
				case MySqlParser.KW_CP1251:
				case MySqlParser.KW_CP1256:
				case MySqlParser.KW_CP1257:
				case MySqlParser.KW_CP850:
				case MySqlParser.KW_CP852:
				case MySqlParser.KW_CP866:
				case MySqlParser.KW_CP932:
				case MySqlParser.KW_DEC8:
				case MySqlParser.KW_EUCJPMS:
				case MySqlParser.KW_EUCKR:
				case MySqlParser.KW_GB18030:
				case MySqlParser.KW_GB2312:
				case MySqlParser.KW_GBK:
				case MySqlParser.KW_GEOSTD8:
				case MySqlParser.KW_GREEK:
				case MySqlParser.KW_HEBREW:
				case MySqlParser.KW_HP8:
				case MySqlParser.KW_KEYBCS2:
				case MySqlParser.KW_KOI8R:
				case MySqlParser.KW_KOI8U:
				case MySqlParser.KW_LATIN1:
				case MySqlParser.KW_LATIN2:
				case MySqlParser.KW_LATIN5:
				case MySqlParser.KW_LATIN7:
				case MySqlParser.KW_MACCE:
				case MySqlParser.KW_MACROMAN:
				case MySqlParser.KW_SJIS:
				case MySqlParser.KW_SWE7:
				case MySqlParser.KW_TIS620:
				case MySqlParser.KW_UCS2:
				case MySqlParser.KW_UJIS:
				case MySqlParser.KW_UTF16:
				case MySqlParser.KW_UTF16LE:
				case MySqlParser.KW_UTF32:
				case MySqlParser.KW_UTF8:
				case MySqlParser.KW_UTF8MB3:
				case MySqlParser.KW_UTF8MB4:
				case MySqlParser.KW_ARCHIVE:
				case MySqlParser.KW_BLACKHOLE:
				case MySqlParser.KW_CSV:
				case MySqlParser.KW_FEDERATED:
				case MySqlParser.KW_INNODB:
				case MySqlParser.KW_MEMORY:
				case MySqlParser.KW_MRG_MYISAM:
				case MySqlParser.KW_MYISAM:
				case MySqlParser.KW_NDB:
				case MySqlParser.KW_NDBCLUSTER:
				case MySqlParser.KW_PERFORMANCE_SCHEMA:
				case MySqlParser.KW_TOKUDB:
				case MySqlParser.KW_REPEATABLE:
				case MySqlParser.KW_COMMITTED:
				case MySqlParser.KW_UNCOMMITTED:
				case MySqlParser.KW_SERIALIZABLE:
				case MySqlParser.KW_GEOMETRYCOLLECTION:
				case MySqlParser.KW_LINESTRING:
				case MySqlParser.KW_MULTILINESTRING:
				case MySqlParser.KW_MULTIPOINT:
				case MySqlParser.KW_MULTIPOLYGON:
				case MySqlParser.KW_POINT:
				case MySqlParser.KW_POLYGON:
				case MySqlParser.KW_CATALOG_NAME:
				case MySqlParser.KW_CHARSET:
				case MySqlParser.KW_COLLATION:
				case MySqlParser.KW_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_FORMAT:
				case MySqlParser.KW_GET_FORMAT:
				case MySqlParser.KW_RANDOM:
				case MySqlParser.KW_REVERSE:
				case MySqlParser.KW_ROW_COUNT:
				case MySqlParser.KW_SCHEMA_NAME:
				case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
				case MySqlParser.KW_SRID:
				case MySqlParser.KW_SYSTEM_USER:
				case MySqlParser.KW_TP_CONNECTION_ADMIN:
				case MySqlParser.KW_WEIGHT_STRING:
				case MySqlParser.MOD:
				case MySqlParser.AT_SIGN:
				case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.ID:
				case MySqlParser.LOCAL_ID:
				case MySqlParser.GLOBAL_ID:
					{
					this.state = 6830;
					this.variableClause();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6833;
				this.variableClause();
				this.state = 6834;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 6835;
				this.diagnosticsConditionInformationName();
				this.state = 6843;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 6836;
					this.match(MySqlParser.COMMA);
					this.state = 6837;
					this.variableClause();
					this.state = 6838;
					this.match(MySqlParser.EQUAL_SYMBOL);
					this.state = 6839;
					this.diagnosticsConditionInformationName();
					}
					}
					this.state = 6845;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public diagnosticsConditionInformationName(): DiagnosticsConditionInformationNameContext {
		let _localctx: DiagnosticsConditionInformationNameContext = new DiagnosticsConditionInformationNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 624, MySqlParser.RULE_diagnosticsConditionInformationName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6848;
			_la = this._input.LA(1);
			if (!(((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & ((1 << (MySqlParser.KW_CLASS_ORIGIN - 332)) | (1 << (MySqlParser.KW_COLUMN_NAME - 332)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 332)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 332)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 332)) | (1 << (MySqlParser.KW_CURSOR_NAME - 332)))) !== 0) || _la === MySqlParser.KW_MESSAGE_TEXT || _la === MySqlParser.KW_MYSQL_ERRNO || _la === MySqlParser.KW_RETURNED_SQLSTATE || _la === MySqlParser.KW_SUBCLASS_ORIGIN || _la === MySqlParser.KW_TABLE_NAME || _la === MySqlParser.KW_CATALOG_NAME || _la === MySqlParser.KW_SCHEMA_NAME)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public describeObjectClause(): DescribeObjectClauseContext {
		let _localctx: DescribeObjectClauseContext = new DescribeObjectClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 626, MySqlParser.RULE_describeObjectClause);
		try {
			this.state = 6860;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_DELETE:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_SELECT:
			case MySqlParser.KW_UPDATE:
			case MySqlParser.LR_BRACKET:
				_localctx = new DescribeStatementsContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6855;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.KW_SELECT:
				case MySqlParser.LR_BRACKET:
					{
					this.state = 6850;
					this.selectStatement();
					}
					break;
				case MySqlParser.KW_DELETE:
					{
					this.state = 6851;
					this.deleteStatement();
					}
					break;
				case MySqlParser.KW_INSERT:
					{
					this.state = 6852;
					this.insertStatement();
					}
					break;
				case MySqlParser.KW_REPLACE:
					{
					this.state = 6853;
					this.replaceStatement();
					}
					break;
				case MySqlParser.KW_UPDATE:
					{
					this.state = 6854;
					this.updateStatement();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case MySqlParser.KW_FOR:
				_localctx = new DescribeConnectionContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6857;
				this.match(MySqlParser.KW_FOR);
				this.state = 6858;
				this.match(MySqlParser.KW_CONNECTION);
				this.state = 6859;
				(_localctx as DescribeConnectionContext)._connection_id = this.uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public databaseNameCreate(): DatabaseNameCreateContext {
		let _localctx: DatabaseNameCreateContext = new DatabaseNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 628, MySqlParser.RULE_databaseNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6862;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public databaseName(): DatabaseNameContext {
		let _localctx: DatabaseNameContext = new DatabaseNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 630, MySqlParser.RULE_databaseName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6864;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionNameCreate(): FunctionNameCreateContext {
		let _localctx: FunctionNameCreateContext = new FunctionNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 632, MySqlParser.RULE_functionNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6866;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionName(): FunctionNameContext {
		let _localctx: FunctionNameContext = new FunctionNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 634, MySqlParser.RULE_functionName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6868;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewNameCreate(): ViewNameCreateContext {
		let _localctx: ViewNameCreateContext = new ViewNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 636, MySqlParser.RULE_viewNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6870;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewName(): ViewNameContext {
		let _localctx: ViewNameContext = new ViewNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 638, MySqlParser.RULE_viewName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6872;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexNameCreate(): IndexNameCreateContext {
		let _localctx: IndexNameCreateContext = new IndexNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 640, MySqlParser.RULE_indexNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6874;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexNames(): IndexNamesContext {
		let _localctx: IndexNamesContext = new IndexNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 642, MySqlParser.RULE_indexNames);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6876;
			this.indexName();
			this.state = 6881;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6877;
				this.match(MySqlParser.COMMA);
				this.state = 6878;
				this.indexName();
				}
				}
				this.state = 6883;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexName(): IndexNameContext {
		let _localctx: IndexNameContext = new IndexNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 644, MySqlParser.RULE_indexName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6884;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupNameCreate(): GroupNameCreateContext {
		let _localctx: GroupNameCreateContext = new GroupNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 646, MySqlParser.RULE_groupNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6886;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupName(): GroupNameContext {
		let _localctx: GroupNameContext = new GroupNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 648, MySqlParser.RULE_groupName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6888;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableNameCreate(): TableNameCreateContext {
		let _localctx: TableNameCreateContext = new TableNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 650, MySqlParser.RULE_tableNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6890;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableNames(): TableNamesContext {
		let _localctx: TableNamesContext = new TableNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 652, MySqlParser.RULE_tableNames);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6892;
			this.tableName();
			this.state = 6897;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 996, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 6893;
					this.match(MySqlParser.COMMA);
					this.state = 6894;
					this.tableName();
					}
					}
				}
				this.state = 6899;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 996, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableName(): TableNameContext {
		let _localctx: TableNameContext = new TableNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 654, MySqlParser.RULE_tableName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6900;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userOrRoleNames(): UserOrRoleNamesContext {
		let _localctx: UserOrRoleNamesContext = new UserOrRoleNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 656, MySqlParser.RULE_userOrRoleNames);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6902;
			this.userOrRoleName();
			this.state = 6907;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 6903;
				this.match(MySqlParser.COMMA);
				this.state = 6904;
				this.userOrRoleName();
				}
				}
				this.state = 6909;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userOrRoleName(): UserOrRoleNameContext {
		let _localctx: UserOrRoleNameContext = new UserOrRoleNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 658, MySqlParser.RULE_userOrRoleName);
		try {
			this.state = 6912;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 998, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6910;
				this.userName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6911;
				this.uid();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameCreate(): ColumnNameCreateContext {
		let _localctx: ColumnNameCreateContext = new ColumnNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 660, MySqlParser.RULE_columnNameCreate);
		let _la: number;
		try {
			this.state = 6928;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1003, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6914;
				this.uid();
				this.state = 6919;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.DOT) {
					{
					this.state = 6915;
					this.dottedId();
					this.state = 6917;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.DOT) {
						{
						this.state = 6916;
						this.dottedId();
						}
					}

					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6922;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1001, this._ctx) ) {
				case 1:
					{
					this.state = 6921;
					this.matchWildcard();
					}
					break;
				}
				this.state = 6924;
				this.dottedId();
				this.state = 6926;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.DOT) {
					{
					this.state = 6925;
					this.dottedId();
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNames(): ColumnNamesContext {
		let _localctx: ColumnNamesContext = new ColumnNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 662, MySqlParser.RULE_columnNames);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6930;
			this.columnName();
			this.state = 6935;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1004, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 6931;
					this.match(MySqlParser.COMMA);
					this.state = 6932;
					this.columnName();
					}
					}
				}
				this.state = 6937;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1004, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnName(): ColumnNameContext {
		let _localctx: ColumnNameContext = new ColumnNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 664, MySqlParser.RULE_columnName);
		try {
			this.state = 6952;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1009, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6938;
				this.uid();
				this.state = 6943;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1006, this._ctx) ) {
				case 1:
					{
					this.state = 6939;
					this.dottedId();
					this.state = 6941;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1005, this._ctx) ) {
					case 1:
						{
						this.state = 6940;
						this.dottedId();
						}
						break;
					}
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6946;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1007, this._ctx) ) {
				case 1:
					{
					this.state = 6945;
					this.matchWildcard();
					}
					break;
				}
				this.state = 6948;
				this.dottedId();
				this.state = 6950;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1008, this._ctx) ) {
				case 1:
					{
					this.state = 6949;
					this.dottedId();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablespaceNameCreate(): TablespaceNameCreateContext {
		let _localctx: TablespaceNameCreateContext = new TablespaceNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 666, MySqlParser.RULE_tablespaceNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6954;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablespaceName(): TablespaceNameContext {
		let _localctx: TablespaceNameContext = new TablespaceNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 668, MySqlParser.RULE_tablespaceName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6956;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionNameCreate(): PartitionNameCreateContext {
		let _localctx: PartitionNameCreateContext = new PartitionNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 670, MySqlParser.RULE_partitionNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6958;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionNames(): PartitionNamesContext {
		let _localctx: PartitionNamesContext = new PartitionNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 672, MySqlParser.RULE_partitionNames);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6960;
			this.partitionName();
			this.state = 6965;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1010, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 6961;
					this.match(MySqlParser.COMMA);
					this.state = 6962;
					this.partitionName();
					}
					}
				}
				this.state = 6967;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1010, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionName(): PartitionNameContext {
		let _localctx: PartitionNameContext = new PartitionNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 674, MySqlParser.RULE_partitionName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6968;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexColumnName(): IndexColumnNameContext {
		let _localctx: IndexColumnNameContext = new IndexColumnNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 676, MySqlParser.RULE_indexColumnName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6978;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1012, this._ctx) ) {
			case 1:
				{
				this.state = 6970;
				this.uid();
				this.state = 6975;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1011, this._ctx) ) {
				case 1:
					{
					this.state = 6971;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 6972;
					this.decimalLiteral();
					this.state = 6973;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				}
				}
				break;

			case 2:
				{
				this.state = 6977;
				this.expression(0);
				}
				break;
			}
			this.state = 6981;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1013, this._ctx) ) {
			case 1:
				{
				this.state = 6980;
				_localctx._sortType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ASC || _la === MySqlParser.KW_DESC)) {
					_localctx._sortType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userHostPort(): UserHostPortContext {
		let _localctx: UserHostPortContext = new UserHostPortContext(this._ctx, this.state);
		this.enterRule(_localctx, 678, MySqlParser.RULE_userHostPort);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6983;
			this.userAtHost();
			this.state = 6984;
			this.match(MySqlParser.COLON_SYMB);
			this.state = 6985;
			this.decimalLiteral();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userAtHost(): UserAtHostContext {
		let _localctx: UserAtHostContext = new UserAtHostContext(this._ctx, this.state);
		this.enterRule(_localctx, 680, MySqlParser.RULE_userAtHost);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6987;
			this.simpleUserName();
			this.state = 6988;
			this.match(MySqlParser.HOST_IP_ADDRESS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public simpleUserName(): SimpleUserNameContext {
		let _localctx: SimpleUserNameContext = new SimpleUserNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 682, MySqlParser.RULE_simpleUserName);
		try {
			this.state = 6994;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1014, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6990;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6991;
				this.match(MySqlParser.ID);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6992;
				this.match(MySqlParser.KW_ADMIN);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6993;
				this.keywordsCanBeId();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hostName(): HostNameContext {
		let _localctx: HostNameContext = new HostNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 684, MySqlParser.RULE_hostName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6996;
			_la = this._input.LA(1);
			if (!(((((_la - 870)) & ~0x1F) === 0 && ((1 << (_la - 870)) & ((1 << (MySqlParser.AT_SIGN - 870)) | (1 << (MySqlParser.HOST_IP_ADDRESS - 870)) | (1 << (MySqlParser.LOCAL_ID - 870)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userName(): UserNameContext {
		let _localctx: UserNameContext = new UserNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 686, MySqlParser.RULE_userName);
		let _la: number;
		try {
			this.state = 7003;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1016, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6998;
				this.simpleUserName();
				this.state = 7000;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 870)) & ~0x1F) === 0 && ((1 << (_la - 870)) & ((1 << (MySqlParser.AT_SIGN - 870)) | (1 << (MySqlParser.HOST_IP_ADDRESS - 870)) | (1 << (MySqlParser.LOCAL_ID - 870)))) !== 0)) {
					{
					this.state = 6999;
					this.hostName();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7002;
				this.currentUserExpression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public mysqlVariable(): MysqlVariableContext {
		let _localctx: MysqlVariableContext = new MysqlVariableContext(this._ctx, this.state);
		this.enterRule(_localctx, 688, MySqlParser.RULE_mysqlVariable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7005;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.LOCAL_ID || _la === MySqlParser.GLOBAL_ID)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public charsetName(): CharsetNameContext {
		let _localctx: CharsetNameContext = new CharsetNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 690, MySqlParser.RULE_charsetName);
		try {
			this.state = 7011;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1017, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7007;
				this.match(MySqlParser.KW_BINARY);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7008;
				this.charsetNameBase();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7009;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7010;
				this.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public collationName(): CollationNameContext {
		let _localctx: CollationNameContext = new CollationNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 692, MySqlParser.RULE_collationName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7013;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public engineName(): EngineNameContext {
		let _localctx: EngineNameContext = new EngineNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 694, MySqlParser.RULE_engineName);
		try {
			this.state = 7018;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7015;
				this.engineNameBase();
				}
				break;
			case MySqlParser.ID:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7016;
				this.match(MySqlParser.ID);
				}
				break;
			case MySqlParser.STRING_LITERAL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7017;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public engineNameBase(): EngineNameBaseContext {
		let _localctx: EngineNameBaseContext = new EngineNameBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 696, MySqlParser.RULE_engineNameBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7020;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_CONNECT || ((((_la - 797)) & ~0x1F) === 0 && ((1 << (_la - 797)) & ((1 << (MySqlParser.KW_ARCHIVE - 797)) | (1 << (MySqlParser.KW_BLACKHOLE - 797)) | (1 << (MySqlParser.KW_CSV - 797)) | (1 << (MySqlParser.KW_FEDERATED - 797)) | (1 << (MySqlParser.KW_INNODB - 797)) | (1 << (MySqlParser.KW_MEMORY - 797)) | (1 << (MySqlParser.KW_MRG_MYISAM - 797)) | (1 << (MySqlParser.KW_MYISAM - 797)) | (1 << (MySqlParser.KW_NDB - 797)) | (1 << (MySqlParser.KW_NDBCLUSTER - 797)) | (1 << (MySqlParser.KW_PERFORMANCE_SCHEMA - 797)) | (1 << (MySqlParser.KW_TOKUDB - 797)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uuidSet(): UuidSetContext {
		let _localctx: UuidSetContext = new UuidSetContext(this._ctx, this.state);
		this.enterRule(_localctx, 698, MySqlParser.RULE_uuidSet);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7022;
			this.decimalLiteral();
			this.state = 7023;
			this.match(MySqlParser.MINUS);
			this.state = 7024;
			this.decimalLiteral();
			this.state = 7025;
			this.match(MySqlParser.MINUS);
			this.state = 7026;
			this.decimalLiteral();
			this.state = 7027;
			this.match(MySqlParser.MINUS);
			this.state = 7028;
			this.decimalLiteral();
			this.state = 7029;
			this.match(MySqlParser.MINUS);
			this.state = 7030;
			this.decimalLiteral();
			this.state = 7036;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 7031;
				this.match(MySqlParser.COLON_SYMB);
				this.state = 7032;
				this.decimalLiteral();
				this.state = 7033;
				this.match(MySqlParser.MINUS);
				this.state = 7034;
				this.decimalLiteral();
				}
				}
				this.state = 7038;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === MySqlParser.COLON_SYMB);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xid(): XidContext {
		let _localctx: XidContext = new XidContext(this._ctx, this.state);
		this.enterRule(_localctx, 700, MySqlParser.RULE_xid);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7040;
			_localctx._globalTableUid = this.xuidStringId();
			this.state = 7047;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.COMMA) {
				{
				this.state = 7041;
				this.match(MySqlParser.COMMA);
				this.state = 7042;
				_localctx._qualifier = this.xuidStringId();
				this.state = 7045;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.COMMA) {
					{
					this.state = 7043;
					this.match(MySqlParser.COMMA);
					this.state = 7044;
					_localctx._idFormat = this.decimalLiteral();
					}
				}

				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xuidStringId(): XuidStringIdContext {
		let _localctx: XuidStringIdContext = new XuidStringIdContext(this._ctx, this.state);
		this.enterRule(_localctx, 702, MySqlParser.RULE_xuidStringId);
		let _la: number;
		try {
			this.state = 7056;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.STRING_LITERAL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7049;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			case MySqlParser.BIT_STRING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7050;
				this.match(MySqlParser.BIT_STRING);
				}
				break;
			case MySqlParser.HEXADECIMAL_LITERAL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7052;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 7051;
					this.match(MySqlParser.HEXADECIMAL_LITERAL);
					}
					}
					this.state = 7054;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === MySqlParser.HEXADECIMAL_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fullId(): FullIdContext {
		let _localctx: FullIdContext = new FullIdContext(this._ctx, this.state);
		this.enterRule(_localctx, 704, MySqlParser.RULE_fullId);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7058;
			this.uid();
			this.state = 7060;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1024, this._ctx) ) {
			case 1:
				{
				this.state = 7059;
				this.dottedId();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uidList(): UidListContext {
		let _localctx: UidListContext = new UidListContext(this._ctx, this.state);
		this.enterRule(_localctx, 706, MySqlParser.RULE_uidList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7062;
			this.uid();
			this.state = 7067;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7063;
				this.match(MySqlParser.COMMA);
				this.state = 7064;
				this.uid();
				}
				}
				this.state = 7069;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uid(): UidContext {
		let _localctx: UidContext = new UidContext(this._ctx, this.state);
		this.enterRule(_localctx, 708, MySqlParser.RULE_uid);
		try {
			this.state = 7073;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.ID:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7070;
				this.simpleId();
				}
				break;
			case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7071;
				this.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING);
				}
				break;
			case MySqlParser.STRING_LITERAL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7072;
				this.match(MySqlParser.STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public simpleId(): SimpleIdContext {
		let _localctx: SimpleIdContext = new SimpleIdContext(this._ctx, this.state);
		this.enterRule(_localctx, 710, MySqlParser.RULE_simpleId);
		try {
			this.state = 7084;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1027, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7075;
				this.match(MySqlParser.ID);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7076;
				this.charsetNameBase();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7077;
				this.transactionLevelBase();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7078;
				this.engineNameBase();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7079;
				this.privilegesBase();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7080;
				this.intervalTypeBase();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7081;
				this.dataTypeBase();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7082;
				this.keywordsCanBeId();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7083;
				this.scalarFunctionName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dottedId(): DottedIdContext {
		let _localctx: DottedIdContext = new DottedIdContext(this._ctx, this.state);
		this.enterRule(_localctx, 712, MySqlParser.RULE_dottedId);
		try {
			this.state = 7090;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1028, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7086;
				this.match(MySqlParser.DOT);
				this.state = 7087;
				this.match(MySqlParser.ID);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7088;
				this.match(MySqlParser.DOT);
				this.state = 7089;
				this.uid();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decimalLiteral(): DecimalLiteralContext {
		let _localctx: DecimalLiteralContext = new DecimalLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 714, MySqlParser.RULE_decimalLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7092;
			_la = this._input.LA(1);
			if (!(((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & ((1 << (MySqlParser.ZERO_DECIMAL - 871)) | (1 << (MySqlParser.ONE_DECIMAL - 871)) | (1 << (MySqlParser.TWO_DECIMAL - 871)) | (1 << (MySqlParser.THREE_DECIMAL - 871)) | (1 << (MySqlParser.DECIMAL_LITERAL - 871)) | (1 << (MySqlParser.REAL_LITERAL - 871)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fileSizeLiteral(): FileSizeLiteralContext {
		let _localctx: FileSizeLiteralContext = new FileSizeLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 716, MySqlParser.RULE_fileSizeLiteral);
		try {
			this.state = 7096;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.FILESIZE_LITERAL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7094;
				this.match(MySqlParser.FILESIZE_LITERAL);
				}
				break;
			case MySqlParser.ZERO_DECIMAL:
			case MySqlParser.ONE_DECIMAL:
			case MySqlParser.TWO_DECIMAL:
			case MySqlParser.THREE_DECIMAL:
			case MySqlParser.DECIMAL_LITERAL:
			case MySqlParser.REAL_LITERAL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7095;
				this.decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stringLiteral(): StringLiteralContext {
		let _localctx: StringLiteralContext = new StringLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 718, MySqlParser.RULE_stringLiteral);
		let _la: number;
		try {
			let _alt: number;
			this.state = 7121;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1036, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7103;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.STRING_CHARSET_NAME:
					{
					this.state = 7099;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.STRING_CHARSET_NAME) {
						{
						this.state = 7098;
						this.match(MySqlParser.STRING_CHARSET_NAME);
						}
					}

					this.state = 7101;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				case MySqlParser.START_NATIONAL_STRING_LITERAL:
					{
					this.state = 7102;
					this.match(MySqlParser.START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 7106;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 7105;
						this.match(MySqlParser.STRING_LITERAL);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 7108;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 1032, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7115;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case MySqlParser.STRING_LITERAL:
				case MySqlParser.STRING_CHARSET_NAME:
					{
					this.state = 7111;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === MySqlParser.STRING_CHARSET_NAME) {
						{
						this.state = 7110;
						this.match(MySqlParser.STRING_CHARSET_NAME);
						}
					}

					this.state = 7113;
					this.match(MySqlParser.STRING_LITERAL);
					}
					break;
				case MySqlParser.START_NATIONAL_STRING_LITERAL:
					{
					this.state = 7114;
					this.match(MySqlParser.START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 7119;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1035, this._ctx) ) {
				case 1:
					{
					this.state = 7117;
					this.match(MySqlParser.KW_COLLATE);
					this.state = 7118;
					this.collationName();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public booleanLiteral(): BooleanLiteralContext {
		let _localctx: BooleanLiteralContext = new BooleanLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 720, MySqlParser.RULE_booleanLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7123;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_FALSE || _la === MySqlParser.KW_TRUE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hexadecimalLiteral(): HexadecimalLiteralContext {
		let _localctx: HexadecimalLiteralContext = new HexadecimalLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 722, MySqlParser.RULE_hexadecimalLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7126;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.STRING_CHARSET_NAME) {
				{
				this.state = 7125;
				this.match(MySqlParser.STRING_CHARSET_NAME);
				}
			}

			this.state = 7128;
			this.match(MySqlParser.HEXADECIMAL_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public nullNotnull(): NullNotnullContext {
		let _localctx: NullNotnullContext = new NullNotnullContext(this._ctx, this.state);
		this.enterRule(_localctx, 724, MySqlParser.RULE_nullNotnull);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7131;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_NOT) {
				{
				this.state = 7130;
				this.match(MySqlParser.KW_NOT);
				}
			}

			this.state = 7133;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_NULL_LITERAL || _la === MySqlParser.NULL_SPEC_LITERAL)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constant(): ConstantContext {
		let _localctx: ConstantContext = new ConstantContext(this._ctx, this.state);
		this.enterRule(_localctx, 726, MySqlParser.RULE_constant);
		let _la: number;
		try {
			this.state = 7147;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1040, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7135;
				this.stringLiteral();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7136;
				this.decimalLiteral();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7137;
				this.match(MySqlParser.MINUS);
				this.state = 7138;
				this.decimalLiteral();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7139;
				this.hexadecimalLiteral();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7140;
				this.booleanLiteral();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7141;
				this.match(MySqlParser.REAL_LITERAL);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7142;
				this.match(MySqlParser.BIT_STRING);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7144;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 7143;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 7146;
				_localctx._nullLiteral = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_NULL_LITERAL || _la === MySqlParser.NULL_SPEC_LITERAL)) {
					_localctx._nullLiteral = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dataType(): DataTypeContext {
		let _localctx: DataTypeContext = new DataTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 728, MySqlParser.RULE_dataType);
		let _la: number;
		try {
			this.state = 7275;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1069, this._ctx) ) {
			case 1:
				_localctx = new StringDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7149;
				(_localctx as StringDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CHARACTER || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & ((1 << (MySqlParser.KW_CHAR - 224)) | (1 << (MySqlParser.KW_VARCHAR - 224)) | (1 << (MySqlParser.KW_NVARCHAR - 224)) | (1 << (MySqlParser.KW_LONG - 224)) | (1 << (MySqlParser.KW_TINYTEXT - 224)) | (1 << (MySqlParser.KW_TEXT - 224)) | (1 << (MySqlParser.KW_MEDIUMTEXT - 224)) | (1 << (MySqlParser.KW_LONGTEXT - 224)))) !== 0) || _la === MySqlParser.KW_NCHAR)) {
					(_localctx as StringDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7151;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_VARYING) {
					{
					this.state = 7150;
					this.match(MySqlParser.KW_VARYING);
					}
				}

				this.state = 7154;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1042, this._ctx) ) {
				case 1:
					{
					this.state = 7153;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 7157;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1043, this._ctx) ) {
				case 1:
					{
					this.state = 7156;
					this.match(MySqlParser.KW_BINARY);
					}
					break;
				}
				this.state = 7162;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CHARACTER || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_CHARSET) {
					{
					this.state = 7159;
					this.charSet();
					this.state = 7160;
					this.charsetName();
					}
				}

				this.state = 7167;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1045, this._ctx) ) {
				case 1:
					{
					this.state = 7164;
					this.match(MySqlParser.KW_COLLATE);
					this.state = 7165;
					this.collationName();
					}
					break;

				case 2:
					{
					this.state = 7166;
					this.match(MySqlParser.KW_BINARY);
					}
					break;
				}
				}
				break;

			case 2:
				_localctx = new NationalVaryingStringDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7169;
				this.match(MySqlParser.KW_NATIONAL);
				this.state = 7170;
				(_localctx as NationalVaryingStringDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CHARACTER || _la === MySqlParser.KW_CHAR)) {
					(_localctx as NationalVaryingStringDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7171;
				this.match(MySqlParser.KW_VARYING);
				this.state = 7173;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1046, this._ctx) ) {
				case 1:
					{
					this.state = 7172;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 7176;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_BINARY) {
					{
					this.state = 7175;
					this.match(MySqlParser.KW_BINARY);
					}
				}

				}
				break;

			case 3:
				_localctx = new NationalStringDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7178;
				this.match(MySqlParser.KW_NATIONAL);
				this.state = 7179;
				(_localctx as NationalStringDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_CHARACTER || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_VARCHAR)) {
					(_localctx as NationalStringDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7181;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1048, this._ctx) ) {
				case 1:
					{
					this.state = 7180;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 7184;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_BINARY) {
					{
					this.state = 7183;
					this.match(MySqlParser.KW_BINARY);
					}
				}

				}
				break;

			case 4:
				_localctx = new NationalStringDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7186;
				this.match(MySqlParser.KW_NCHAR);
				this.state = 7187;
				(_localctx as NationalStringDataTypeContext)._typeName = this.match(MySqlParser.KW_VARCHAR);
				this.state = 7189;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1050, this._ctx) ) {
				case 1:
					{
					this.state = 7188;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 7192;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_BINARY) {
					{
					this.state = 7191;
					this.match(MySqlParser.KW_BINARY);
					}
				}

				}
				break;

			case 5:
				_localctx = new DimensionDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7194;
				(_localctx as DimensionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(((((_la - 198)) & ~0x1F) === 0 && ((1 << (_la - 198)) & ((1 << (MySqlParser.KW_TINYINT - 198)) | (1 << (MySqlParser.KW_SMALLINT - 198)) | (1 << (MySqlParser.KW_MEDIUMINT - 198)) | (1 << (MySqlParser.KW_MIDDLEINT - 198)) | (1 << (MySqlParser.KW_INT - 198)) | (1 << (MySqlParser.KW_INT1 - 198)) | (1 << (MySqlParser.KW_INT2 - 198)) | (1 << (MySqlParser.KW_INT3 - 198)) | (1 << (MySqlParser.KW_INT4 - 198)) | (1 << (MySqlParser.KW_INT8 - 198)) | (1 << (MySqlParser.KW_INTEGER - 198)) | (1 << (MySqlParser.KW_BIGINT - 198)))) !== 0))) {
					(_localctx as DimensionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7196;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1052, this._ctx) ) {
				case 1:
					{
					this.state = 7195;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 7201;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED) {
					{
					{
					this.state = 7198;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					}
					this.state = 7203;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 6:
				_localctx = new DimensionDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7204;
				(_localctx as DimensionDataTypeContext)._typeName = this.match(MySqlParser.KW_REAL);
				this.state = 7206;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1054, this._ctx) ) {
				case 1:
					{
					this.state = 7205;
					this.lengthTwoDimension();
					}
					break;
				}
				this.state = 7211;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED) {
					{
					{
					this.state = 7208;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					}
					this.state = 7213;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 7:
				_localctx = new DimensionDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7214;
				(_localctx as DimensionDataTypeContext)._typeName = this.match(MySqlParser.KW_DOUBLE);
				this.state = 7216;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_PRECISION) {
					{
					this.state = 7215;
					this.match(MySqlParser.KW_PRECISION);
					}
				}

				this.state = 7219;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1057, this._ctx) ) {
				case 1:
					{
					this.state = 7218;
					this.lengthTwoDimension();
					}
					break;
				}
				this.state = 7224;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED) {
					{
					{
					this.state = 7221;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					}
					this.state = 7226;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 8:
				_localctx = new DimensionDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7227;
				(_localctx as DimensionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(((((_la - 213)) & ~0x1F) === 0 && ((1 << (_la - 213)) & ((1 << (MySqlParser.KW_FLOAT - 213)) | (1 << (MySqlParser.KW_FLOAT4 - 213)) | (1 << (MySqlParser.KW_FLOAT8 - 213)) | (1 << (MySqlParser.KW_DECIMAL - 213)) | (1 << (MySqlParser.KW_DEC - 213)) | (1 << (MySqlParser.KW_NUMERIC - 213)))) !== 0) || _la === MySqlParser.KW_FIXED)) {
					(_localctx as DimensionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7229;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1059, this._ctx) ) {
				case 1:
					{
					this.state = 7228;
					this.lengthTwoOptionalDimension();
					}
					break;
				}
				this.state = 7234;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED) {
					{
					{
					this.state = 7231;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_ZEROFILL || _la === MySqlParser.KW_SIGNED)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					}
					this.state = 7236;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 9:
				_localctx = new SimpleDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7237;
				(_localctx as SimpleDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TINYBLOB - 219)) | (1 << (MySqlParser.KW_MEDIUMBLOB - 219)) | (1 << (MySqlParser.KW_LONGBLOB - 219)) | (1 << (MySqlParser.KW_SERIAL - 219)))) !== 0) || _la === MySqlParser.KW_BOOL || _la === MySqlParser.KW_BOOLEAN)) {
					(_localctx as SimpleDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 10:
				_localctx = new DimensionDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7238;
				(_localctx as DimensionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (MySqlParser.KW_TIME - 220)) | (1 << (MySqlParser.KW_TIMESTAMP - 220)) | (1 << (MySqlParser.KW_DATETIME - 220)) | (1 << (MySqlParser.KW_YEAR - 220)) | (1 << (MySqlParser.KW_BINARY - 220)) | (1 << (MySqlParser.KW_VARBINARY - 220)) | (1 << (MySqlParser.KW_BLOB - 220)))) !== 0) || _la === MySqlParser.KW_BIT)) {
					(_localctx as DimensionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7240;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1061, this._ctx) ) {
				case 1:
					{
					this.state = 7239;
					this.lengthOneDimension();
					}
					break;
				}
				}
				break;

			case 11:
				_localctx = new CollectionDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7242;
				(_localctx as CollectionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_SET || _la === MySqlParser.KW_ENUM)) {
					(_localctx as CollectionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7243;
				this.collectionOptions();
				this.state = 7245;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_BINARY) {
					{
					this.state = 7244;
					this.match(MySqlParser.KW_BINARY);
					}
				}

				this.state = 7250;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CHARACTER || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_CHARSET) {
					{
					this.state = 7247;
					this.charSet();
					this.state = 7248;
					this.charsetName();
					}
				}

				}
				break;

			case 12:
				_localctx = new SpatialDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 7252;
				(_localctx as SpatialDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_JSON || ((((_la - 813)) & ~0x1F) === 0 && ((1 << (_la - 813)) & ((1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 813)) | (1 << (MySqlParser.KW_GEOMCOLLECTION - 813)) | (1 << (MySqlParser.KW_GEOMETRY - 813)) | (1 << (MySqlParser.KW_LINESTRING - 813)) | (1 << (MySqlParser.KW_MULTILINESTRING - 813)) | (1 << (MySqlParser.KW_MULTIPOINT - 813)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 813)) | (1 << (MySqlParser.KW_POINT - 813)) | (1 << (MySqlParser.KW_POLYGON - 813)))) !== 0))) {
					(_localctx as SpatialDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7255;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_SRID) {
					{
					this.state = 7253;
					this.match(MySqlParser.KW_SRID);
					this.state = 7254;
					this.decimalLiteral();
					}
				}

				}
				break;

			case 13:
				_localctx = new LongVarcharDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 7257;
				(_localctx as LongVarcharDataTypeContext)._typeName = this.match(MySqlParser.KW_LONG);
				this.state = 7259;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_VARCHAR) {
					{
					this.state = 7258;
					this.match(MySqlParser.KW_VARCHAR);
					}
				}

				this.state = 7262;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_BINARY) {
					{
					this.state = 7261;
					this.match(MySqlParser.KW_BINARY);
					}
				}

				this.state = 7267;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CHARACTER || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_CHARSET) {
					{
					this.state = 7264;
					this.charSet();
					this.state = 7265;
					this.charsetName();
					}
				}

				this.state = 7271;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1068, this._ctx) ) {
				case 1:
					{
					this.state = 7269;
					this.match(MySqlParser.KW_COLLATE);
					this.state = 7270;
					this.collationName();
					}
					break;
				}
				}
				break;

			case 14:
				_localctx = new LongVarbinaryDataTypeContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 7273;
				this.match(MySqlParser.KW_LONG);
				this.state = 7274;
				this.match(MySqlParser.KW_VARBINARY);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public collectionOptions(): CollectionOptionsContext {
		let _localctx: CollectionOptionsContext = new CollectionOptionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 730, MySqlParser.RULE_collectionOptions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7277;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7278;
			this.match(MySqlParser.STRING_LITERAL);
			this.state = 7283;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7279;
				this.match(MySqlParser.COMMA);
				this.state = 7280;
				this.match(MySqlParser.STRING_LITERAL);
				}
				}
				this.state = 7285;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 7286;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public convertedDataType(): ConvertedDataTypeContext {
		let _localctx: ConvertedDataTypeContext = new ConvertedDataTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 732, MySqlParser.RULE_convertedDataType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7310;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_NCHAR:
				{
				this.state = 7288;
				_localctx._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_BINARY || _la === MySqlParser.KW_NCHAR)) {
					_localctx._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7290;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 7289;
					this.lengthOneDimension();
					}
				}

				}
				break;
			case MySqlParser.KW_CHAR:
				{
				this.state = 7292;
				_localctx._typeName = this.match(MySqlParser.KW_CHAR);
				this.state = 7294;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 7293;
					this.lengthOneDimension();
					}
				}

				this.state = 7299;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_CHARACTER || _la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_CHARSET) {
					{
					this.state = 7296;
					this.charSet();
					this.state = 7297;
					this.charsetName();
					}
				}

				}
				break;
			case MySqlParser.KW_INT:
			case MySqlParser.KW_INTEGER:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_JSON:
				{
				this.state = 7301;
				_localctx._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(((((_la - 202)) & ~0x1F) === 0 && ((1 << (_la - 202)) & ((1 << (MySqlParser.KW_INT - 202)) | (1 << (MySqlParser.KW_INTEGER - 202)) | (1 << (MySqlParser.KW_DATE - 202)) | (1 << (MySqlParser.KW_TIME - 202)) | (1 << (MySqlParser.KW_DATETIME - 202)))) !== 0) || _la === MySqlParser.KW_JSON)) {
					_localctx._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case MySqlParser.KW_DECIMAL:
			case MySqlParser.KW_DEC:
				{
				this.state = 7302;
				_localctx._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_DECIMAL || _la === MySqlParser.KW_DEC)) {
					_localctx._typeName = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7304;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.LR_BRACKET) {
					{
					this.state = 7303;
					this.lengthTwoOptionalDimension();
					}
				}

				}
				break;
			case MySqlParser.KW_UNSIGNED:
			case MySqlParser.KW_SIGNED:
				{
				this.state = 7306;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_UNSIGNED || _la === MySqlParser.KW_SIGNED)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7308;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_INT || _la === MySqlParser.KW_INTEGER) {
					{
					this.state = 7307;
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_INT || _la === MySqlParser.KW_INTEGER)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 7313;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ARRAY) {
				{
				this.state = 7312;
				this.match(MySqlParser.KW_ARRAY);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lengthOneDimension(): LengthOneDimensionContext {
		let _localctx: LengthOneDimensionContext = new LengthOneDimensionContext(this._ctx, this.state);
		this.enterRule(_localctx, 734, MySqlParser.RULE_lengthOneDimension);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7315;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7316;
			this.decimalLiteral();
			this.state = 7317;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lengthTwoDimension(): LengthTwoDimensionContext {
		let _localctx: LengthTwoDimensionContext = new LengthTwoDimensionContext(this._ctx, this.state);
		this.enterRule(_localctx, 736, MySqlParser.RULE_lengthTwoDimension);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7319;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7320;
			this.decimalLiteral();
			this.state = 7321;
			this.match(MySqlParser.COMMA);
			this.state = 7322;
			this.decimalLiteral();
			this.state = 7323;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext {
		let _localctx: LengthTwoOptionalDimensionContext = new LengthTwoOptionalDimensionContext(this._ctx, this.state);
		this.enterRule(_localctx, 738, MySqlParser.RULE_lengthTwoOptionalDimension);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7325;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7326;
			this.decimalLiteral();
			this.state = 7329;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.COMMA) {
				{
				this.state = 7327;
				this.match(MySqlParser.COMMA);
				this.state = 7328;
				this.decimalLiteral();
				}
			}

			this.state = 7331;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indexColumnNames(): IndexColumnNamesContext {
		let _localctx: IndexColumnNamesContext = new IndexColumnNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 740, MySqlParser.RULE_indexColumnNames);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7333;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7334;
			this.indexColumnName();
			this.state = 7339;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7335;
				this.match(MySqlParser.COMMA);
				this.state = 7336;
				this.indexColumnName();
				}
				}
				this.state = 7341;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 7342;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressions(): ExpressionsContext {
		let _localctx: ExpressionsContext = new ExpressionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 742, MySqlParser.RULE_expressions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7344;
			this.expression(0);
			this.state = 7349;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7345;
				this.match(MySqlParser.COMMA);
				this.state = 7346;
				this.expression(0);
				}
				}
				this.state = 7351;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public valuesOrValueList(): ValuesOrValueListContext {
		let _localctx: ValuesOrValueListContext = new ValuesOrValueListContext(this._ctx, this.state);
		this.enterRule(_localctx, 744, MySqlParser.RULE_valuesOrValueList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7352;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_VALUES || _la === MySqlParser.KW_VALUE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 7353;
			this.expressionsWithDefaults();
			this.state = 7358;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7354;
				this.match(MySqlParser.COMMA);
				this.state = 7355;
				this.expressionsWithDefaults();
				}
				}
				this.state = 7360;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionsWithDefaults(): ExpressionsWithDefaultsContext {
		let _localctx: ExpressionsWithDefaultsContext = new ExpressionsWithDefaultsContext(this._ctx, this.state);
		this.enterRule(_localctx, 746, MySqlParser.RULE_expressionsWithDefaults);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7361;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7362;
			this.expressionOrDefault();
			this.state = 7367;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7363;
				this.match(MySqlParser.COMMA);
				this.state = 7364;
				this.expressionOrDefault();
				}
				}
				this.state = 7369;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 7370;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionOrDefault(): ExpressionOrDefaultContext {
		let _localctx: ExpressionOrDefaultContext = new ExpressionOrDefaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 748, MySqlParser.RULE_expressionOrDefault);
		try {
			this.state = 7374;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1083, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7372;
				this.expression(0);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7373;
				this.match(MySqlParser.KW_DEFAULT);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constants(): ConstantsContext {
		let _localctx: ConstantsContext = new ConstantsContext(this._ctx, this.state);
		this.enterRule(_localctx, 750, MySqlParser.RULE_constants);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7376;
			this.constant();
			this.state = 7381;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7377;
				this.match(MySqlParser.COMMA);
				this.state = 7378;
				this.constant();
				}
				}
				this.state = 7383;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public simpleStrings(): SimpleStringsContext {
		let _localctx: SimpleStringsContext = new SimpleStringsContext(this._ctx, this.state);
		this.enterRule(_localctx, 752, MySqlParser.RULE_simpleStrings);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7384;
			this.match(MySqlParser.STRING_LITERAL);
			this.state = 7389;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7385;
				this.match(MySqlParser.COMMA);
				this.state = 7386;
				this.match(MySqlParser.STRING_LITERAL);
				}
				}
				this.state = 7391;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userVariables(): UserVariablesContext {
		let _localctx: UserVariablesContext = new UserVariablesContext(this._ctx, this.state);
		this.enterRule(_localctx, 754, MySqlParser.RULE_userVariables);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7392;
			this.match(MySqlParser.LOCAL_ID);
			this.state = 7397;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7393;
				this.match(MySqlParser.COMMA);
				this.state = 7394;
				this.match(MySqlParser.LOCAL_ID);
				}
				}
				this.state = 7399;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public defaultValue(): DefaultValueContext {
		let _localctx: DefaultValueContext = new DefaultValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 756, MySqlParser.RULE_defaultValue);
		try {
			this.state = 7426;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1089, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7400;
				this.match(MySqlParser.KW_NULL_LITERAL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7401;
				this.match(MySqlParser.KW_CAST);
				this.state = 7402;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7403;
				this.expression(0);
				this.state = 7404;
				this.match(MySqlParser.KW_AS);
				this.state = 7405;
				this.convertedDataType();
				this.state = 7406;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7409;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1087, this._ctx) ) {
				case 1:
					{
					this.state = 7408;
					this.unaryOperator();
					}
					break;
				}
				this.state = 7411;
				this.constant();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7412;
				this.currentTimestamp();
				this.state = 7416;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1088, this._ctx) ) {
				case 1:
					{
					this.state = 7413;
					this.match(MySqlParser.KW_ON);
					this.state = 7414;
					this.match(MySqlParser.KW_UPDATE);
					this.state = 7415;
					this.currentTimestamp();
					}
					break;
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7418;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7419;
				this.expression(0);
				this.state = 7420;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7422;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7423;
				this.fullId();
				this.state = 7424;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public currentTimestamp(): CurrentTimestampContext {
		let _localctx: CurrentTimestampContext = new CurrentTimestampContext(this._ctx, this.state);
		this.enterRule(_localctx, 758, MySqlParser.RULE_currentTimestamp);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7442;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_LOCALTIMESTAMP:
				{
				this.state = 7428;
				_la = this._input.LA(1);
				if (!(((((_la - 287)) & ~0x1F) === 0 && ((1 << (_la - 287)) & ((1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 287)) | (1 << (MySqlParser.KW_LOCALTIME - 287)) | (1 << (MySqlParser.KW_LOCALTIMESTAMP - 287)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7434;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1091, this._ctx) ) {
				case 1:
					{
					this.state = 7429;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 7431;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & ((1 << (MySqlParser.ZERO_DECIMAL - 871)) | (1 << (MySqlParser.ONE_DECIMAL - 871)) | (1 << (MySqlParser.TWO_DECIMAL - 871)) | (1 << (MySqlParser.THREE_DECIMAL - 871)) | (1 << (MySqlParser.DECIMAL_LITERAL - 871)) | (1 << (MySqlParser.REAL_LITERAL - 871)))) !== 0)) {
						{
						this.state = 7430;
						this.decimalLiteral();
						}
					}

					this.state = 7433;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_NOW:
				{
				this.state = 7436;
				this.match(MySqlParser.KW_NOW);
				this.state = 7437;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7439;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & ((1 << (MySqlParser.ZERO_DECIMAL - 871)) | (1 << (MySqlParser.ONE_DECIMAL - 871)) | (1 << (MySqlParser.TWO_DECIMAL - 871)) | (1 << (MySqlParser.THREE_DECIMAL - 871)) | (1 << (MySqlParser.DECIMAL_LITERAL - 871)) | (1 << (MySqlParser.REAL_LITERAL - 871)))) !== 0)) {
					{
					this.state = 7438;
					this.decimalLiteral();
					}
				}

				this.state = 7441;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ifExists(): IfExistsContext {
		let _localctx: IfExistsContext = new IfExistsContext(this._ctx, this.state);
		this.enterRule(_localctx, 760, MySqlParser.RULE_ifExists);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7444;
			this.match(MySqlParser.KW_IF);
			this.state = 7445;
			this.match(MySqlParser.KW_EXISTS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ifNotExists(): IfNotExistsContext {
		let _localctx: IfNotExistsContext = new IfNotExistsContext(this._ctx, this.state);
		this.enterRule(_localctx, 762, MySqlParser.RULE_ifNotExists);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7447;
			this.match(MySqlParser.KW_IF);
			this.state = 7448;
			this.match(MySqlParser.KW_NOT);
			this.state = 7449;
			this.match(MySqlParser.KW_EXISTS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orReplace(): OrReplaceContext {
		let _localctx: OrReplaceContext = new OrReplaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 764, MySqlParser.RULE_orReplace);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7451;
			this.match(MySqlParser.KW_OR);
			this.state = 7452;
			this.match(MySqlParser.KW_REPLACE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionCall(): FunctionCallContext {
		let _localctx: FunctionCallContext = new FunctionCallContext(this._ctx, this.state);
		this.enterRule(_localctx, 766, MySqlParser.RULE_functionCall);
		try {
			this.state = 7472;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1096, this._ctx) ) {
			case 1:
				_localctx = new SpecificFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7454;
				this.specificFunction();
				}
				break;

			case 2:
				_localctx = new AggregateFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7455;
				this.aggregateWindowedFunction();
				}
				break;

			case 3:
				_localctx = new NonAggregateFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7456;
				this.nonAggregateWindowedFunction();
				}
				break;

			case 4:
				_localctx = new ScalarFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7457;
				this.scalarFunctionName();
				this.state = 7458;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7460;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1094, this._ctx) ) {
				case 1:
					{
					this.state = 7459;
					this.functionArgs();
					}
					break;
				}
				this.state = 7462;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 5:
				_localctx = new UdfFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7464;
				this.functionName();
				this.state = 7465;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7467;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1095, this._ctx) ) {
				case 1:
					{
					this.state = 7466;
					this.functionArgs();
					}
					break;
				}
				this.state = 7469;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 6:
				_localctx = new PasswordFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7471;
				this.passwordFunctionClause();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public specificFunction(): SpecificFunctionContext {
		let _localctx: SpecificFunctionContext = new SpecificFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 768, MySqlParser.RULE_specificFunction);
		let _la: number;
		try {
			this.state = 7653;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1120, this._ctx) ) {
			case 1:
				_localctx = new SimpleFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7474;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_SCHEMA || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & ((1 << (MySqlParser.KW_CURRENT_DATE - 285)) | (1 << (MySqlParser.KW_CURRENT_TIME - 285)) | (1 << (MySqlParser.KW_CURRENT_TIMESTAMP - 285)) | (1 << (MySqlParser.KW_LOCALTIME - 285)) | (1 << (MySqlParser.KW_UTC_TIMESTAMP - 285)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7477;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1097, this._ctx) ) {
				case 1:
					{
					this.state = 7475;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 7476;
					this.match(MySqlParser.RR_BRACKET);
					}
					break;
				}
				}
				break;

			case 2:
				_localctx = new CurrentUserContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7479;
				this.currentUserExpression();
				}
				break;

			case 3:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7480;
				this.match(MySqlParser.KW_CONVERT);
				this.state = 7481;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7482;
				this.expression(0);
				this.state = 7483;
				(_localctx as DataTypeFunctionCallContext)._separator = this.match(MySqlParser.COMMA);
				this.state = 7484;
				this.convertedDataType();
				this.state = 7485;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 4:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7487;
				this.match(MySqlParser.KW_CONVERT);
				this.state = 7488;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7489;
				this.expression(0);
				this.state = 7490;
				this.match(MySqlParser.KW_USING);
				this.state = 7491;
				this.charsetName();
				this.state = 7492;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 5:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7494;
				this.match(MySqlParser.KW_CAST);
				this.state = 7495;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7496;
				this.expression(0);
				this.state = 7497;
				this.match(MySqlParser.KW_AS);
				this.state = 7498;
				this.convertedDataType();
				this.state = 7499;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 6:
				_localctx = new ValuesFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7501;
				this.match(MySqlParser.KW_VALUES);
				this.state = 7502;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7503;
				this.columnName();
				this.state = 7504;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 7:
				_localctx = new CaseExpressionFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7506;
				this.match(MySqlParser.KW_CASE);
				this.state = 7507;
				this.expression(0);
				this.state = 7509;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 7508;
					this.caseFuncAlternative();
					}
					}
					this.state = 7511;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === MySqlParser.KW_WHEN);
				this.state = 7515;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ELSE) {
					{
					this.state = 7513;
					this.match(MySqlParser.KW_ELSE);
					this.state = 7514;
					(_localctx as CaseExpressionFunctionCallContext)._elseArg = this.functionArg();
					}
				}

				this.state = 7517;
				this.match(MySqlParser.KW_END);
				}
				break;

			case 8:
				_localctx = new CaseFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7519;
				this.match(MySqlParser.KW_CASE);
				this.state = 7521;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 7520;
					this.caseFuncAlternative();
					}
					}
					this.state = 7523;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === MySqlParser.KW_WHEN);
				this.state = 7527;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ELSE) {
					{
					this.state = 7525;
					this.match(MySqlParser.KW_ELSE);
					this.state = 7526;
					(_localctx as CaseFunctionCallContext)._elseArg = this.functionArg();
					}
				}

				this.state = 7529;
				this.match(MySqlParser.KW_END);
				}
				break;

			case 9:
				_localctx = new CharFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7531;
				this.match(MySqlParser.KW_CHAR);
				this.state = 7532;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7533;
				this.functionArgs();
				this.state = 7536;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_USING) {
					{
					this.state = 7534;
					this.match(MySqlParser.KW_USING);
					this.state = 7535;
					this.charsetName();
					}
				}

				this.state = 7538;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 10:
				_localctx = new PositionFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7540;
				this.match(MySqlParser.KW_POSITION);
				this.state = 7541;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7544;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1103, this._ctx) ) {
				case 1:
					{
					this.state = 7542;
					(_localctx as PositionFunctionCallContext)._positionString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7543;
					(_localctx as PositionFunctionCallContext)._positionExpression = this.expression(0);
					}
					break;
				}
				this.state = 7546;
				this.match(MySqlParser.KW_IN);
				this.state = 7549;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1104, this._ctx) ) {
				case 1:
					{
					this.state = 7547;
					(_localctx as PositionFunctionCallContext)._inString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7548;
					(_localctx as PositionFunctionCallContext)._inExpression = this.expression(0);
					}
					break;
				}
				this.state = 7551;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 11:
				_localctx = new SubstrFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7553;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_SUBSTR || _la === MySqlParser.KW_SUBSTRING)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7554;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7557;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1105, this._ctx) ) {
				case 1:
					{
					this.state = 7555;
					(_localctx as SubstrFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7556;
					(_localctx as SubstrFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 7559;
				this.match(MySqlParser.KW_FROM);
				this.state = 7562;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1106, this._ctx) ) {
				case 1:
					{
					this.state = 7560;
					(_localctx as SubstrFunctionCallContext)._fromDecimal = this.decimalLiteral();
					}
					break;

				case 2:
					{
					this.state = 7561;
					(_localctx as SubstrFunctionCallContext)._fromExpression = this.expression(0);
					}
					break;
				}
				this.state = 7569;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_FOR) {
					{
					this.state = 7564;
					this.match(MySqlParser.KW_FOR);
					this.state = 7567;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1107, this._ctx) ) {
					case 1:
						{
						this.state = 7565;
						(_localctx as SubstrFunctionCallContext)._forDecimal = this.decimalLiteral();
						}
						break;

					case 2:
						{
						this.state = 7566;
						(_localctx as SubstrFunctionCallContext)._forExpression = this.expression(0);
						}
						break;
					}
					}
				}

				this.state = 7571;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 12:
				_localctx = new TrimFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 7573;
				this.match(MySqlParser.KW_TRIM);
				this.state = 7574;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7575;
				(_localctx as TrimFunctionCallContext)._positioinForm = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_BOTH || _la === MySqlParser.KW_LEADING || _la === MySqlParser.KW_TRAILING)) {
					(_localctx as TrimFunctionCallContext)._positioinForm = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7578;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1109, this._ctx) ) {
				case 1:
					{
					this.state = 7576;
					(_localctx as TrimFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7577;
					(_localctx as TrimFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 7580;
				this.match(MySqlParser.KW_FROM);
				this.state = 7583;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1110, this._ctx) ) {
				case 1:
					{
					this.state = 7581;
					(_localctx as TrimFunctionCallContext)._fromString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7582;
					(_localctx as TrimFunctionCallContext)._fromExpression = this.expression(0);
					}
					break;
				}
				this.state = 7585;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 13:
				_localctx = new TrimFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 7587;
				this.match(MySqlParser.KW_TRIM);
				this.state = 7588;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7591;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1111, this._ctx) ) {
				case 1:
					{
					this.state = 7589;
					(_localctx as TrimFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7590;
					(_localctx as TrimFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 7593;
				this.match(MySqlParser.KW_FROM);
				this.state = 7596;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1112, this._ctx) ) {
				case 1:
					{
					this.state = 7594;
					(_localctx as TrimFunctionCallContext)._fromString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7595;
					(_localctx as TrimFunctionCallContext)._fromExpression = this.expression(0);
					}
					break;
				}
				this.state = 7598;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 14:
				_localctx = new WeightFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 7600;
				this.match(MySqlParser.KW_WEIGHT_STRING);
				this.state = 7601;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7604;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1113, this._ctx) ) {
				case 1:
					{
					this.state = 7602;
					this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7603;
					this.expression(0);
					}
					break;
				}
				this.state = 7612;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_AS) {
					{
					this.state = 7606;
					this.match(MySqlParser.KW_AS);
					this.state = 7607;
					(_localctx as WeightFunctionCallContext)._stringFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_CHAR || _la === MySqlParser.KW_BINARY)) {
						(_localctx as WeightFunctionCallContext)._stringFormat = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 7608;
					this.match(MySqlParser.LR_BRACKET);
					this.state = 7609;
					this.decimalLiteral();
					this.state = 7610;
					this.match(MySqlParser.RR_BRACKET);
					}
				}

				this.state = 7615;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_LEVEL) {
					{
					this.state = 7614;
					this.levelsInWeightString();
					}
				}

				this.state = 7617;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 15:
				_localctx = new ExtractFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 7619;
				this.match(MySqlParser.KW_EXTRACT);
				this.state = 7620;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7621;
				this.intervalType();
				this.state = 7622;
				this.match(MySqlParser.KW_FROM);
				this.state = 7625;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1116, this._ctx) ) {
				case 1:
					{
					this.state = 7623;
					(_localctx as ExtractFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;

				case 2:
					{
					this.state = 7624;
					(_localctx as ExtractFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 7627;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 16:
				_localctx = new GetFormatFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 7629;
				this.match(MySqlParser.KW_GET_FORMAT);
				this.state = 7630;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7631;
				(_localctx as GetFormatFunctionCallContext)._datetimeFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)))) !== 0))) {
					(_localctx as GetFormatFunctionCallContext)._datetimeFormat = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7632;
				this.match(MySqlParser.COMMA);
				this.state = 7633;
				this.stringLiteral();
				this.state = 7634;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 17:
				_localctx = new JsonValueFunctionCallContext(_localctx);
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 7636;
				this.match(MySqlParser.KW_JSON_VALUE);
				this.state = 7637;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7638;
				this.expression(0);
				this.state = 7639;
				this.match(MySqlParser.COMMA);
				this.state = 7640;
				this.expression(0);
				this.state = 7643;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_RETURNING) {
					{
					this.state = 7641;
					this.match(MySqlParser.KW_RETURNING);
					this.state = 7642;
					this.convertedDataType();
					}
				}

				this.state = 7646;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1118, this._ctx) ) {
				case 1:
					{
					this.state = 7645;
					this.jsonOnEmpty();
					}
					break;
				}
				this.state = 7649;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_DEFAULT || _la === MySqlParser.KW_NULL_LITERAL || _la === MySqlParser.KW_ERROR) {
					{
					this.state = 7648;
					this.jsonOnError();
					}
				}

				this.state = 7651;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public caseFuncAlternative(): CaseFuncAlternativeContext {
		let _localctx: CaseFuncAlternativeContext = new CaseFuncAlternativeContext(this._ctx, this.state);
		this.enterRule(_localctx, 770, MySqlParser.RULE_caseFuncAlternative);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7655;
			this.match(MySqlParser.KW_WHEN);
			this.state = 7656;
			_localctx._condition = this.functionArg();
			this.state = 7657;
			this.match(MySqlParser.KW_THEN);
			this.state = 7658;
			_localctx._consequent = this.functionArg();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public levelsInWeightString(): LevelsInWeightStringContext {
		let _localctx: LevelsInWeightStringContext = new LevelsInWeightStringContext(this._ctx, this.state);
		this.enterRule(_localctx, 772, MySqlParser.RULE_levelsInWeightString);
		let _la: number;
		try {
			this.state = 7674;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1122, this._ctx) ) {
			case 1:
				_localctx = new LevelWeightListContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7660;
				this.match(MySqlParser.KW_LEVEL);
				this.state = 7661;
				this.levelInWeightListElement();
				this.state = 7666;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 7662;
					this.match(MySqlParser.COMMA);
					this.state = 7663;
					this.levelInWeightListElement();
					}
					}
					this.state = 7668;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 2:
				_localctx = new LevelWeightRangeContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7669;
				this.match(MySqlParser.KW_LEVEL);
				this.state = 7670;
				(_localctx as LevelWeightRangeContext)._firstLevel = this.decimalLiteral();
				this.state = 7671;
				this.match(MySqlParser.MINUS);
				this.state = 7672;
				(_localctx as LevelWeightRangeContext)._lastLevel = this.decimalLiteral();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public levelInWeightListElement(): LevelInWeightListElementContext {
		let _localctx: LevelInWeightListElementContext = new LevelInWeightListElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 774, MySqlParser.RULE_levelInWeightListElement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7676;
			this.decimalLiteral();
			this.state = 7678;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ASC || _la === MySqlParser.KW_DESC || _la === MySqlParser.KW_REVERSE) {
				{
				this.state = 7677;
				_localctx._orderType = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_ASC || _la === MySqlParser.KW_DESC || _la === MySqlParser.KW_REVERSE)) {
					_localctx._orderType = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public aggregateWindowedFunction(): AggregateWindowedFunctionContext {
		let _localctx: AggregateWindowedFunctionContext = new AggregateWindowedFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 776, MySqlParser.RULE_aggregateWindowedFunction);
		let _la: number;
		try {
			this.state = 7739;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_SUM:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7680;
				_la = this._input.LA(1);
				if (!(((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & ((1 << (MySqlParser.KW_AVG - 258)) | (1 << (MySqlParser.KW_MAX - 258)) | (1 << (MySqlParser.KW_MIN - 258)) | (1 << (MySqlParser.KW_SUM - 258)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7681;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7683;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1124, this._ctx) ) {
				case 1:
					{
					this.state = 7682;
					_localctx._aggregator = this._input.LT(1);
					_la = this._input.LA(1);
					if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_DISTINCT)) {
						_localctx._aggregator = this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
					break;
				}
				this.state = 7685;
				this.functionArg();
				this.state = 7686;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7688;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1125, this._ctx) ) {
				case 1:
					{
					this.state = 7687;
					this.overClause();
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_COUNT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7690;
				this.match(MySqlParser.KW_COUNT);
				this.state = 7691;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7699;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1127, this._ctx) ) {
				case 1:
					{
					this.state = 7692;
					_localctx._starArg = this.match(MySqlParser.STAR);
					}
					break;

				case 2:
					{
					this.state = 7694;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1126, this._ctx) ) {
					case 1:
						{
						this.state = 7693;
						_localctx._aggregator = this.match(MySqlParser.KW_ALL);
						}
						break;
					}
					this.state = 7696;
					this.functionArg();
					}
					break;

				case 3:
					{
					this.state = 7697;
					_localctx._aggregator = this.match(MySqlParser.KW_DISTINCT);
					this.state = 7698;
					this.functionArgs();
					}
					break;
				}
				this.state = 7701;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7703;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1128, this._ctx) ) {
				case 1:
					{
					this.state = 7702;
					this.overClause();
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7705;
				_la = this._input.LA(1);
				if (!(((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & ((1 << (MySqlParser.KW_BIT_AND - 259)) | (1 << (MySqlParser.KW_BIT_OR - 259)) | (1 << (MySqlParser.KW_BIT_XOR - 259)) | (1 << (MySqlParser.KW_STD - 259)) | (1 << (MySqlParser.KW_STDDEV - 259)) | (1 << (MySqlParser.KW_STDDEV_POP - 259)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 259)) | (1 << (MySqlParser.KW_VAR_POP - 259)) | (1 << (MySqlParser.KW_VAR_SAMP - 259)) | (1 << (MySqlParser.KW_VARIANCE - 259)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7706;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7708;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1129, this._ctx) ) {
				case 1:
					{
					this.state = 7707;
					_localctx._aggregator = this.match(MySqlParser.KW_ALL);
					}
					break;
				}
				this.state = 7710;
				this.functionArg();
				this.state = 7711;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7713;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1130, this._ctx) ) {
				case 1:
					{
					this.state = 7712;
					this.overClause();
					}
					break;
				}
				}
				break;
			case MySqlParser.KW_GROUP_CONCAT:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7715;
				this.match(MySqlParser.KW_GROUP_CONCAT);
				this.state = 7716;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7718;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1131, this._ctx) ) {
				case 1:
					{
					this.state = 7717;
					_localctx._aggregator = this.match(MySqlParser.KW_DISTINCT);
					}
					break;
				}
				this.state = 7720;
				this.functionArgs();
				this.state = 7731;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_ORDER) {
					{
					this.state = 7721;
					this.match(MySqlParser.KW_ORDER);
					this.state = 7722;
					this.match(MySqlParser.KW_BY);
					this.state = 7723;
					this.orderByExpression();
					this.state = 7728;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === MySqlParser.COMMA) {
						{
						{
						this.state = 7724;
						this.match(MySqlParser.COMMA);
						this.state = 7725;
						this.orderByExpression();
						}
						}
						this.state = 7730;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 7735;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_SEPARATOR) {
					{
					this.state = 7733;
					this.match(MySqlParser.KW_SEPARATOR);
					this.state = 7734;
					_localctx._separator = this.match(MySqlParser.STRING_LITERAL);
					}
				}

				this.state = 7737;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public nonAggregateWindowedFunction(): NonAggregateWindowedFunctionContext {
		let _localctx: NonAggregateWindowedFunctionContext = new NonAggregateWindowedFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 778, MySqlParser.RULE_nonAggregateWindowedFunction);
		let _la: number;
		try {
			this.state = 7779;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LEAD:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7741;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_LAG || _la === MySqlParser.KW_LEAD)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7742;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7743;
				this.expression(0);
				this.state = 7746;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1136, this._ctx) ) {
				case 1:
					{
					this.state = 7744;
					this.match(MySqlParser.COMMA);
					this.state = 7745;
					this.decimalLiteral();
					}
					break;
				}
				this.state = 7750;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.COMMA) {
					{
					this.state = 7748;
					this.match(MySqlParser.COMMA);
					this.state = 7749;
					this.decimalLiteral();
					}
				}

				this.state = 7752;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7753;
				this.overClause();
				}
				break;
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_LAST_VALUE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7755;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FIRST_VALUE || _la === MySqlParser.KW_LAST_VALUE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7756;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7757;
				this.expression(0);
				this.state = 7758;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7759;
				this.overClause();
				}
				break;
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7761;
				_la = this._input.LA(1);
				if (!(((((_la - 263)) & ~0x1F) === 0 && ((1 << (_la - 263)) & ((1 << (MySqlParser.KW_CUME_DIST - 263)) | (1 << (MySqlParser.KW_DENSE_RANK - 263)) | (1 << (MySqlParser.KW_PERCENT_RANK - 263)) | (1 << (MySqlParser.KW_RANK - 263)) | (1 << (MySqlParser.KW_ROW_NUMBER - 263)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7762;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7763;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7764;
				this.overClause();
				}
				break;
			case MySqlParser.KW_NTH_VALUE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7765;
				this.match(MySqlParser.KW_NTH_VALUE);
				this.state = 7766;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7767;
				this.expression(0);
				this.state = 7768;
				this.match(MySqlParser.COMMA);
				this.state = 7769;
				this.decimalLiteral();
				this.state = 7770;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7771;
				this.overClause();
				}
				break;
			case MySqlParser.KW_NTILE:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7773;
				this.match(MySqlParser.KW_NTILE);
				this.state = 7774;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7775;
				this.decimalLiteral();
				this.state = 7776;
				this.match(MySqlParser.RR_BRACKET);
				this.state = 7777;
				this.overClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public overClause(): OverClauseContext {
		let _localctx: OverClauseContext = new OverClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 780, MySqlParser.RULE_overClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7781;
			this.match(MySqlParser.KW_OVER);
			this.state = 7787;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.LR_BRACKET:
				{
				this.state = 7782;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7783;
				this.windowSpec();
				this.state = 7784;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;
			case MySqlParser.KW_ARRAY:
			case MySqlParser.KW_ATTRIBUTE:
			case MySqlParser.KW_BUCKETS:
			case MySqlParser.KW_CONDITION:
			case MySqlParser.KW_CURRENT:
			case MySqlParser.KW_CURRENT_USER:
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_DEFAULT:
			case MySqlParser.KW_DIAGNOSTICS:
			case MySqlParser.KW_EMPTY:
			case MySqlParser.KW_ENFORCED:
			case MySqlParser.KW_EXCEPT:
			case MySqlParser.KW_GROUP:
			case MySqlParser.KW_IF:
			case MySqlParser.KW_INSERT:
			case MySqlParser.KW_LATERAL:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_NUMBER:
			case MySqlParser.KW_OPTIONAL:
			case MySqlParser.KW_ORDER:
			case MySqlParser.KW_PRIMARY:
			case MySqlParser.KW_REPEAT:
			case MySqlParser.KW_REPLACE:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_SKIP_QUERY_REWRITE:
			case MySqlParser.KW_STACKED:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_DATETIME:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_BINARY:
			case MySqlParser.KW_TEXT:
			case MySqlParser.KW_ENUM:
			case MySqlParser.KW_SERIAL:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_NESTED:
			case MySqlParser.KW_ORDINALITY:
			case MySqlParser.KW_PATH:
			case MySqlParser.KW_AVG:
			case MySqlParser.KW_BIT_AND:
			case MySqlParser.KW_BIT_OR:
			case MySqlParser.KW_BIT_XOR:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_GROUP_CONCAT:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_MAX:
			case MySqlParser.KW_MIN:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_STD:
			case MySqlParser.KW_STDDEV:
			case MySqlParser.KW_STDDEV_POP:
			case MySqlParser.KW_STDDEV_SAMP:
			case MySqlParser.KW_SUM:
			case MySqlParser.KW_VAR_POP:
			case MySqlParser.KW_VAR_SAMP:
			case MySqlParser.KW_VARIANCE:
			case MySqlParser.KW_CURRENT_DATE:
			case MySqlParser.KW_CURRENT_TIME:
			case MySqlParser.KW_CURRENT_TIMESTAMP:
			case MySqlParser.KW_LOCALTIME:
			case MySqlParser.KW_CURDATE:
			case MySqlParser.KW_CURTIME:
			case MySqlParser.KW_DATE_ADD:
			case MySqlParser.KW_DATE_SUB:
			case MySqlParser.KW_LOCALTIMESTAMP:
			case MySqlParser.KW_NOW:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_SUBSTR:
			case MySqlParser.KW_SUBSTRING:
			case MySqlParser.KW_SYSDATE:
			case MySqlParser.KW_TRIM:
			case MySqlParser.KW_UTC_DATE:
			case MySqlParser.KW_UTC_TIME:
			case MySqlParser.KW_UTC_TIMESTAMP:
			case MySqlParser.KW_ACCOUNT:
			case MySqlParser.KW_ACTION:
			case MySqlParser.KW_AFTER:
			case MySqlParser.KW_AGGREGATE:
			case MySqlParser.KW_ALGORITHM:
			case MySqlParser.KW_ANY:
			case MySqlParser.KW_AT:
			case MySqlParser.KW_AUTHORS:
			case MySqlParser.KW_AUTOCOMMIT:
			case MySqlParser.KW_AUTOEXTEND_SIZE:
			case MySqlParser.KW_AUTO_INCREMENT:
			case MySqlParser.KW_AVG_ROW_LENGTH:
			case MySqlParser.KW_BEGIN:
			case MySqlParser.KW_BINLOG:
			case MySqlParser.KW_BIT:
			case MySqlParser.KW_BLOCK:
			case MySqlParser.KW_BOOL:
			case MySqlParser.KW_BOOLEAN:
			case MySqlParser.KW_BTREE:
			case MySqlParser.KW_CACHE:
			case MySqlParser.KW_CASCADED:
			case MySqlParser.KW_CHAIN:
			case MySqlParser.KW_CHANGED:
			case MySqlParser.KW_CHANNEL:
			case MySqlParser.KW_CHECKSUM:
			case MySqlParser.KW_CIPHER:
			case MySqlParser.KW_CLASS_ORIGIN:
			case MySqlParser.KW_CLIENT:
			case MySqlParser.KW_CLOSE:
			case MySqlParser.KW_COALESCE:
			case MySqlParser.KW_CODE:
			case MySqlParser.KW_COLUMNS:
			case MySqlParser.KW_COLUMN_FORMAT:
			case MySqlParser.KW_COLUMN_NAME:
			case MySqlParser.KW_COMMENT:
			case MySqlParser.KW_COMMIT:
			case MySqlParser.KW_COMPACT:
			case MySqlParser.KW_COMPLETION:
			case MySqlParser.KW_COMPRESSED:
			case MySqlParser.KW_COMPRESSION:
			case MySqlParser.KW_CONCURRENT:
			case MySqlParser.KW_CONNECT:
			case MySqlParser.KW_CONNECTION:
			case MySqlParser.KW_CONSISTENT:
			case MySqlParser.KW_CONSTRAINT_CATALOG:
			case MySqlParser.KW_CONSTRAINT_SCHEMA:
			case MySqlParser.KW_CONSTRAINT_NAME:
			case MySqlParser.KW_CONTAINS:
			case MySqlParser.KW_CONTEXT:
			case MySqlParser.KW_CONTRIBUTORS:
			case MySqlParser.KW_COPY:
			case MySqlParser.KW_CPU:
			case MySqlParser.KW_CURSOR_NAME:
			case MySqlParser.KW_DATA:
			case MySqlParser.KW_DATAFILE:
			case MySqlParser.KW_DEALLOCATE:
			case MySqlParser.KW_DEFAULT_AUTH:
			case MySqlParser.KW_DEFINER:
			case MySqlParser.KW_DELAY_KEY_WRITE:
			case MySqlParser.KW_DES_KEY_FILE:
			case MySqlParser.KW_DIRECTORY:
			case MySqlParser.KW_DISABLE:
			case MySqlParser.KW_DISCARD:
			case MySqlParser.KW_DISK:
			case MySqlParser.KW_DO:
			case MySqlParser.KW_DUMPFILE:
			case MySqlParser.KW_DUPLICATE:
			case MySqlParser.KW_DYNAMIC:
			case MySqlParser.KW_ENABLE:
			case MySqlParser.KW_ENCRYPTION:
			case MySqlParser.KW_END:
			case MySqlParser.KW_ENDS:
			case MySqlParser.KW_ENGINE:
			case MySqlParser.KW_ENGINES:
			case MySqlParser.KW_ERROR:
			case MySqlParser.KW_ERRORS:
			case MySqlParser.KW_ESCAPE:
			case MySqlParser.KW_EVENT:
			case MySqlParser.KW_EVENTS:
			case MySqlParser.KW_EVERY:
			case MySqlParser.KW_EXCHANGE:
			case MySqlParser.KW_EXCLUSIVE:
			case MySqlParser.KW_EXPIRE:
			case MySqlParser.KW_EXPORT:
			case MySqlParser.KW_EXTENDED:
			case MySqlParser.KW_EXTENT_SIZE:
			case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS:
			case MySqlParser.KW_FAST:
			case MySqlParser.KW_FAULTS:
			case MySqlParser.KW_FIELDS:
			case MySqlParser.KW_FILE_BLOCK_SIZE:
			case MySqlParser.KW_FILTER:
			case MySqlParser.KW_FIRST:
			case MySqlParser.KW_FIXED:
			case MySqlParser.KW_FLUSH:
			case MySqlParser.KW_FOLLOWS:
			case MySqlParser.KW_FOUND:
			case MySqlParser.KW_FULL:
			case MySqlParser.KW_FUNCTION:
			case MySqlParser.KW_GENERAL:
			case MySqlParser.KW_GLOBAL:
			case MySqlParser.KW_GRANTS:
			case MySqlParser.KW_GROUP_REPLICATION:
			case MySqlParser.KW_HANDLER:
			case MySqlParser.KW_HASH:
			case MySqlParser.KW_HELP:
			case MySqlParser.KW_HISTORY:
			case MySqlParser.KW_HOST:
			case MySqlParser.KW_HOSTS:
			case MySqlParser.KW_IDENTIFIED:
			case MySqlParser.KW_IGNORE_SERVER_IDS:
			case MySqlParser.KW_IMPORT:
			case MySqlParser.KW_INDEXES:
			case MySqlParser.KW_INITIAL_SIZE:
			case MySqlParser.KW_INPLACE:
			case MySqlParser.KW_INSERT_METHOD:
			case MySqlParser.KW_INSTALL:
			case MySqlParser.KW_INSTANCE:
			case MySqlParser.KW_INSTANT:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_INVOKER:
			case MySqlParser.KW_IO:
			case MySqlParser.KW_IO_THREAD:
			case MySqlParser.KW_IPC:
			case MySqlParser.KW_ISOLATION:
			case MySqlParser.KW_ISSUER:
			case MySqlParser.KW_JSON:
			case MySqlParser.KW_KEY_BLOCK_SIZE:
			case MySqlParser.KW_LANGUAGE:
			case MySqlParser.KW_LAST:
			case MySqlParser.KW_LEAVES:
			case MySqlParser.KW_LESS:
			case MySqlParser.KW_LEVEL:
			case MySqlParser.KW_LIST:
			case MySqlParser.KW_LOCAL:
			case MySqlParser.KW_LOGFILE:
			case MySqlParser.KW_LOGS:
			case MySqlParser.KW_MASTER:
			case MySqlParser.KW_MASTER_AUTO_POSITION:
			case MySqlParser.KW_MASTER_CONNECT_RETRY:
			case MySqlParser.KW_MASTER_DELAY:
			case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD:
			case MySqlParser.KW_MASTER_HOST:
			case MySqlParser.KW_MASTER_LOG_FILE:
			case MySqlParser.KW_MASTER_LOG_POS:
			case MySqlParser.KW_MASTER_PASSWORD:
			case MySqlParser.KW_MASTER_PORT:
			case MySqlParser.KW_MASTER_RETRY_COUNT:
			case MySqlParser.KW_MASTER_SSL:
			case MySqlParser.KW_MASTER_SSL_CA:
			case MySqlParser.KW_MASTER_SSL_CAPATH:
			case MySqlParser.KW_MASTER_SSL_CERT:
			case MySqlParser.KW_MASTER_SSL_CIPHER:
			case MySqlParser.KW_MASTER_SSL_CRL:
			case MySqlParser.KW_MASTER_SSL_CRLPATH:
			case MySqlParser.KW_MASTER_SSL_KEY:
			case MySqlParser.KW_MASTER_TLS_VERSION:
			case MySqlParser.KW_MASTER_USER:
			case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR:
			case MySqlParser.KW_MAX_QUERIES_PER_HOUR:
			case MySqlParser.KW_MAX_ROWS:
			case MySqlParser.KW_MAX_SIZE:
			case MySqlParser.KW_MAX_UPDATES_PER_HOUR:
			case MySqlParser.KW_MAX_USER_CONNECTIONS:
			case MySqlParser.KW_MEDIUM:
			case MySqlParser.KW_MEMBER:
			case MySqlParser.KW_MERGE:
			case MySqlParser.KW_MESSAGE_TEXT:
			case MySqlParser.KW_MID:
			case MySqlParser.KW_MIGRATE:
			case MySqlParser.KW_MIN_ROWS:
			case MySqlParser.KW_MODE:
			case MySqlParser.KW_MODIFY:
			case MySqlParser.KW_MUTEX:
			case MySqlParser.KW_MYSQL:
			case MySqlParser.KW_MYSQL_ERRNO:
			case MySqlParser.KW_NAME:
			case MySqlParser.KW_NAMES:
			case MySqlParser.KW_NCHAR:
			case MySqlParser.KW_NEVER:
			case MySqlParser.KW_NEXT:
			case MySqlParser.KW_NO:
			case MySqlParser.KW_NOWAIT:
			case MySqlParser.KW_NODEGROUP:
			case MySqlParser.KW_NONE:
			case MySqlParser.KW_ODBC:
			case MySqlParser.KW_OFFLINE:
			case MySqlParser.KW_OFFSET:
			case MySqlParser.KW_OF:
			case MySqlParser.KW_OLD_PASSWORD:
			case MySqlParser.KW_ONE:
			case MySqlParser.KW_ONLINE:
			case MySqlParser.KW_ONLY:
			case MySqlParser.KW_OPEN:
			case MySqlParser.KW_OPTIMIZER_COSTS:
			case MySqlParser.KW_OPTIONS:
			case MySqlParser.KW_OWNER:
			case MySqlParser.KW_PACK_KEYS:
			case MySqlParser.KW_PAGE:
			case MySqlParser.KW_PAGE_CHECKSUM:
			case MySqlParser.KW_PARSER:
			case MySqlParser.KW_PARTIAL:
			case MySqlParser.KW_PARTITIONING:
			case MySqlParser.KW_PARTITIONS:
			case MySqlParser.KW_PASSWORD:
			case MySqlParser.KW_PASSWORD_LOCK_TIME:
			case MySqlParser.KW_PHASE:
			case MySqlParser.KW_PLUGIN:
			case MySqlParser.KW_PLUGIN_DIR:
			case MySqlParser.KW_PLUGINS:
			case MySqlParser.KW_PORT:
			case MySqlParser.KW_PRECEDES:
			case MySqlParser.KW_PREPARE:
			case MySqlParser.KW_PRESERVE:
			case MySqlParser.KW_PREV:
			case MySqlParser.KW_PROCESSLIST:
			case MySqlParser.KW_PROFILE:
			case MySqlParser.KW_PROFILES:
			case MySqlParser.KW_PROXY:
			case MySqlParser.KW_QUERY:
			case MySqlParser.KW_QUICK:
			case MySqlParser.KW_REBUILD:
			case MySqlParser.KW_RECOVER:
			case MySqlParser.KW_RECURSIVE:
			case MySqlParser.KW_REDO_BUFFER_SIZE:
			case MySqlParser.KW_REDUNDANT:
			case MySqlParser.KW_RELAY:
			case MySqlParser.KW_RELAY_LOG_FILE:
			case MySqlParser.KW_RELAY_LOG_POS:
			case MySqlParser.KW_RELAYLOG:
			case MySqlParser.KW_REMOVE:
			case MySqlParser.KW_REORGANIZE:
			case MySqlParser.KW_REPAIR:
			case MySqlParser.KW_REPLICATE_DO_DB:
			case MySqlParser.KW_REPLICATE_DO_TABLE:
			case MySqlParser.KW_REPLICATE_IGNORE_DB:
			case MySqlParser.KW_REPLICATE_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATE_REWRITE_DB:
			case MySqlParser.KW_REPLICATE_WILD_DO_TABLE:
			case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE:
			case MySqlParser.KW_REPLICATION:
			case MySqlParser.KW_RESET:
			case MySqlParser.KW_RESUME:
			case MySqlParser.KW_RETURNED_SQLSTATE:
			case MySqlParser.KW_RETURNS:
			case MySqlParser.KW_REUSE:
			case MySqlParser.KW_ROLE:
			case MySqlParser.KW_ROLLBACK:
			case MySqlParser.KW_ROLLUP:
			case MySqlParser.KW_ROTATE:
			case MySqlParser.KW_ROW:
			case MySqlParser.KW_ROWS:
			case MySqlParser.KW_ROW_FORMAT:
			case MySqlParser.KW_SAVEPOINT:
			case MySqlParser.KW_SCHEDULE:
			case MySqlParser.KW_SECURITY:
			case MySqlParser.KW_SERVER:
			case MySqlParser.KW_SESSION:
			case MySqlParser.KW_SHARE:
			case MySqlParser.KW_SHARED:
			case MySqlParser.KW_SIGNED:
			case MySqlParser.KW_SIMPLE:
			case MySqlParser.KW_SLAVE:
			case MySqlParser.KW_SLOW:
			case MySqlParser.KW_SNAPSHOT:
			case MySqlParser.KW_SOCKET:
			case MySqlParser.KW_SOME:
			case MySqlParser.KW_SONAME:
			case MySqlParser.KW_SOUNDS:
			case MySqlParser.KW_SOURCE:
			case MySqlParser.KW_SQL_AFTER_GTIDS:
			case MySqlParser.KW_SQL_AFTER_MTS_GAPS:
			case MySqlParser.KW_SQL_BEFORE_GTIDS:
			case MySqlParser.KW_SQL_BUFFER_RESULT:
			case MySqlParser.KW_SQL_CACHE:
			case MySqlParser.KW_SQL_NO_CACHE:
			case MySqlParser.KW_SQL_THREAD:
			case MySqlParser.KW_START:
			case MySqlParser.KW_STARTS:
			case MySqlParser.KW_STATS_AUTO_RECALC:
			case MySqlParser.KW_STATS_PERSISTENT:
			case MySqlParser.KW_STATS_SAMPLE_PAGES:
			case MySqlParser.KW_STATUS:
			case MySqlParser.KW_STOP:
			case MySqlParser.KW_STORAGE:
			case MySqlParser.KW_STRING:
			case MySqlParser.KW_SUBCLASS_ORIGIN:
			case MySqlParser.KW_SUBJECT:
			case MySqlParser.KW_SUBPARTITION:
			case MySqlParser.KW_SUBPARTITIONS:
			case MySqlParser.KW_SUSPEND:
			case MySqlParser.KW_SWAPS:
			case MySqlParser.KW_SWITCHES:
			case MySqlParser.KW_TABLE_NAME:
			case MySqlParser.KW_TABLESPACE:
			case MySqlParser.KW_TABLE_TYPE:
			case MySqlParser.KW_TEMPORARY:
			case MySqlParser.KW_TEMPTABLE:
			case MySqlParser.KW_THAN:
			case MySqlParser.KW_TRADITIONAL:
			case MySqlParser.KW_TRANSACTION:
			case MySqlParser.KW_TRANSACTIONAL:
			case MySqlParser.KW_TRIGGERS:
			case MySqlParser.KW_TRUNCATE:
			case MySqlParser.KW_UNBOUNDED:
			case MySqlParser.KW_UNDEFINED:
			case MySqlParser.KW_UNDOFILE:
			case MySqlParser.KW_UNDO_BUFFER_SIZE:
			case MySqlParser.KW_UNINSTALL:
			case MySqlParser.KW_UNKNOWN:
			case MySqlParser.KW_UNTIL:
			case MySqlParser.KW_UPGRADE:
			case MySqlParser.KW_USER:
			case MySqlParser.KW_USE_FRM:
			case MySqlParser.KW_USER_RESOURCES:
			case MySqlParser.KW_VALIDATION:
			case MySqlParser.KW_VALUE:
			case MySqlParser.KW_VARIABLES:
			case MySqlParser.KW_VIEW:
			case MySqlParser.KW_VIRTUAL:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_WAIT:
			case MySqlParser.KW_WARNINGS:
			case MySqlParser.KW_WITHOUT:
			case MySqlParser.KW_WORK:
			case MySqlParser.KW_WRAPPER:
			case MySqlParser.KW_X509:
			case MySqlParser.KW_XA:
			case MySqlParser.KW_XML:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_ADMIN:
			case MySqlParser.KW_AUDIT_ABORT_EXEMPT:
			case MySqlParser.KW_AUDIT_ADMIN:
			case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN:
			case MySqlParser.KW_BACKUP_ADMIN:
			case MySqlParser.KW_BINLOG_ADMIN:
			case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN:
			case MySqlParser.KW_CLONE_ADMIN:
			case MySqlParser.KW_CONNECTION_ADMIN:
			case MySqlParser.KW_ENCRYPTION_KEY_ADMIN:
			case MySqlParser.KW_EXECUTE:
			case MySqlParser.KW_FILE:
			case MySqlParser.KW_FIREWALL_ADMIN:
			case MySqlParser.KW_FIREWALL_EXEMPT:
			case MySqlParser.KW_FIREWALL_USER:
			case MySqlParser.KW_GROUP_REPLICATION_ADMIN:
			case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE:
			case MySqlParser.KW_INVOKE:
			case MySqlParser.KW_LAMBDA:
			case MySqlParser.KW_NDB_STORED_USER:
			case MySqlParser.KW_PASSWORDLESS_USER_ADMIN:
			case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN:
			case MySqlParser.KW_PRIVILEGES:
			case MySqlParser.KW_PROCESS:
			case MySqlParser.KW_RELOAD:
			case MySqlParser.KW_REPLICATION_APPLIER:
			case MySqlParser.KW_REPLICATION_SLAVE_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_ADMIN:
			case MySqlParser.KW_RESOURCE_GROUP_USER:
			case MySqlParser.KW_ROLE_ADMIN:
			case MySqlParser.KW_ROUTINE:
			case MySqlParser.KW_S3:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_SET_USER_ID:
			case MySqlParser.KW_SHOW_ROUTINE:
			case MySqlParser.KW_SHUTDOWN:
			case MySqlParser.KW_SUPER:
			case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN:
			case MySqlParser.KW_TABLES:
			case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN:
			case MySqlParser.KW_VERSION_TOKEN_ADMIN:
			case MySqlParser.KW_XA_RECOVER_ADMIN:
			case MySqlParser.KW_ARMSCII8:
			case MySqlParser.KW_ASCII:
			case MySqlParser.KW_BIG5:
			case MySqlParser.KW_CP1250:
			case MySqlParser.KW_CP1251:
			case MySqlParser.KW_CP1256:
			case MySqlParser.KW_CP1257:
			case MySqlParser.KW_CP850:
			case MySqlParser.KW_CP852:
			case MySqlParser.KW_CP866:
			case MySqlParser.KW_CP932:
			case MySqlParser.KW_DEC8:
			case MySqlParser.KW_EUCJPMS:
			case MySqlParser.KW_EUCKR:
			case MySqlParser.KW_GB18030:
			case MySqlParser.KW_GB2312:
			case MySqlParser.KW_GBK:
			case MySqlParser.KW_GEOSTD8:
			case MySqlParser.KW_GREEK:
			case MySqlParser.KW_HEBREW:
			case MySqlParser.KW_HP8:
			case MySqlParser.KW_KEYBCS2:
			case MySqlParser.KW_KOI8R:
			case MySqlParser.KW_KOI8U:
			case MySqlParser.KW_LATIN1:
			case MySqlParser.KW_LATIN2:
			case MySqlParser.KW_LATIN5:
			case MySqlParser.KW_LATIN7:
			case MySqlParser.KW_MACCE:
			case MySqlParser.KW_MACROMAN:
			case MySqlParser.KW_SJIS:
			case MySqlParser.KW_SWE7:
			case MySqlParser.KW_TIS620:
			case MySqlParser.KW_UCS2:
			case MySqlParser.KW_UJIS:
			case MySqlParser.KW_UTF16:
			case MySqlParser.KW_UTF16LE:
			case MySqlParser.KW_UTF32:
			case MySqlParser.KW_UTF8:
			case MySqlParser.KW_UTF8MB3:
			case MySqlParser.KW_UTF8MB4:
			case MySqlParser.KW_ARCHIVE:
			case MySqlParser.KW_BLACKHOLE:
			case MySqlParser.KW_CSV:
			case MySqlParser.KW_FEDERATED:
			case MySqlParser.KW_INNODB:
			case MySqlParser.KW_MEMORY:
			case MySqlParser.KW_MRG_MYISAM:
			case MySqlParser.KW_MYISAM:
			case MySqlParser.KW_NDB:
			case MySqlParser.KW_NDBCLUSTER:
			case MySqlParser.KW_PERFORMANCE_SCHEMA:
			case MySqlParser.KW_TOKUDB:
			case MySqlParser.KW_REPEATABLE:
			case MySqlParser.KW_COMMITTED:
			case MySqlParser.KW_UNCOMMITTED:
			case MySqlParser.KW_SERIALIZABLE:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CATALOG_NAME:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SCHEMA_NAME:
			case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_TP_CONNECTION_ADMIN:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
			case MySqlParser.CHARSET_REVERSE_QOUTE_STRING:
			case MySqlParser.STRING_LITERAL:
			case MySqlParser.ID:
				{
				this.state = 7786;
				this.windowName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public windowSpec(): WindowSpecContext {
		let _localctx: WindowSpecContext = new WindowSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 782, MySqlParser.RULE_windowSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7790;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1140, this._ctx) ) {
			case 1:
				{
				this.state = 7789;
				this.windowName();
				}
				break;
			}
			this.state = 7793;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_PARTITION) {
				{
				this.state = 7792;
				this.partitionClause();
				}
			}

			this.state = 7796;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_ORDER) {
				{
				this.state = 7795;
				this.orderByClause();
				}
			}

			this.state = 7799;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === MySqlParser.KW_RANGE || _la === MySqlParser.KW_ROWS) {
				{
				this.state = 7798;
				this.frameClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public windowName(): WindowNameContext {
		let _localctx: WindowNameContext = new WindowNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 784, MySqlParser.RULE_windowName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7801;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public frameClause(): FrameClauseContext {
		let _localctx: FrameClauseContext = new FrameClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 786, MySqlParser.RULE_frameClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7803;
			this.frameUnits();
			this.state = 7804;
			this.frameExtent();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public frameUnits(): FrameUnitsContext {
		let _localctx: FrameUnitsContext = new FrameUnitsContext(this._ctx, this.state);
		this.enterRule(_localctx, 788, MySqlParser.RULE_frameUnits);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7806;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_RANGE || _la === MySqlParser.KW_ROWS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public frameExtent(): FrameExtentContext {
		let _localctx: FrameExtentContext = new FrameExtentContext(this._ctx, this.state);
		this.enterRule(_localctx, 790, MySqlParser.RULE_frameExtent);
		try {
			this.state = 7810;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1144, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7808;
				this.frameRange();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7809;
				this.frameBetween();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public frameBetween(): FrameBetweenContext {
		let _localctx: FrameBetweenContext = new FrameBetweenContext(this._ctx, this.state);
		this.enterRule(_localctx, 792, MySqlParser.RULE_frameBetween);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7812;
			this.match(MySqlParser.KW_BETWEEN);
			this.state = 7813;
			this.frameRange();
			this.state = 7814;
			this.match(MySqlParser.KW_AND);
			this.state = 7815;
			this.frameRange();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public frameRange(): FrameRangeContext {
		let _localctx: FrameRangeContext = new FrameRangeContext(this._ctx, this.state);
		this.enterRule(_localctx, 794, MySqlParser.RULE_frameRange);
		let _la: number;
		try {
			this.state = 7824;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1145, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7817;
				this.match(MySqlParser.KW_CURRENT);
				this.state = 7818;
				this.match(MySqlParser.KW_ROW);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7819;
				this.match(MySqlParser.KW_UNBOUNDED);
				this.state = 7820;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FOLLOWING || _la === MySqlParser.KW_PRECEDING)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7821;
				this.expression(0);
				this.state = 7822;
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FOLLOWING || _la === MySqlParser.KW_PRECEDING)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionClause(): PartitionClauseContext {
		let _localctx: PartitionClauseContext = new PartitionClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 796, MySqlParser.RULE_partitionClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7826;
			this.match(MySqlParser.KW_PARTITION);
			this.state = 7827;
			this.match(MySqlParser.KW_BY);
			this.state = 7828;
			this.expression(0);
			this.state = 7833;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7829;
				this.match(MySqlParser.COMMA);
				this.state = 7830;
				this.expression(0);
				}
				}
				this.state = 7835;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public scalarFunctionName(): ScalarFunctionNameContext {
		let _localctx: ScalarFunctionNameContext = new ScalarFunctionNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 798, MySqlParser.RULE_scalarFunctionName);
		try {
			this.state = 7860;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_DATABASE:
			case MySqlParser.KW_LEFT:
			case MySqlParser.KW_RIGHT:
			case MySqlParser.KW_SCHEMA:
			case MySqlParser.KW_DATE:
			case MySqlParser.KW_TIME:
			case MySqlParser.KW_TIMESTAMP:
			case MySqlParser.KW_YEAR:
			case MySqlParser.KW_JSON_TABLE:
			case MySqlParser.KW_JSON_VALUE:
			case MySqlParser.KW_COUNT:
			case MySqlParser.KW_CUME_DIST:
			case MySqlParser.KW_DENSE_RANK:
			case MySqlParser.KW_FIRST_VALUE:
			case MySqlParser.KW_LAG:
			case MySqlParser.KW_LAST_VALUE:
			case MySqlParser.KW_LEAD:
			case MySqlParser.KW_NTILE:
			case MySqlParser.KW_NTH_VALUE:
			case MySqlParser.KW_PERCENT_RANK:
			case MySqlParser.KW_RANK:
			case MySqlParser.KW_ROW_NUMBER:
			case MySqlParser.KW_POSITION:
			case MySqlParser.KW_INVISIBLE:
			case MySqlParser.KW_VISIBLE:
			case MySqlParser.KW_QUARTER:
			case MySqlParser.KW_MONTH:
			case MySqlParser.KW_DAY:
			case MySqlParser.KW_HOUR:
			case MySqlParser.KW_MINUTE:
			case MySqlParser.KW_WEEK:
			case MySqlParser.KW_SECOND:
			case MySqlParser.KW_MICROSECOND:
			case MySqlParser.KW_SESSION_VARIABLES_ADMIN:
			case MySqlParser.KW_GEOMETRYCOLLECTION:
			case MySqlParser.KW_LINESTRING:
			case MySqlParser.KW_MULTILINESTRING:
			case MySqlParser.KW_MULTIPOINT:
			case MySqlParser.KW_MULTIPOLYGON:
			case MySqlParser.KW_POINT:
			case MySqlParser.KW_POLYGON:
			case MySqlParser.KW_CHARSET:
			case MySqlParser.KW_COLLATION:
			case MySqlParser.KW_FORMAT:
			case MySqlParser.KW_GET_FORMAT:
			case MySqlParser.KW_RANDOM:
			case MySqlParser.KW_REVERSE:
			case MySqlParser.KW_ROW_COUNT:
			case MySqlParser.KW_SRID:
			case MySqlParser.KW_SYSTEM_USER:
			case MySqlParser.KW_WEIGHT_STRING:
			case MySqlParser.MOD:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7836;
				this.functionNameBase();
				}
				break;
			case MySqlParser.KW_ASCII:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7837;
				this.match(MySqlParser.KW_ASCII);
				}
				break;
			case MySqlParser.KW_CURDATE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7838;
				this.match(MySqlParser.KW_CURDATE);
				}
				break;
			case MySqlParser.KW_CURRENT_DATE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7839;
				this.match(MySqlParser.KW_CURRENT_DATE);
				}
				break;
			case MySqlParser.KW_CURRENT_TIME:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7840;
				this.match(MySqlParser.KW_CURRENT_TIME);
				}
				break;
			case MySqlParser.KW_CURRENT_TIMESTAMP:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7841;
				this.match(MySqlParser.KW_CURRENT_TIMESTAMP);
				}
				break;
			case MySqlParser.KW_CURTIME:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7842;
				this.match(MySqlParser.KW_CURTIME);
				}
				break;
			case MySqlParser.KW_DATE_ADD:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7843;
				this.match(MySqlParser.KW_DATE_ADD);
				}
				break;
			case MySqlParser.KW_DATE_SUB:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7844;
				this.match(MySqlParser.KW_DATE_SUB);
				}
				break;
			case MySqlParser.KW_IF:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7845;
				this.match(MySqlParser.KW_IF);
				}
				break;
			case MySqlParser.KW_INSERT:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7846;
				this.match(MySqlParser.KW_INSERT);
				}
				break;
			case MySqlParser.KW_LOCALTIME:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 7847;
				this.match(MySqlParser.KW_LOCALTIME);
				}
				break;
			case MySqlParser.KW_LOCALTIMESTAMP:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 7848;
				this.match(MySqlParser.KW_LOCALTIMESTAMP);
				}
				break;
			case MySqlParser.KW_MID:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 7849;
				this.match(MySqlParser.KW_MID);
				}
				break;
			case MySqlParser.KW_NOW:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 7850;
				this.match(MySqlParser.KW_NOW);
				}
				break;
			case MySqlParser.KW_REPEAT:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 7851;
				this.match(MySqlParser.KW_REPEAT);
				}
				break;
			case MySqlParser.KW_REPLACE:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 7852;
				this.match(MySqlParser.KW_REPLACE);
				}
				break;
			case MySqlParser.KW_SUBSTR:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 7853;
				this.match(MySqlParser.KW_SUBSTR);
				}
				break;
			case MySqlParser.KW_SUBSTRING:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 7854;
				this.match(MySqlParser.KW_SUBSTRING);
				}
				break;
			case MySqlParser.KW_SYSDATE:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 7855;
				this.match(MySqlParser.KW_SYSDATE);
				}
				break;
			case MySqlParser.KW_TRIM:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 7856;
				this.match(MySqlParser.KW_TRIM);
				}
				break;
			case MySqlParser.KW_UTC_DATE:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 7857;
				this.match(MySqlParser.KW_UTC_DATE);
				}
				break;
			case MySqlParser.KW_UTC_TIME:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 7858;
				this.match(MySqlParser.KW_UTC_TIME);
				}
				break;
			case MySqlParser.KW_UTC_TIMESTAMP:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 7859;
				this.match(MySqlParser.KW_UTC_TIMESTAMP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public passwordFunctionClause(): PasswordFunctionClauseContext {
		let _localctx: PasswordFunctionClauseContext = new PasswordFunctionClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 800, MySqlParser.RULE_passwordFunctionClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7862;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_OLD_PASSWORD || _la === MySqlParser.KW_PASSWORD)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 7863;
			this.match(MySqlParser.LR_BRACKET);
			this.state = 7864;
			this.functionArg();
			this.state = 7865;
			this.match(MySqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionArgs(): FunctionArgsContext {
		let _localctx: FunctionArgsContext = new FunctionArgsContext(this._ctx, this.state);
		this.enterRule(_localctx, 802, MySqlParser.RULE_functionArgs);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7867;
			this.functionArg();
			this.state = 7872;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === MySqlParser.COMMA) {
				{
				{
				this.state = 7868;
				this.match(MySqlParser.COMMA);
				this.state = 7869;
				this.functionArg();
				}
				}
				this.state = 7874;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionArg(): FunctionArgContext {
		let _localctx: FunctionArgContext = new FunctionArgContext(this._ctx, this.state);
		this.enterRule(_localctx, 804, MySqlParser.RULE_functionArg);
		try {
			this.state = 7879;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1149, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7875;
				this.constant();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7876;
				this.columnName();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7877;
				this.functionCall();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7878;
				this.expression(0);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}

	public expression(): ExpressionContext;
	public expression(_p: number): ExpressionContext;
	// @RuleVersion(0)
	public expression(_p?: number): ExpressionContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let _localctx: ExpressionContext = new ExpressionContext(this._ctx, _parentState);
		let _prevctx: ExpressionContext = _localctx;
		let _startState: number = 806;
		this.enterRecursionRule(_localctx, 806, MySqlParser.RULE_expression, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7892;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1151, this._ctx) ) {
			case 1:
				{
				_localctx = new NotExpressionContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;

				this.state = 7882;
				(_localctx as NotExpressionContext)._notOperator = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_NOT || _la === MySqlParser.EXCLAMATION_SYMBOL)) {
					(_localctx as NotExpressionContext)._notOperator = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 7883;
				this.expression(4);
				}
				break;

			case 2:
				{
				_localctx = new IsExpressionContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7884;
				this.predicate(0);
				this.state = 7885;
				this.match(MySqlParser.KW_IS);
				this.state = 7887;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === MySqlParser.KW_NOT) {
					{
					this.state = 7886;
					this.match(MySqlParser.KW_NOT);
					}
				}

				this.state = 7889;
				(_localctx as IsExpressionContext)._testValue = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === MySqlParser.KW_FALSE || _la === MySqlParser.KW_TRUE || _la === MySqlParser.KW_UNKNOWN)) {
					(_localctx as IsExpressionContext)._testValue = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;

			case 3:
				{
				_localctx = new PredicateExpressionContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7891;
				this.predicate(0);
				}
				break;
			}
			this._ctx._stop = this._input.tryLT(-1);
			this.state = 7900;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1152, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = _localctx;
					{
					{
					_localctx = new LogicalExpressionContext(new ExpressionContext(_parentctx, _parentState));
					this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_expression);
					this.state = 7894;
					if (!(this.precpred(this._ctx, 3))) {
						throw this.createFailedPredicateException("this.precpred(this._ctx, 3)");
					}
					this.state = 7895;
					this.logicalOperator();
					this.state = 7896;
					this.expression(4);
					}
					}
				}
				this.state = 7902;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1152, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public predicate(): PredicateContext;
	public predicate(_p: number): PredicateContext;
	// @RuleVersion(0)
	public predicate(_p?: number): PredicateContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let _localctx: PredicateContext = new PredicateContext(this._ctx, _parentState);
		let _prevctx: PredicateContext = _localctx;
		let _startState: number = 808;
		this.enterRecursionRule(_localctx, 808, MySqlParser.RULE_predicate, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			{
			_localctx = new ExpressionAtomPredicateContext(_localctx);
			this._ctx = _localctx;
			_prevctx = _localctx;

			this.state = 7904;
			this.expressionAtom(0);
			}
			this._ctx._stop = this._input.tryLT(-1);
			this.state = 7970;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1160, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = _localctx;
					{
					this.state = 7968;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1159, this._ctx) ) {
					case 1:
						{
						_localctx = new BinaryComparisonPredicateContext(new PredicateContext(_parentctx, _parentState));
						(_localctx as BinaryComparisonPredicateContext)._left = _prevctx;
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7906;
						if (!(this.precpred(this._ctx, 8))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 8)");
						}
						this.state = 7907;
						this.comparisonOperator();
						this.state = 7908;
						(_localctx as BinaryComparisonPredicateContext)._right = this.predicate(9);
						}
						break;

					case 2:
						{
						_localctx = new BetweenPredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7910;
						if (!(this.precpred(this._ctx, 6))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 6)");
						}
						this.state = 7912;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_NOT) {
							{
							this.state = 7911;
							this.match(MySqlParser.KW_NOT);
							}
						}

						this.state = 7914;
						this.match(MySqlParser.KW_BETWEEN);
						this.state = 7915;
						this.predicate(0);
						this.state = 7916;
						this.match(MySqlParser.KW_AND);
						this.state = 7917;
						this.predicate(7);
						}
						break;

					case 3:
						{
						_localctx = new SoundsLikePredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7919;
						if (!(this.precpred(this._ctx, 5))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 5)");
						}
						this.state = 7920;
						this.match(MySqlParser.KW_SOUNDS);
						this.state = 7921;
						this.match(MySqlParser.KW_LIKE);
						this.state = 7922;
						this.predicate(6);
						}
						break;

					case 4:
						{
						_localctx = new RegexpPredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7923;
						if (!(this.precpred(this._ctx, 3))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 3)");
						}
						this.state = 7925;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_NOT) {
							{
							this.state = 7924;
							this.match(MySqlParser.KW_NOT);
							}
						}

						this.state = 7927;
						(_localctx as RegexpPredicateContext)._regex = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_REGEXP || _la === MySqlParser.KW_RLIKE)) {
							(_localctx as RegexpPredicateContext)._regex = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						this.state = 7928;
						this.predicate(4);
						}
						break;

					case 5:
						{
						_localctx = new InPredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7929;
						if (!(this.precpred(this._ctx, 10))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
						}
						this.state = 7931;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_NOT) {
							{
							this.state = 7930;
							this.match(MySqlParser.KW_NOT);
							}
						}

						this.state = 7933;
						this.match(MySqlParser.KW_IN);
						this.state = 7934;
						this.match(MySqlParser.LR_BRACKET);
						this.state = 7937;
						this._errHandler.sync(this);
						switch ( this.interpreter.adaptivePredict(this._input, 1156, this._ctx) ) {
						case 1:
							{
							this.state = 7935;
							this.selectStatement();
							}
							break;

						case 2:
							{
							this.state = 7936;
							this.expressions();
							}
							break;
						}
						this.state = 7939;
						this.match(MySqlParser.RR_BRACKET);
						}
						break;

					case 6:
						{
						_localctx = new IsNullPredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7941;
						if (!(this.precpred(this._ctx, 9))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 9)");
						}
						this.state = 7942;
						this.match(MySqlParser.KW_IS);
						this.state = 7943;
						this.nullNotnull();
						}
						break;

					case 7:
						{
						_localctx = new SubqueryComparisonPredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7944;
						if (!(this.precpred(this._ctx, 7))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 7)");
						}
						this.state = 7945;
						this.comparisonOperator();
						this.state = 7946;
						(_localctx as SubqueryComparisonPredicateContext)._quantifier = this._input.LT(1);
						_la = this._input.LA(1);
						if (!(_la === MySqlParser.KW_ALL || _la === MySqlParser.KW_ANY || _la === MySqlParser.KW_SOME)) {
							(_localctx as SubqueryComparisonPredicateContext)._quantifier = this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						this.state = 7947;
						this.match(MySqlParser.LR_BRACKET);
						this.state = 7948;
						this.selectStatement();
						this.state = 7949;
						this.match(MySqlParser.RR_BRACKET);
						}
						break;

					case 8:
						{
						_localctx = new LikePredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7951;
						if (!(this.precpred(this._ctx, 4))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 4)");
						}
						this.state = 7953;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === MySqlParser.KW_NOT) {
							{
							this.state = 7952;
							this.match(MySqlParser.KW_NOT);
							}
						}

						this.state = 7955;
						this.match(MySqlParser.KW_LIKE);
						this.state = 7956;
						this.predicate(0);
						this.state = 7959;
						this._errHandler.sync(this);
						switch ( this.interpreter.adaptivePredict(this._input, 1158, this._ctx) ) {
						case 1:
							{
							this.state = 7957;
							this.match(MySqlParser.KW_ESCAPE);
							this.state = 7958;
							this.match(MySqlParser.STRING_LITERAL);
							}
							break;
						}
						}
						break;

					case 9:
						{
						_localctx = new JsonMemberOfPredicateContext(new PredicateContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_predicate);
						this.state = 7961;
						if (!(this.precpred(this._ctx, 2))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
						}
						this.state = 7962;
						this.match(MySqlParser.KW_MEMBER);
						this.state = 7963;
						this.match(MySqlParser.KW_OF);
						this.state = 7964;
						this.match(MySqlParser.LR_BRACKET);
						this.state = 7965;
						this.predicate(0);
						this.state = 7966;
						this.match(MySqlParser.RR_BRACKET);
						}
						break;
					}
					}
				}
				this.state = 7972;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1160, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public expressionAtom(): ExpressionAtomContext;
	public expressionAtom(_p: number): ExpressionAtomContext;
	// @RuleVersion(0)
	public expressionAtom(_p?: number): ExpressionAtomContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let _localctx: ExpressionAtomContext = new ExpressionAtomContext(this._ctx, _parentState);
		let _prevctx: ExpressionAtomContext = _localctx;
		let _startState: number = 810;
		this.enterRecursionRule(_localctx, 810, MySqlParser.RULE_expressionAtom, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8021;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1163, this._ctx) ) {
			case 1:
				{
				_localctx = new ConstantExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;

				this.state = 7974;
				this.constant();
				}
				break;

			case 2:
				{
				_localctx = new ColumnNameExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7975;
				this.columnName();
				}
				break;

			case 3:
				{
				_localctx = new FunctionCallExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7976;
				this.functionCall();
				}
				break;

			case 4:
				{
				_localctx = new MysqlVariableExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7977;
				this.mysqlVariable();
				}
				break;

			case 5:
				{
				_localctx = new UnaryExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7978;
				this.unaryOperator();
				this.state = 7979;
				this.expressionAtom(11);
				}
				break;

			case 6:
				{
				_localctx = new BinaryExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7981;
				this.match(MySqlParser.KW_BINARY);
				this.state = 7982;
				this.expressionAtom(10);
				}
				break;

			case 7:
				{
				_localctx = new VariableAssignExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7983;
				this.match(MySqlParser.LOCAL_ID);
				this.state = 7984;
				this.match(MySqlParser.VAR_ASSIGN);
				this.state = 7985;
				this.expressionAtom(9);
				}
				break;

			case 8:
				{
				_localctx = new NestedExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7986;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7987;
				this.expression(0);
				this.state = 7992;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === MySqlParser.COMMA) {
					{
					{
					this.state = 7988;
					this.match(MySqlParser.COMMA);
					this.state = 7989;
					this.expression(0);
					}
					}
					this.state = 7994;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 7995;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 9:
				{
				_localctx = new NestedRowExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 7997;
				this.match(MySqlParser.KW_ROW);
				this.state = 7998;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 7999;
				this.expression(0);
				this.state = 8002;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 8000;
					this.match(MySqlParser.COMMA);
					this.state = 8001;
					this.expression(0);
					}
					}
					this.state = 8004;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === MySqlParser.COMMA);
				this.state = 8006;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 10:
				{
				_localctx = new ExistsExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 8008;
				this.match(MySqlParser.KW_EXISTS);
				this.state = 8009;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 8010;
				this.selectStatement();
				this.state = 8011;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 11:
				{
				_localctx = new SubqueryExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 8013;
				this.match(MySqlParser.LR_BRACKET);
				this.state = 8014;
				this.selectStatement();
				this.state = 8015;
				this.match(MySqlParser.RR_BRACKET);
				}
				break;

			case 12:
				{
				_localctx = new IntervalExpressionAtomContext(_localctx);
				this._ctx = _localctx;
				_prevctx = _localctx;
				this.state = 8017;
				this.match(MySqlParser.KW_INTERVAL);
				this.state = 8018;
				this.expression(0);
				this.state = 8019;
				this.intervalType();
				}
				break;
			}
			this._ctx._stop = this._input.tryLT(-1);
			this.state = 8040;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1165, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = _localctx;
					{
					this.state = 8038;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1164, this._ctx) ) {
					case 1:
						{
						_localctx = new BitExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						(_localctx as BitExpressionAtomContext)._left = _prevctx;
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_expressionAtom);
						this.state = 8023;
						if (!(this.precpred(this._ctx, 3))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 3)");
						}
						this.state = 8024;
						this.bitOperator();
						this.state = 8025;
						(_localctx as BitExpressionAtomContext)._right = this.expressionAtom(4);
						}
						break;

					case 2:
						{
						_localctx = new MathExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						(_localctx as MathExpressionAtomContext)._left = _prevctx;
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_expressionAtom);
						this.state = 8027;
						if (!(this.precpred(this._ctx, 2))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
						}
						this.state = 8028;
						this.mathOperator();
						this.state = 8029;
						(_localctx as MathExpressionAtomContext)._right = this.expressionAtom(3);
						}
						break;

					case 3:
						{
						_localctx = new JsonExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						(_localctx as JsonExpressionAtomContext)._left = _prevctx;
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_expressionAtom);
						this.state = 8031;
						if (!(this.precpred(this._ctx, 1))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
						}
						this.state = 8032;
						this.jsonOperator();
						this.state = 8033;
						(_localctx as JsonExpressionAtomContext)._right = this.expressionAtom(2);
						}
						break;

					case 4:
						{
						_localctx = new CollateExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						this.pushNewRecursionContext(_localctx, _startState, MySqlParser.RULE_expressionAtom);
						this.state = 8035;
						if (!(this.precpred(this._ctx, 13))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 13)");
						}
						this.state = 8036;
						this.match(MySqlParser.KW_COLLATE);
						this.state = 8037;
						this.collationName();
						}
						break;
					}
					}
				}
				this.state = 8042;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1165, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unaryOperator(): UnaryOperatorContext {
		let _localctx: UnaryOperatorContext = new UnaryOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 812, MySqlParser.RULE_unaryOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8043;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_NOT || ((((_la - 853)) & ~0x1F) === 0 && ((1 << (_la - 853)) & ((1 << (MySqlParser.PLUS - 853)) | (1 << (MySqlParser.MINUS - 853)) | (1 << (MySqlParser.EXCLAMATION_SYMBOL - 853)) | (1 << (MySqlParser.BIT_NOT_OP - 853)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public comparisonOperator(): ComparisonOperatorContext {
		let _localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 814, MySqlParser.RULE_comparisonOperator);
		try {
			this.state = 8053;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1166, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8045;
				this.comparisonBase();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8046;
				this.match(MySqlParser.LESS_SYMBOL);
				this.state = 8047;
				this.match(MySqlParser.GREATER_SYMBOL);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8048;
				this.match(MySqlParser.EXCLAMATION_SYMBOL);
				this.state = 8049;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8050;
				this.match(MySqlParser.LESS_SYMBOL);
				this.state = 8051;
				this.match(MySqlParser.EQUAL_SYMBOL);
				this.state = 8052;
				this.match(MySqlParser.GREATER_SYMBOL);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public comparisonBase(): ComparisonBaseContext {
		let _localctx: ComparisonBaseContext = new ComparisonBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 816, MySqlParser.RULE_comparisonBase);
		try {
			this.state = 8062;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1167, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8055;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8056;
				this.match(MySqlParser.GREATER_SYMBOL);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8057;
				this.match(MySqlParser.LESS_SYMBOL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8058;
				this.match(MySqlParser.LESS_SYMBOL);
				this.state = 8059;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 8060;
				this.match(MySqlParser.GREATER_SYMBOL);
				this.state = 8061;
				this.match(MySqlParser.EQUAL_SYMBOL);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public logicalOperator(): LogicalOperatorContext {
		let _localctx: LogicalOperatorContext = new LogicalOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 818, MySqlParser.RULE_logicalOperator);
		try {
			this.state = 8071;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.KW_AND:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8064;
				this.match(MySqlParser.KW_AND);
				}
				break;
			case MySqlParser.BIT_AND_OP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8065;
				this.match(MySqlParser.BIT_AND_OP);
				this.state = 8066;
				this.match(MySqlParser.BIT_AND_OP);
				}
				break;
			case MySqlParser.KW_XOR:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8067;
				this.match(MySqlParser.KW_XOR);
				}
				break;
			case MySqlParser.KW_OR:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8068;
				this.match(MySqlParser.KW_OR);
				}
				break;
			case MySqlParser.BIT_OR_OP:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 8069;
				this.match(MySqlParser.BIT_OR_OP);
				this.state = 8070;
				this.match(MySqlParser.BIT_OR_OP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public bitOperator(): BitOperatorContext {
		let _localctx: BitOperatorContext = new BitOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 820, MySqlParser.RULE_bitOperator);
		try {
			this.state = 8080;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case MySqlParser.LESS_SYMBOL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8073;
				this.match(MySqlParser.LESS_SYMBOL);
				this.state = 8074;
				this.match(MySqlParser.LESS_SYMBOL);
				}
				break;
			case MySqlParser.GREATER_SYMBOL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8075;
				this.match(MySqlParser.GREATER_SYMBOL);
				this.state = 8076;
				this.match(MySqlParser.GREATER_SYMBOL);
				}
				break;
			case MySqlParser.BIT_AND_OP:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8077;
				this.match(MySqlParser.BIT_AND_OP);
				}
				break;
			case MySqlParser.BIT_XOR_OP:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8078;
				this.match(MySqlParser.BIT_XOR_OP);
				}
				break;
			case MySqlParser.BIT_OR_OP:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 8079;
				this.match(MySqlParser.BIT_OR_OP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public mathOperator(): MathOperatorContext {
		let _localctx: MathOperatorContext = new MathOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 822, MySqlParser.RULE_mathOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8082;
			_la = this._input.LA(1);
			if (!(((((_la - 850)) & ~0x1F) === 0 && ((1 << (_la - 850)) & ((1 << (MySqlParser.STAR - 850)) | (1 << (MySqlParser.DIVIDE - 850)) | (1 << (MySqlParser.MODULE - 850)) | (1 << (MySqlParser.PLUS - 850)) | (1 << (MySqlParser.MINUS - 850)) | (1 << (MySqlParser.DIV - 850)) | (1 << (MySqlParser.MOD - 850)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public jsonOperator(): JsonOperatorContext {
		let _localctx: JsonOperatorContext = new JsonOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 824, MySqlParser.RULE_jsonOperator);
		try {
			this.state = 8089;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1170, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8084;
				this.match(MySqlParser.MINUS);
				this.state = 8085;
				this.match(MySqlParser.GREATER_SYMBOL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8086;
				this.match(MySqlParser.MINUS);
				this.state = 8087;
				this.match(MySqlParser.GREATER_SYMBOL);
				this.state = 8088;
				this.match(MySqlParser.GREATER_SYMBOL);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public charsetNameBase(): CharsetNameBaseContext {
		let _localctx: CharsetNameBaseContext = new CharsetNameBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 826, MySqlParser.RULE_charsetNameBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8091;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_BINARY || ((((_la - 756)) & ~0x1F) === 0 && ((1 << (_la - 756)) & ((1 << (MySqlParser.KW_ARMSCII8 - 756)) | (1 << (MySqlParser.KW_ASCII - 756)) | (1 << (MySqlParser.KW_BIG5 - 756)) | (1 << (MySqlParser.KW_CP1250 - 756)) | (1 << (MySqlParser.KW_CP1251 - 756)) | (1 << (MySqlParser.KW_CP1256 - 756)) | (1 << (MySqlParser.KW_CP1257 - 756)) | (1 << (MySqlParser.KW_CP850 - 756)) | (1 << (MySqlParser.KW_CP852 - 756)) | (1 << (MySqlParser.KW_CP866 - 756)) | (1 << (MySqlParser.KW_CP932 - 756)) | (1 << (MySqlParser.KW_DEC8 - 756)) | (1 << (MySqlParser.KW_EUCJPMS - 756)) | (1 << (MySqlParser.KW_EUCKR - 756)) | (1 << (MySqlParser.KW_GB18030 - 756)) | (1 << (MySqlParser.KW_GB2312 - 756)) | (1 << (MySqlParser.KW_GBK - 756)) | (1 << (MySqlParser.KW_GEOSTD8 - 756)) | (1 << (MySqlParser.KW_GREEK - 756)) | (1 << (MySqlParser.KW_HEBREW - 756)) | (1 << (MySqlParser.KW_HP8 - 756)) | (1 << (MySqlParser.KW_KEYBCS2 - 756)) | (1 << (MySqlParser.KW_KOI8R - 756)) | (1 << (MySqlParser.KW_KOI8U - 756)) | (1 << (MySqlParser.KW_LATIN1 - 756)) | (1 << (MySqlParser.KW_LATIN2 - 756)) | (1 << (MySqlParser.KW_LATIN5 - 756)) | (1 << (MySqlParser.KW_LATIN7 - 756)) | (1 << (MySqlParser.KW_MACCE - 756)) | (1 << (MySqlParser.KW_MACROMAN - 756)) | (1 << (MySqlParser.KW_SJIS - 756)) | (1 << (MySqlParser.KW_SWE7 - 756)))) !== 0) || ((((_la - 788)) & ~0x1F) === 0 && ((1 << (_la - 788)) & ((1 << (MySqlParser.KW_TIS620 - 788)) | (1 << (MySqlParser.KW_UCS2 - 788)) | (1 << (MySqlParser.KW_UJIS - 788)) | (1 << (MySqlParser.KW_UTF16 - 788)) | (1 << (MySqlParser.KW_UTF16LE - 788)) | (1 << (MySqlParser.KW_UTF32 - 788)) | (1 << (MySqlParser.KW_UTF8 - 788)) | (1 << (MySqlParser.KW_UTF8MB3 - 788)) | (1 << (MySqlParser.KW_UTF8MB4 - 788)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionLevelBase(): TransactionLevelBaseContext {
		let _localctx: TransactionLevelBaseContext = new TransactionLevelBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 828, MySqlParser.RULE_transactionLevelBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8093;
			_la = this._input.LA(1);
			if (!(((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & ((1 << (MySqlParser.KW_REPEATABLE - 809)) | (1 << (MySqlParser.KW_COMMITTED - 809)) | (1 << (MySqlParser.KW_UNCOMMITTED - 809)) | (1 << (MySqlParser.KW_SERIALIZABLE - 809)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegesBase(): PrivilegesBaseContext {
		let _localctx: PrivilegesBaseContext = new PrivilegesBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 830, MySqlParser.RULE_privilegesBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8095;
			_la = this._input.LA(1);
			if (!(((((_la - 717)) & ~0x1F) === 0 && ((1 << (_la - 717)) & ((1 << (MySqlParser.KW_EXECUTE - 717)) | (1 << (MySqlParser.KW_FILE - 717)) | (1 << (MySqlParser.KW_PRIVILEGES - 717)) | (1 << (MySqlParser.KW_PROCESS - 717)) | (1 << (MySqlParser.KW_RELOAD - 717)) | (1 << (MySqlParser.KW_ROUTINE - 717)))) !== 0) || ((((_la - 749)) & ~0x1F) === 0 && ((1 << (_la - 749)) & ((1 << (MySqlParser.KW_SHUTDOWN - 749)) | (1 << (MySqlParser.KW_SUPER - 749)) | (1 << (MySqlParser.KW_TABLES - 749)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalTypeBase(): IntervalTypeBaseContext {
		let _localctx: IntervalTypeBaseContext = new IntervalTypeBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 832, MySqlParser.RULE_intervalTypeBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8097;
			_la = this._input.LA(1);
			if (!(((((_la - 696)) & ~0x1F) === 0 && ((1 << (_la - 696)) & ((1 << (MySqlParser.KW_QUARTER - 696)) | (1 << (MySqlParser.KW_MONTH - 696)) | (1 << (MySqlParser.KW_DAY - 696)) | (1 << (MySqlParser.KW_HOUR - 696)) | (1 << (MySqlParser.KW_MINUTE - 696)) | (1 << (MySqlParser.KW_WEEK - 696)) | (1 << (MySqlParser.KW_SECOND - 696)) | (1 << (MySqlParser.KW_MICROSECOND - 696)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dataTypeBase(): DataTypeBaseContext {
		let _localctx: DataTypeBaseContext = new DataTypeBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 834, MySqlParser.RULE_dataTypeBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8099;
			_la = this._input.LA(1);
			if (!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_DATETIME - 219)) | (1 << (MySqlParser.KW_YEAR - 219)) | (1 << (MySqlParser.KW_TEXT - 219)) | (1 << (MySqlParser.KW_ENUM - 219)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public keywordsCanBeId(): KeywordsCanBeIdContext {
		let _localctx: KeywordsCanBeIdContext = new KeywordsCanBeIdContext(this._ctx, this.state);
		this.enterRule(_localctx, 836, MySqlParser.RULE_keywordsCanBeId);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8101;
			_la = this._input.LA(1);
			if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MySqlParser.KW_ARRAY) | (1 << MySqlParser.KW_ATTRIBUTE) | (1 << MySqlParser.KW_BUCKETS) | (1 << MySqlParser.KW_CONDITION))) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & ((1 << (MySqlParser.KW_CURRENT - 36)) | (1 << (MySqlParser.KW_CURRENT_USER - 36)) | (1 << (MySqlParser.KW_DEFAULT - 36)) | (1 << (MySqlParser.KW_DIAGNOSTICS - 36)) | (1 << (MySqlParser.KW_EMPTY - 36)) | (1 << (MySqlParser.KW_ENFORCED - 36)) | (1 << (MySqlParser.KW_EXCEPT - 36)))) !== 0) || _la === MySqlParser.KW_GROUP || _la === MySqlParser.KW_LATERAL || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MySqlParser.KW_NUMBER - 117)) | (1 << (MySqlParser.KW_OPTIONAL - 117)) | (1 << (MySqlParser.KW_ORDER - 117)) | (1 << (MySqlParser.KW_PRIMARY - 117)))) !== 0) || _la === MySqlParser.KW_SKIP_QUERY_REWRITE || _la === MySqlParser.KW_STACKED || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & ((1 << (MySqlParser.KW_SERIAL - 241)) | (1 << (MySqlParser.KW_NESTED - 241)) | (1 << (MySqlParser.KW_ORDINALITY - 241)) | (1 << (MySqlParser.KW_PATH - 241)) | (1 << (MySqlParser.KW_AVG - 241)) | (1 << (MySqlParser.KW_BIT_AND - 241)) | (1 << (MySqlParser.KW_BIT_OR - 241)) | (1 << (MySqlParser.KW_BIT_XOR - 241)) | (1 << (MySqlParser.KW_COUNT - 241)) | (1 << (MySqlParser.KW_GROUP_CONCAT - 241)) | (1 << (MySqlParser.KW_MAX - 241)) | (1 << (MySqlParser.KW_MIN - 241)))) !== 0) || ((((_la - 277)) & ~0x1F) === 0 && ((1 << (_la - 277)) & ((1 << (MySqlParser.KW_STD - 277)) | (1 << (MySqlParser.KW_STDDEV - 277)) | (1 << (MySqlParser.KW_STDDEV_POP - 277)) | (1 << (MySqlParser.KW_STDDEV_SAMP - 277)) | (1 << (MySqlParser.KW_SUM - 277)) | (1 << (MySqlParser.KW_VAR_POP - 277)) | (1 << (MySqlParser.KW_VAR_SAMP - 277)) | (1 << (MySqlParser.KW_VARIANCE - 277)) | (1 << (MySqlParser.KW_ACCOUNT - 277)) | (1 << (MySqlParser.KW_ACTION - 277)) | (1 << (MySqlParser.KW_AFTER - 277)) | (1 << (MySqlParser.KW_AGGREGATE - 277)) | (1 << (MySqlParser.KW_ALGORITHM - 277)))) !== 0) || ((((_la - 309)) & ~0x1F) === 0 && ((1 << (_la - 309)) & ((1 << (MySqlParser.KW_ANY - 309)) | (1 << (MySqlParser.KW_AT - 309)) | (1 << (MySqlParser.KW_AUTHORS - 309)) | (1 << (MySqlParser.KW_AUTOCOMMIT - 309)) | (1 << (MySqlParser.KW_AUTOEXTEND_SIZE - 309)) | (1 << (MySqlParser.KW_AUTO_INCREMENT - 309)) | (1 << (MySqlParser.KW_AVG_ROW_LENGTH - 309)) | (1 << (MySqlParser.KW_BEGIN - 309)) | (1 << (MySqlParser.KW_BINLOG - 309)) | (1 << (MySqlParser.KW_BIT - 309)) | (1 << (MySqlParser.KW_BLOCK - 309)) | (1 << (MySqlParser.KW_BOOL - 309)) | (1 << (MySqlParser.KW_BOOLEAN - 309)) | (1 << (MySqlParser.KW_BTREE - 309)) | (1 << (MySqlParser.KW_CACHE - 309)) | (1 << (MySqlParser.KW_CASCADED - 309)) | (1 << (MySqlParser.KW_CHAIN - 309)) | (1 << (MySqlParser.KW_CHANGED - 309)) | (1 << (MySqlParser.KW_CHANNEL - 309)) | (1 << (MySqlParser.KW_CHECKSUM - 309)) | (1 << (MySqlParser.KW_CIPHER - 309)) | (1 << (MySqlParser.KW_CLASS_ORIGIN - 309)) | (1 << (MySqlParser.KW_CLIENT - 309)) | (1 << (MySqlParser.KW_CLOSE - 309)) | (1 << (MySqlParser.KW_COALESCE - 309)) | (1 << (MySqlParser.KW_CODE - 309)) | (1 << (MySqlParser.KW_COLUMNS - 309)) | (1 << (MySqlParser.KW_COLUMN_FORMAT - 309)) | (1 << (MySqlParser.KW_COLUMN_NAME - 309)) | (1 << (MySqlParser.KW_COMMENT - 309)))) !== 0) || ((((_la - 341)) & ~0x1F) === 0 && ((1 << (_la - 341)) & ((1 << (MySqlParser.KW_COMMIT - 341)) | (1 << (MySqlParser.KW_COMPACT - 341)) | (1 << (MySqlParser.KW_COMPLETION - 341)) | (1 << (MySqlParser.KW_COMPRESSED - 341)) | (1 << (MySqlParser.KW_COMPRESSION - 341)) | (1 << (MySqlParser.KW_CONCURRENT - 341)) | (1 << (MySqlParser.KW_CONNECT - 341)) | (1 << (MySqlParser.KW_CONNECTION - 341)) | (1 << (MySqlParser.KW_CONSISTENT - 341)) | (1 << (MySqlParser.KW_CONSTRAINT_CATALOG - 341)) | (1 << (MySqlParser.KW_CONSTRAINT_SCHEMA - 341)) | (1 << (MySqlParser.KW_CONSTRAINT_NAME - 341)) | (1 << (MySqlParser.KW_CONTAINS - 341)) | (1 << (MySqlParser.KW_CONTEXT - 341)) | (1 << (MySqlParser.KW_CONTRIBUTORS - 341)) | (1 << (MySqlParser.KW_COPY - 341)) | (1 << (MySqlParser.KW_CPU - 341)) | (1 << (MySqlParser.KW_CURSOR_NAME - 341)) | (1 << (MySqlParser.KW_DATA - 341)) | (1 << (MySqlParser.KW_DATAFILE - 341)) | (1 << (MySqlParser.KW_DEALLOCATE - 341)) | (1 << (MySqlParser.KW_DEFAULT_AUTH - 341)) | (1 << (MySqlParser.KW_DEFINER - 341)) | (1 << (MySqlParser.KW_DELAY_KEY_WRITE - 341)) | (1 << (MySqlParser.KW_DES_KEY_FILE - 341)) | (1 << (MySqlParser.KW_DIRECTORY - 341)) | (1 << (MySqlParser.KW_DISABLE - 341)) | (1 << (MySqlParser.KW_DISCARD - 341)) | (1 << (MySqlParser.KW_DISK - 341)) | (1 << (MySqlParser.KW_DO - 341)) | (1 << (MySqlParser.KW_DUMPFILE - 341)))) !== 0) || ((((_la - 373)) & ~0x1F) === 0 && ((1 << (_la - 373)) & ((1 << (MySqlParser.KW_DUPLICATE - 373)) | (1 << (MySqlParser.KW_DYNAMIC - 373)) | (1 << (MySqlParser.KW_ENABLE - 373)) | (1 << (MySqlParser.KW_ENCRYPTION - 373)) | (1 << (MySqlParser.KW_END - 373)) | (1 << (MySqlParser.KW_ENDS - 373)) | (1 << (MySqlParser.KW_ENGINE - 373)) | (1 << (MySqlParser.KW_ENGINES - 373)) | (1 << (MySqlParser.KW_ERROR - 373)) | (1 << (MySqlParser.KW_ERRORS - 373)) | (1 << (MySqlParser.KW_ESCAPE - 373)) | (1 << (MySqlParser.KW_EVENT - 373)) | (1 << (MySqlParser.KW_EVENTS - 373)) | (1 << (MySqlParser.KW_EVERY - 373)) | (1 << (MySqlParser.KW_EXCHANGE - 373)) | (1 << (MySqlParser.KW_EXCLUSIVE - 373)) | (1 << (MySqlParser.KW_EXPIRE - 373)) | (1 << (MySqlParser.KW_EXPORT - 373)) | (1 << (MySqlParser.KW_EXTENDED - 373)) | (1 << (MySqlParser.KW_EXTENT_SIZE - 373)) | (1 << (MySqlParser.KW_FAILED_LOGIN_ATTEMPTS - 373)) | (1 << (MySqlParser.KW_FAST - 373)) | (1 << (MySqlParser.KW_FAULTS - 373)) | (1 << (MySqlParser.KW_FIELDS - 373)) | (1 << (MySqlParser.KW_FILE_BLOCK_SIZE - 373)) | (1 << (MySqlParser.KW_FILTER - 373)) | (1 << (MySqlParser.KW_FIRST - 373)) | (1 << (MySqlParser.KW_FIXED - 373)) | (1 << (MySqlParser.KW_FLUSH - 373)))) !== 0) || ((((_la - 406)) & ~0x1F) === 0 && ((1 << (_la - 406)) & ((1 << (MySqlParser.KW_FOLLOWS - 406)) | (1 << (MySqlParser.KW_FOUND - 406)) | (1 << (MySqlParser.KW_FULL - 406)) | (1 << (MySqlParser.KW_FUNCTION - 406)) | (1 << (MySqlParser.KW_GENERAL - 406)) | (1 << (MySqlParser.KW_GLOBAL - 406)) | (1 << (MySqlParser.KW_GRANTS - 406)) | (1 << (MySqlParser.KW_GROUP_REPLICATION - 406)) | (1 << (MySqlParser.KW_HANDLER - 406)) | (1 << (MySqlParser.KW_HASH - 406)) | (1 << (MySqlParser.KW_HELP - 406)) | (1 << (MySqlParser.KW_HISTORY - 406)) | (1 << (MySqlParser.KW_HOST - 406)) | (1 << (MySqlParser.KW_HOSTS - 406)) | (1 << (MySqlParser.KW_IDENTIFIED - 406)) | (1 << (MySqlParser.KW_IGNORE_SERVER_IDS - 406)) | (1 << (MySqlParser.KW_IMPORT - 406)) | (1 << (MySqlParser.KW_INDEXES - 406)) | (1 << (MySqlParser.KW_INITIAL_SIZE - 406)) | (1 << (MySqlParser.KW_INPLACE - 406)) | (1 << (MySqlParser.KW_INSERT_METHOD - 406)) | (1 << (MySqlParser.KW_INSTALL - 406)) | (1 << (MySqlParser.KW_INSTANCE - 406)) | (1 << (MySqlParser.KW_INSTANT - 406)) | (1 << (MySqlParser.KW_INVOKER - 406)) | (1 << (MySqlParser.KW_IO - 406)))) !== 0) || ((((_la - 438)) & ~0x1F) === 0 && ((1 << (_la - 438)) & ((1 << (MySqlParser.KW_IO_THREAD - 438)) | (1 << (MySqlParser.KW_IPC - 438)) | (1 << (MySqlParser.KW_ISOLATION - 438)) | (1 << (MySqlParser.KW_ISSUER - 438)) | (1 << (MySqlParser.KW_JSON - 438)) | (1 << (MySqlParser.KW_KEY_BLOCK_SIZE - 438)) | (1 << (MySqlParser.KW_LANGUAGE - 438)) | (1 << (MySqlParser.KW_LAST - 438)) | (1 << (MySqlParser.KW_LEAVES - 438)) | (1 << (MySqlParser.KW_LESS - 438)) | (1 << (MySqlParser.KW_LEVEL - 438)) | (1 << (MySqlParser.KW_LIST - 438)) | (1 << (MySqlParser.KW_LOCAL - 438)) | (1 << (MySqlParser.KW_LOGFILE - 438)) | (1 << (MySqlParser.KW_LOGS - 438)) | (1 << (MySqlParser.KW_MASTER - 438)) | (1 << (MySqlParser.KW_MASTER_AUTO_POSITION - 438)) | (1 << (MySqlParser.KW_MASTER_CONNECT_RETRY - 438)) | (1 << (MySqlParser.KW_MASTER_DELAY - 438)) | (1 << (MySqlParser.KW_MASTER_HEARTBEAT_PERIOD - 438)) | (1 << (MySqlParser.KW_MASTER_HOST - 438)) | (1 << (MySqlParser.KW_MASTER_LOG_FILE - 438)) | (1 << (MySqlParser.KW_MASTER_LOG_POS - 438)) | (1 << (MySqlParser.KW_MASTER_PASSWORD - 438)) | (1 << (MySqlParser.KW_MASTER_PORT - 438)) | (1 << (MySqlParser.KW_MASTER_RETRY_COUNT - 438)) | (1 << (MySqlParser.KW_MASTER_SSL - 438)) | (1 << (MySqlParser.KW_MASTER_SSL_CA - 438)) | (1 << (MySqlParser.KW_MASTER_SSL_CAPATH - 438)) | (1 << (MySqlParser.KW_MASTER_SSL_CERT - 438)))) !== 0) || ((((_la - 470)) & ~0x1F) === 0 && ((1 << (_la - 470)) & ((1 << (MySqlParser.KW_MASTER_SSL_CIPHER - 470)) | (1 << (MySqlParser.KW_MASTER_SSL_CRL - 470)) | (1 << (MySqlParser.KW_MASTER_SSL_CRLPATH - 470)) | (1 << (MySqlParser.KW_MASTER_SSL_KEY - 470)) | (1 << (MySqlParser.KW_MASTER_TLS_VERSION - 470)) | (1 << (MySqlParser.KW_MASTER_USER - 470)) | (1 << (MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR - 470)) | (1 << (MySqlParser.KW_MAX_QUERIES_PER_HOUR - 470)) | (1 << (MySqlParser.KW_MAX_ROWS - 470)) | (1 << (MySqlParser.KW_MAX_SIZE - 470)) | (1 << (MySqlParser.KW_MAX_UPDATES_PER_HOUR - 470)) | (1 << (MySqlParser.KW_MAX_USER_CONNECTIONS - 470)) | (1 << (MySqlParser.KW_MEDIUM - 470)) | (1 << (MySqlParser.KW_MEMBER - 470)) | (1 << (MySqlParser.KW_MERGE - 470)) | (1 << (MySqlParser.KW_MESSAGE_TEXT - 470)) | (1 << (MySqlParser.KW_MID - 470)) | (1 << (MySqlParser.KW_MIGRATE - 470)) | (1 << (MySqlParser.KW_MIN_ROWS - 470)) | (1 << (MySqlParser.KW_MODE - 470)) | (1 << (MySqlParser.KW_MODIFY - 470)) | (1 << (MySqlParser.KW_MUTEX - 470)) | (1 << (MySqlParser.KW_MYSQL - 470)) | (1 << (MySqlParser.KW_MYSQL_ERRNO - 470)) | (1 << (MySqlParser.KW_NAME - 470)) | (1 << (MySqlParser.KW_NAMES - 470)) | (1 << (MySqlParser.KW_NCHAR - 470)) | (1 << (MySqlParser.KW_NEVER - 470)) | (1 << (MySqlParser.KW_NEXT - 470)))) !== 0) || ((((_la - 502)) & ~0x1F) === 0 && ((1 << (_la - 502)) & ((1 << (MySqlParser.KW_NO - 502)) | (1 << (MySqlParser.KW_NOWAIT - 502)) | (1 << (MySqlParser.KW_NODEGROUP - 502)) | (1 << (MySqlParser.KW_NONE - 502)) | (1 << (MySqlParser.KW_ODBC - 502)) | (1 << (MySqlParser.KW_OFFLINE - 502)) | (1 << (MySqlParser.KW_OFFSET - 502)) | (1 << (MySqlParser.KW_OF - 502)) | (1 << (MySqlParser.KW_OLD_PASSWORD - 502)) | (1 << (MySqlParser.KW_ONE - 502)) | (1 << (MySqlParser.KW_ONLINE - 502)) | (1 << (MySqlParser.KW_ONLY - 502)) | (1 << (MySqlParser.KW_OPEN - 502)) | (1 << (MySqlParser.KW_OPTIMIZER_COSTS - 502)) | (1 << (MySqlParser.KW_OPTIONS - 502)) | (1 << (MySqlParser.KW_OWNER - 502)) | (1 << (MySqlParser.KW_PACK_KEYS - 502)) | (1 << (MySqlParser.KW_PAGE - 502)) | (1 << (MySqlParser.KW_PAGE_CHECKSUM - 502)) | (1 << (MySqlParser.KW_PARSER - 502)) | (1 << (MySqlParser.KW_PARTIAL - 502)) | (1 << (MySqlParser.KW_PARTITIONING - 502)) | (1 << (MySqlParser.KW_PARTITIONS - 502)) | (1 << (MySqlParser.KW_PASSWORD - 502)) | (1 << (MySqlParser.KW_PASSWORD_LOCK_TIME - 502)) | (1 << (MySqlParser.KW_PHASE - 502)))) !== 0) || ((((_la - 534)) & ~0x1F) === 0 && ((1 << (_la - 534)) & ((1 << (MySqlParser.KW_PLUGIN - 534)) | (1 << (MySqlParser.KW_PLUGIN_DIR - 534)) | (1 << (MySqlParser.KW_PLUGINS - 534)) | (1 << (MySqlParser.KW_PORT - 534)) | (1 << (MySqlParser.KW_PRECEDES - 534)) | (1 << (MySqlParser.KW_PREPARE - 534)) | (1 << (MySqlParser.KW_PRESERVE - 534)) | (1 << (MySqlParser.KW_PREV - 534)) | (1 << (MySqlParser.KW_PROCESSLIST - 534)) | (1 << (MySqlParser.KW_PROFILE - 534)) | (1 << (MySqlParser.KW_PROFILES - 534)) | (1 << (MySqlParser.KW_PROXY - 534)) | (1 << (MySqlParser.KW_QUERY - 534)) | (1 << (MySqlParser.KW_QUICK - 534)) | (1 << (MySqlParser.KW_REBUILD - 534)) | (1 << (MySqlParser.KW_RECOVER - 534)) | (1 << (MySqlParser.KW_RECURSIVE - 534)) | (1 << (MySqlParser.KW_REDO_BUFFER_SIZE - 534)) | (1 << (MySqlParser.KW_REDUNDANT - 534)) | (1 << (MySqlParser.KW_RELAY - 534)) | (1 << (MySqlParser.KW_RELAY_LOG_FILE - 534)) | (1 << (MySqlParser.KW_RELAY_LOG_POS - 534)) | (1 << (MySqlParser.KW_RELAYLOG - 534)) | (1 << (MySqlParser.KW_REMOVE - 534)) | (1 << (MySqlParser.KW_REORGANIZE - 534)) | (1 << (MySqlParser.KW_REPAIR - 534)) | (1 << (MySqlParser.KW_REPLICATE_DO_DB - 534)))) !== 0) || ((((_la - 566)) & ~0x1F) === 0 && ((1 << (_la - 566)) & ((1 << (MySqlParser.KW_REPLICATE_DO_TABLE - 566)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_DB - 566)) | (1 << (MySqlParser.KW_REPLICATE_IGNORE_TABLE - 566)) | (1 << (MySqlParser.KW_REPLICATE_REWRITE_DB - 566)) | (1 << (MySqlParser.KW_REPLICATE_WILD_DO_TABLE - 566)) | (1 << (MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE - 566)) | (1 << (MySqlParser.KW_REPLICATION - 566)) | (1 << (MySqlParser.KW_RESET - 566)) | (1 << (MySqlParser.KW_RESUME - 566)) | (1 << (MySqlParser.KW_RETURNED_SQLSTATE - 566)) | (1 << (MySqlParser.KW_RETURNS - 566)) | (1 << (MySqlParser.KW_REUSE - 566)) | (1 << (MySqlParser.KW_ROLE - 566)) | (1 << (MySqlParser.KW_ROLLBACK - 566)) | (1 << (MySqlParser.KW_ROLLUP - 566)) | (1 << (MySqlParser.KW_ROTATE - 566)) | (1 << (MySqlParser.KW_ROW - 566)) | (1 << (MySqlParser.KW_ROWS - 566)) | (1 << (MySqlParser.KW_ROW_FORMAT - 566)) | (1 << (MySqlParser.KW_SAVEPOINT - 566)) | (1 << (MySqlParser.KW_SCHEDULE - 566)) | (1 << (MySqlParser.KW_SECURITY - 566)) | (1 << (MySqlParser.KW_SERVER - 566)) | (1 << (MySqlParser.KW_SESSION - 566)) | (1 << (MySqlParser.KW_SHARE - 566)) | (1 << (MySqlParser.KW_SHARED - 566)) | (1 << (MySqlParser.KW_SIGNED - 566)) | (1 << (MySqlParser.KW_SIMPLE - 566)))) !== 0) || ((((_la - 598)) & ~0x1F) === 0 && ((1 << (_la - 598)) & ((1 << (MySqlParser.KW_SLAVE - 598)) | (1 << (MySqlParser.KW_SLOW - 598)) | (1 << (MySqlParser.KW_SNAPSHOT - 598)) | (1 << (MySqlParser.KW_SOCKET - 598)) | (1 << (MySqlParser.KW_SOME - 598)) | (1 << (MySqlParser.KW_SONAME - 598)) | (1 << (MySqlParser.KW_SOUNDS - 598)) | (1 << (MySqlParser.KW_SOURCE - 598)))) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & ((1 << (MySqlParser.KW_SQL_AFTER_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_AFTER_MTS_GAPS - 633)) | (1 << (MySqlParser.KW_SQL_BEFORE_GTIDS - 633)) | (1 << (MySqlParser.KW_SQL_BUFFER_RESULT - 633)) | (1 << (MySqlParser.KW_SQL_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_NO_CACHE - 633)) | (1 << (MySqlParser.KW_SQL_THREAD - 633)) | (1 << (MySqlParser.KW_START - 633)) | (1 << (MySqlParser.KW_STARTS - 633)) | (1 << (MySqlParser.KW_STATS_AUTO_RECALC - 633)) | (1 << (MySqlParser.KW_STATS_PERSISTENT - 633)) | (1 << (MySqlParser.KW_STATS_SAMPLE_PAGES - 633)) | (1 << (MySqlParser.KW_STATUS - 633)) | (1 << (MySqlParser.KW_STOP - 633)) | (1 << (MySqlParser.KW_STORAGE - 633)) | (1 << (MySqlParser.KW_STRING - 633)) | (1 << (MySqlParser.KW_SUBCLASS_ORIGIN - 633)) | (1 << (MySqlParser.KW_SUBJECT - 633)) | (1 << (MySqlParser.KW_SUBPARTITION - 633)) | (1 << (MySqlParser.KW_SUBPARTITIONS - 633)) | (1 << (MySqlParser.KW_SUSPEND - 633)) | (1 << (MySqlParser.KW_SWAPS - 633)) | (1 << (MySqlParser.KW_SWITCHES - 633)) | (1 << (MySqlParser.KW_TABLE_NAME - 633)) | (1 << (MySqlParser.KW_TABLESPACE - 633)) | (1 << (MySqlParser.KW_TABLE_TYPE - 633)) | (1 << (MySqlParser.KW_TEMPORARY - 633)) | (1 << (MySqlParser.KW_TEMPTABLE - 633)) | (1 << (MySqlParser.KW_THAN - 633)) | (1 << (MySqlParser.KW_TRADITIONAL - 633)) | (1 << (MySqlParser.KW_TRANSACTION - 633)))) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & ((1 << (MySqlParser.KW_TRANSACTIONAL - 665)) | (1 << (MySqlParser.KW_TRIGGERS - 665)) | (1 << (MySqlParser.KW_TRUNCATE - 665)) | (1 << (MySqlParser.KW_UNBOUNDED - 665)) | (1 << (MySqlParser.KW_UNDEFINED - 665)) | (1 << (MySqlParser.KW_UNDOFILE - 665)) | (1 << (MySqlParser.KW_UNDO_BUFFER_SIZE - 665)) | (1 << (MySqlParser.KW_UNINSTALL - 665)) | (1 << (MySqlParser.KW_UNKNOWN - 665)) | (1 << (MySqlParser.KW_UNTIL - 665)) | (1 << (MySqlParser.KW_UPGRADE - 665)) | (1 << (MySqlParser.KW_USER - 665)) | (1 << (MySqlParser.KW_USE_FRM - 665)) | (1 << (MySqlParser.KW_USER_RESOURCES - 665)) | (1 << (MySqlParser.KW_VALIDATION - 665)) | (1 << (MySqlParser.KW_VALUE - 665)) | (1 << (MySqlParser.KW_VARIABLES - 665)) | (1 << (MySqlParser.KW_VIEW - 665)) | (1 << (MySqlParser.KW_VIRTUAL - 665)) | (1 << (MySqlParser.KW_WAIT - 665)) | (1 << (MySqlParser.KW_WARNINGS - 665)) | (1 << (MySqlParser.KW_WITHOUT - 665)) | (1 << (MySqlParser.KW_WORK - 665)) | (1 << (MySqlParser.KW_WRAPPER - 665)) | (1 << (MySqlParser.KW_X509 - 665)) | (1 << (MySqlParser.KW_XA - 665)) | (1 << (MySqlParser.KW_XML - 665)))) !== 0) || ((((_la - 704)) & ~0x1F) === 0 && ((1 << (_la - 704)) & ((1 << (MySqlParser.KW_ADMIN - 704)) | (1 << (MySqlParser.KW_AUDIT_ABORT_EXEMPT - 704)) | (1 << (MySqlParser.KW_AUDIT_ADMIN - 704)) | (1 << (MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN - 704)) | (1 << (MySqlParser.KW_BACKUP_ADMIN - 704)) | (1 << (MySqlParser.KW_BINLOG_ADMIN - 704)) | (1 << (MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN - 704)) | (1 << (MySqlParser.KW_CLONE_ADMIN - 704)) | (1 << (MySqlParser.KW_CONNECTION_ADMIN - 704)) | (1 << (MySqlParser.KW_ENCRYPTION_KEY_ADMIN - 704)) | (1 << (MySqlParser.KW_FIREWALL_ADMIN - 704)) | (1 << (MySqlParser.KW_FIREWALL_EXEMPT - 704)) | (1 << (MySqlParser.KW_FIREWALL_USER - 704)) | (1 << (MySqlParser.KW_GROUP_REPLICATION_ADMIN - 704)) | (1 << (MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE - 704)) | (1 << (MySqlParser.KW_INVOKE - 704)) | (1 << (MySqlParser.KW_LAMBDA - 704)) | (1 << (MySqlParser.KW_NDB_STORED_USER - 704)) | (1 << (MySqlParser.KW_PASSWORDLESS_USER_ADMIN - 704)) | (1 << (MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN - 704)))) !== 0) || ((((_la - 737)) & ~0x1F) === 0 && ((1 << (_la - 737)) & ((1 << (MySqlParser.KW_REPLICATION_APPLIER - 737)) | (1 << (MySqlParser.KW_REPLICATION_SLAVE_ADMIN - 737)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_ADMIN - 737)) | (1 << (MySqlParser.KW_RESOURCE_GROUP_USER - 737)) | (1 << (MySqlParser.KW_ROLE_ADMIN - 737)) | (1 << (MySqlParser.KW_S3 - 737)) | (1 << (MySqlParser.KW_SESSION_VARIABLES_ADMIN - 737)) | (1 << (MySqlParser.KW_SET_USER_ID - 737)) | (1 << (MySqlParser.KW_SHOW_ROUTINE - 737)) | (1 << (MySqlParser.KW_SYSTEM_VARIABLES_ADMIN - 737)) | (1 << (MySqlParser.KW_TABLE_ENCRYPTION_ADMIN - 737)) | (1 << (MySqlParser.KW_VERSION_TOKEN_ADMIN - 737)) | (1 << (MySqlParser.KW_XA_RECOVER_ADMIN - 737)))) !== 0) || ((((_la - 802)) & ~0x1F) === 0 && ((1 << (_la - 802)) & ((1 << (MySqlParser.KW_MEMORY - 802)) | (1 << (MySqlParser.KW_CATALOG_NAME - 802)) | (1 << (MySqlParser.KW_ENGINE_ATTRIBUTE - 802)) | (1 << (MySqlParser.KW_SCHEMA_NAME - 802)) | (1 << (MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE - 802)))) !== 0) || _la === MySqlParser.KW_TP_CONNECTION_ADMIN)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionNameBase(): FunctionNameBaseContext {
		let _localctx: FunctionNameBaseContext = new FunctionNameBaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 838, MySqlParser.RULE_functionNameBase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8103;
			_la = this._input.LA(1);
			if (!(_la === MySqlParser.KW_DATABASE || _la === MySqlParser.KW_LEFT || _la === MySqlParser.KW_RIGHT || _la === MySqlParser.KW_SCHEMA || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & ((1 << (MySqlParser.KW_DATE - 219)) | (1 << (MySqlParser.KW_TIME - 219)) | (1 << (MySqlParser.KW_TIMESTAMP - 219)) | (1 << (MySqlParser.KW_YEAR - 219)))) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & ((1 << (MySqlParser.KW_JSON_TABLE - 253)) | (1 << (MySqlParser.KW_JSON_VALUE - 253)) | (1 << (MySqlParser.KW_COUNT - 253)) | (1 << (MySqlParser.KW_CUME_DIST - 253)) | (1 << (MySqlParser.KW_DENSE_RANK - 253)) | (1 << (MySqlParser.KW_FIRST_VALUE - 253)) | (1 << (MySqlParser.KW_LAG - 253)) | (1 << (MySqlParser.KW_LAST_VALUE - 253)) | (1 << (MySqlParser.KW_LEAD - 253)) | (1 << (MySqlParser.KW_NTILE - 253)) | (1 << (MySqlParser.KW_NTH_VALUE - 253)) | (1 << (MySqlParser.KW_PERCENT_RANK - 253)) | (1 << (MySqlParser.KW_RANK - 253)) | (1 << (MySqlParser.KW_ROW_NUMBER - 253)))) !== 0) || _la === MySqlParser.KW_POSITION || _la === MySqlParser.KW_INVISIBLE || ((((_la - 686)) & ~0x1F) === 0 && ((1 << (_la - 686)) & ((1 << (MySqlParser.KW_VISIBLE - 686)) | (1 << (MySqlParser.KW_QUARTER - 686)) | (1 << (MySqlParser.KW_MONTH - 686)) | (1 << (MySqlParser.KW_DAY - 686)) | (1 << (MySqlParser.KW_HOUR - 686)) | (1 << (MySqlParser.KW_MINUTE - 686)) | (1 << (MySqlParser.KW_WEEK - 686)) | (1 << (MySqlParser.KW_SECOND - 686)) | (1 << (MySqlParser.KW_MICROSECOND - 686)))) !== 0) || _la === MySqlParser.KW_SESSION_VARIABLES_ADMIN || ((((_la - 813)) & ~0x1F) === 0 && ((1 << (_la - 813)) & ((1 << (MySqlParser.KW_GEOMETRYCOLLECTION - 813)) | (1 << (MySqlParser.KW_LINESTRING - 813)) | (1 << (MySqlParser.KW_MULTILINESTRING - 813)) | (1 << (MySqlParser.KW_MULTIPOINT - 813)) | (1 << (MySqlParser.KW_MULTIPOLYGON - 813)) | (1 << (MySqlParser.KW_POINT - 813)) | (1 << (MySqlParser.KW_POLYGON - 813)) | (1 << (MySqlParser.KW_CHARSET - 813)) | (1 << (MySqlParser.KW_COLLATION - 813)) | (1 << (MySqlParser.KW_FORMAT - 813)) | (1 << (MySqlParser.KW_GET_FORMAT - 813)) | (1 << (MySqlParser.KW_RANDOM - 813)) | (1 << (MySqlParser.KW_REVERSE - 813)) | (1 << (MySqlParser.KW_ROW_COUNT - 813)) | (1 << (MySqlParser.KW_SRID - 813)) | (1 << (MySqlParser.KW_SYSTEM_USER - 813)) | (1 << (MySqlParser.KW_WEIGHT_STRING - 813)))) !== 0) || _la === MySqlParser.MOD)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}

	public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean {
		switch (ruleIndex) {
		case 104:
			return this.queryExpressionBody_sempred(_localctx as QueryExpressionBodyContext, predIndex);

		case 105:
			return this.queryItem_sempred(_localctx as QueryItemContext, predIndex);

		case 403:
			return this.expression_sempred(_localctx as ExpressionContext, predIndex);

		case 404:
			return this.predicate_sempred(_localctx as PredicateContext, predIndex);

		case 405:
			return this.expressionAtom_sempred(_localctx as ExpressionAtomContext, predIndex);
		}
		return true;
	}
	private queryExpressionBody_sempred(_localctx: QueryExpressionBodyContext, predIndex: number): boolean {
		switch (predIndex) {
		case 0:
			return this.precpred(this._ctx, 2);

		case 1:
			return this.precpred(this._ctx, 1);
		}
		return true;
	}
	private queryItem_sempred(_localctx: QueryItemContext, predIndex: number): boolean {
		switch (predIndex) {
		case 2:
			return this.precpred(this._ctx, 1);
		}
		return true;
	}
	private expression_sempred(_localctx: ExpressionContext, predIndex: number): boolean {
		switch (predIndex) {
		case 3:
			return this.precpred(this._ctx, 3);
		}
		return true;
	}
	private predicate_sempred(_localctx: PredicateContext, predIndex: number): boolean {
		switch (predIndex) {
		case 4:
			return this.precpred(this._ctx, 8);

		case 5:
			return this.precpred(this._ctx, 6);

		case 6:
			return this.precpred(this._ctx, 5);

		case 7:
			return this.precpred(this._ctx, 3);

		case 8:
			return this.precpred(this._ctx, 10);

		case 9:
			return this.precpred(this._ctx, 9);

		case 10:
			return this.precpred(this._ctx, 7);

		case 11:
			return this.precpred(this._ctx, 4);

		case 12:
			return this.precpred(this._ctx, 2);
		}
		return true;
	}
	private expressionAtom_sempred(_localctx: ExpressionAtomContext, predIndex: number): boolean {
		switch (predIndex) {
		case 13:
			return this.precpred(this._ctx, 3);

		case 14:
			return this.precpred(this._ctx, 2);

		case 15:
			return this.precpred(this._ctx, 1);

		case 16:
			return this.precpred(this._ctx, 13);
		}
		return true;
	}

	private static readonly _serializedATNSegments: number = 16;
	private static readonly _serializedATNSegment0: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\u0381\u1FAC\x04" +
		"\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
		"\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
		"\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
		"\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17" +
		"\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C" +
		"\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04" +
		"#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t" +
		"+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" +
		"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" +
		"=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" +
		"F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" +
		"O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" +
		"X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" +
		"`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04" +
		"i\ti\x04j\tj\x04k\tk\x04l\tl\x04m\tm\x04n\tn\x04o\to\x04p\tp\x04q\tq\x04" +
		"r\tr\x04s\ts\x04t\tt\x04u\tu\x04v\tv\x04w\tw\x04x\tx\x04y\ty\x04z\tz\x04" +
		"{\t{\x04|\t|\x04}\t}\x04~\t~\x04\x7F\t\x7F\x04\x80\t\x80\x04\x81\t\x81" +
		"\x04\x82\t\x82\x04\x83\t\x83\x04\x84\t\x84\x04\x85\t\x85\x04\x86\t\x86" +
		"\x04\x87\t\x87\x04\x88\t\x88\x04\x89\t\x89\x04\x8A\t\x8A\x04\x8B\t\x8B" +
		"\x04\x8C\t\x8C\x04\x8D\t\x8D\x04\x8E\t\x8E\x04\x8F\t\x8F\x04\x90\t\x90" +
		"\x04\x91\t\x91\x04\x92\t\x92\x04\x93\t\x93\x04\x94\t\x94\x04\x95\t\x95" +
		"\x04\x96\t\x96\x04\x97\t\x97\x04\x98\t\x98\x04\x99\t\x99\x04\x9A\t\x9A" +
		"\x04\x9B\t\x9B\x04\x9C\t\x9C\x04\x9D\t\x9D\x04\x9E\t\x9E\x04\x9F\t\x9F" +
		"\x04\xA0\t\xA0\x04\xA1\t\xA1\x04\xA2\t\xA2\x04\xA3\t\xA3\x04\xA4\t\xA4" +
		"\x04\xA5\t\xA5\x04\xA6\t\xA6\x04\xA7\t\xA7\x04\xA8\t\xA8\x04\xA9\t\xA9" +
		"\x04\xAA\t\xAA\x04\xAB\t\xAB\x04\xAC\t\xAC\x04\xAD\t\xAD\x04\xAE\t\xAE" +
		"\x04\xAF\t\xAF\x04\xB0\t\xB0\x04\xB1\t\xB1\x04\xB2\t\xB2\x04\xB3\t\xB3" +
		"\x04\xB4\t\xB4\x04\xB5\t\xB5\x04\xB6\t\xB6\x04\xB7\t\xB7\x04\xB8\t\xB8" +
		"\x04\xB9\t\xB9\x04\xBA\t\xBA\x04\xBB\t\xBB\x04\xBC\t\xBC\x04\xBD\t\xBD" +
		"\x04\xBE\t\xBE\x04\xBF\t\xBF\x04\xC0\t\xC0\x04\xC1\t\xC1\x04\xC2\t\xC2" +
		"\x04\xC3\t\xC3\x04\xC4\t\xC4\x04\xC5\t\xC5\x04\xC6\t\xC6\x04\xC7\t\xC7" +
		"\x04\xC8\t\xC8\x04\xC9\t\xC9\x04\xCA\t\xCA\x04\xCB\t\xCB\x04\xCC\t\xCC" +
		"\x04\xCD\t\xCD\x04\xCE\t\xCE\x04\xCF\t\xCF\x04\xD0\t\xD0\x04\xD1\t\xD1" +
		"\x04\xD2\t\xD2\x04\xD3\t\xD3\x04\xD4\t\xD4\x04\xD5\t\xD5\x04\xD6\t\xD6" +
		"\x04\xD7\t\xD7\x04\xD8\t\xD8\x04\xD9\t\xD9\x04\xDA\t\xDA\x04\xDB\t\xDB" +
		"\x04\xDC\t\xDC\x04\xDD\t\xDD\x04\xDE\t\xDE\x04\xDF\t\xDF\x04\xE0\t\xE0" +
		"\x04\xE1\t\xE1\x04\xE2\t\xE2\x04\xE3\t\xE3\x04\xE4\t\xE4\x04\xE5\t\xE5" +
		"\x04\xE6\t\xE6\x04\xE7\t\xE7\x04\xE8\t\xE8\x04\xE9\t\xE9\x04\xEA\t\xEA" +
		"\x04\xEB\t\xEB\x04\xEC\t\xEC\x04\xED\t\xED\x04\xEE\t\xEE\x04\xEF\t\xEF" +
		"\x04\xF0\t\xF0\x04\xF1\t\xF1\x04\xF2\t\xF2\x04\xF3\t\xF3\x04\xF4\t\xF4" +
		"\x04\xF5\t\xF5\x04\xF6\t\xF6\x04\xF7\t\xF7\x04\xF8\t\xF8\x04\xF9\t\xF9" +
		"\x04\xFA\t\xFA\x04\xFB\t\xFB\x04\xFC\t\xFC\x04\xFD\t\xFD\x04\xFE\t\xFE" +
		"\x04\xFF\t\xFF\x04\u0100\t\u0100\x04\u0101\t\u0101\x04\u0102\t\u0102\x04" +
		"\u0103\t\u0103\x04\u0104\t\u0104\x04\u0105\t\u0105\x04\u0106\t\u0106\x04" +
		"\u0107\t\u0107\x04\u0108\t\u0108\x04\u0109\t\u0109\x04\u010A\t\u010A\x04" +
		"\u010B\t\u010B\x04\u010C\t\u010C\x04\u010D\t\u010D\x04\u010E\t\u010E\x04" +
		"\u010F\t\u010F\x04\u0110\t\u0110\x04\u0111\t\u0111\x04\u0112\t\u0112\x04" +
		"\u0113\t\u0113\x04\u0114\t\u0114\x04\u0115\t\u0115\x04\u0116\t\u0116\x04" +
		"\u0117\t\u0117\x04\u0118\t\u0118\x04\u0119\t\u0119\x04\u011A\t\u011A\x04" +
		"\u011B\t\u011B\x04\u011C\t\u011C\x04\u011D\t\u011D\x04\u011E\t\u011E\x04" +
		"\u011F\t\u011F\x04\u0120\t\u0120\x04\u0121\t\u0121\x04\u0122\t\u0122\x04" +
		"\u0123\t\u0123\x04\u0124\t\u0124\x04\u0125\t\u0125\x04\u0126\t\u0126\x04" +
		"\u0127\t\u0127\x04\u0128\t\u0128\x04\u0129\t\u0129\x04\u012A\t\u012A\x04" +
		"\u012B\t\u012B\x04\u012C\t\u012C\x04\u012D\t\u012D\x04\u012E\t\u012E\x04" +
		"\u012F\t\u012F\x04\u0130\t\u0130\x04\u0131\t\u0131\x04\u0132\t\u0132\x04" +
		"\u0133\t\u0133\x04\u0134\t\u0134\x04\u0135\t\u0135\x04\u0136\t\u0136\x04" +
		"\u0137\t\u0137\x04\u0138\t\u0138\x04\u0139\t\u0139\x04\u013A\t\u013A\x04" +
		"\u013B\t\u013B\x04\u013C\t\u013C\x04\u013D\t\u013D\x04\u013E\t\u013E\x04" +
		"\u013F\t\u013F\x04\u0140\t\u0140\x04\u0141\t\u0141\x04\u0142\t\u0142\x04" +
		"\u0143\t\u0143\x04\u0144\t\u0144\x04\u0145\t\u0145\x04\u0146\t\u0146\x04" +
		"\u0147\t\u0147\x04\u0148\t\u0148\x04\u0149\t\u0149\x04\u014A\t\u014A\x04" +
		"\u014B\t\u014B\x04\u014C\t\u014C\x04\u014D\t\u014D\x04\u014E\t\u014E\x04" +
		"\u014F\t\u014F\x04\u0150\t\u0150\x04\u0151\t\u0151\x04\u0152\t\u0152\x04" +
		"\u0153\t\u0153\x04\u0154\t\u0154\x04\u0155\t\u0155\x04\u0156\t\u0156\x04" +
		"\u0157\t\u0157\x04\u0158\t\u0158\x04\u0159\t\u0159\x04\u015A\t\u015A\x04" +
		"\u015B\t\u015B\x04\u015C\t\u015C\x04\u015D\t\u015D\x04\u015E\t\u015E\x04" +
		"\u015F\t\u015F\x04\u0160\t\u0160\x04\u0161\t\u0161\x04\u0162\t\u0162\x04" +
		"\u0163\t\u0163\x04\u0164\t\u0164\x04\u0165\t\u0165\x04\u0166\t\u0166\x04" +
		"\u0167\t\u0167\x04\u0168\t\u0168\x04\u0169\t\u0169\x04\u016A\t\u016A\x04" +
		"\u016B\t\u016B\x04\u016C\t\u016C\x04\u016D\t\u016D\x04\u016E\t\u016E\x04" +
		"\u016F\t\u016F\x04\u0170\t\u0170\x04\u0171\t\u0171\x04\u0172\t\u0172\x04" +
		"\u0173\t\u0173\x04\u0174\t\u0174\x04\u0175\t\u0175\x04\u0176\t\u0176\x04" +
		"\u0177\t\u0177\x04\u0178\t\u0178\x04\u0179\t\u0179\x04\u017A\t\u017A\x04" +
		"\u017B\t\u017B\x04\u017C\t\u017C\x04\u017D\t\u017D\x04\u017E\t\u017E\x04" +
		"\u017F\t\u017F\x04\u0180\t\u0180\x04\u0181\t\u0181\x04\u0182\t\u0182\x04" +
		"\u0183\t\u0183\x04\u0184\t\u0184\x04\u0185\t\u0185\x04\u0186\t\u0186\x04" +
		"\u0187\t\u0187\x04\u0188\t\u0188\x04\u0189\t\u0189\x04\u018A\t\u018A\x04" +
		"\u018B\t\u018B\x04\u018C\t\u018C\x04\u018D\t\u018D\x04\u018E\t\u018E\x04" +
		"\u018F\t\u018F\x04\u0190\t\u0190\x04\u0191\t\u0191\x04\u0192\t\u0192\x04" +
		"\u0193\t\u0193\x04\u0194\t\u0194\x04\u0195\t\u0195\x04\u0196\t\u0196\x04" +
		"\u0197\t\u0197\x04\u0198\t\u0198\x04\u0199\t\u0199\x04\u019A\t\u019A\x04" +
		"\u019B\t\u019B\x04\u019C\t\u019C\x04\u019D\t\u019D\x04\u019E\t\u019E\x04" +
		"\u019F\t\u019F\x04\u01A0\t\u01A0\x04\u01A1\t\u01A1\x04\u01A2\t\u01A2\x04" +
		"\u01A3\t\u01A3\x04\u01A4\t\u01A4\x04\u01A5\t\u01A5\x03\x02\x07\x02\u034C" +
		"\n\x02\f\x02\x0E\x02\u034F\v\x02\x03\x02\x03\x02\x03\x03\x03\x03\x05\x03" +
		"\u0355\n\x03\x03\x03\x05\x03\u0358\n\x03\x03\x04\x03\x04\x03\x04\x03\x04" +
		"\x03\x04\x03\x04\x03\x04\x05\x04\u0361\n\x04\x03\x05\x03\x05\x03\x06\x03" +
		"\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" +
		"\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" +
		"\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" +
		"\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" +
		"\x06\x03\x06\x05\x06\u038C\n\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07" +
		"\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07" +
		"\x03\x07\x03\x07\x03\x07\x05\x07\u039F\n\x07\x03\b\x03\b\x03\b\x03\b\x03" +
		"\b\x03\b\x03\b\x03\b\x03\b\x05\b\u03AA\n\b\x03\t\x03\t\x03\t\x03\t\x03" +
		"\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\u03BA\n" +
		"\t\x03\n\x03\n\x03\n\x05\n\u03BF\n\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03" +
		"\v\x03\v\x03\v\x03\v\x03\v\x05\v\u03CB\n\v\x03\f\x03\f\x03\f\x03\f\x03" +
		"\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03" +
		"\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03" +
		"\f\x03\f\x03\f\x03\f\x03\f\x05\f\u03EE\n\f\x03\r\x03\r\x03\r\x03\r\x03" +
		"\r\x03\r\x03\r\x03\r\x05\r\u03F8\n\r\x03\x0E\x03\x0E\x03\x0E\x05\x0E\u03FD" +
		"\n\x0E\x03\x0E\x03\x0E\x07\x0E\u0401\n\x0E\f\x0E\x0E\x0E\u0404\v\x0E\x03" +
		"\x0F\x03\x0F\x05\x0F\u0408\n\x0F\x03\x0F\x03\x0F\x05\x0F\u040C\n\x0F\x03" +
		"\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x05\x0F\u0415\n\x0F" +
		"\x03\x0F\x05\x0F\u0418\n\x0F\x03\x0F\x05\x0F\u041B\n\x0F\x03\x0F\x03\x0F" +
		"\x05\x0F\u041F\n\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x05\x10\u0426" +
		"\n\x10\x03\x10\x05\x10\u0429\n\x10\x03\x10\x03\x10\x03\x10\x05\x10\u042E" +
		"\n\x10\x03\x10\x03\x10\x03\x10\x03\x10\x07\x10\u0434\n\x10\f\x10\x0E\x10" +
		"\u0437\v\x10\x03\x10\x03\x10\x05\x10\u043B\n\x10\x03\x10\x03\x10\x03\x10" +
		"\x05\x10\u0440\n\x10\x03\x10\x07\x10\u0443\n\x10\f\x10\x0E\x10\u0446\v" +
		"\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03" +
		"\x11\x05\x11\u0451\n\x11\x03\x11\x05\x11\u0454\n\x11\x03\x11\x03\x11\x05" +
		"\x11\u0458\n\x11\x03\x11\x05\x11\u045B\n\x11\x03\x11\x03\x11\x05\x11\u045F" +
		"\n\x11\x03\x11\x05\x11\u0462\n\x11\x03\x11\x03\x11\x05\x11\u0466\n\x11" +
		"\x03\x11\x05\x11\u0469\n\x11\x03\x11\x05\x11\u046C\n\x11\x03\x11\x03\x11" +
		"\x05\x11\u0470\n\x11\x03\x11\x05\x11\u0473\n\x11\x03\x11\x03\x11\x05\x11" +
		"\u0477\n\x11\x03\x11\x03\x11\x03\x12\x03\x12\x05\x12\u047D\n\x12\x03\x12" +
		"\x03\x12\x05\x12\u0481\n\x12\x03\x12\x03\x12\x03\x12\x05\x12\u0486\n\x12" +
		"\x03\x12\x03\x12\x07\x12\u048A\n\x12\f\x12\x0E\x12\u048D\v\x12\x03\x12" +
		"\x03\x12\x07\x12\u0491\n\x12\f\x12\x0E\x12\u0494\v\x12\x03\x12\x03\x12" +
		"\x03\x13\x03\x13\x03\x13\x05\x13\u049B\n\x13\x03\x13\x03\x13\x03\x14\x03" +
		"\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03" +
		"\x14\x03\x14\x07\x14\u04AB\n\x14\f\x14\x0E\x14\u04AE\v\x14\x03\x14\x03" +
		"\x14\x03\x15\x03\x15\x05\x15\u04B4\n\x15\x03\x15\x03\x15\x05\x15\u04B8" +
		"\n\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u04BE\n\x15\x03\x15\x07" +
		"\x15\u04C1\n\x15\f\x15\x0E\x15\u04C4\v\x15\x05\x15\u04C6\n\x15\x03\x15" +
		"\x05\x15\u04C9\n\x15\x03\x15\x03\x15\x05\x15\u04CD\n\x15\x03\x15\x03\x15" +
		"\x05\x15\u04D1\n\x15\x03\x15\x03\x15\x05\x15\u04D5\n\x15\x03\x15\x03\x15" +
		"\x05\x15\u04D9\n\x15\x03\x15\x07\x15\u04DC\n\x15\f\x15\x0E\x15\u04DF\v" +
		"\x15\x05\x15\u04E1\n\x15\x03\x15\x05\x15\u04E4\n\x15\x03\x15\x05\x15\u04E7" +
		"\n\x15\x03\x15\x05\x15\u04EA\n\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05" +
		"\x15\u04F0\n\x15\x03\x15\x03\x15\x05\x15\u04F4\n\x15\x03\x15\x03\x15\x03" +
		"\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u04FE\n\x15\x05\x15" +
		"\u0500\n\x15\x03\x16\x03\x16\x05\x16\u0504\n\x16\x03\x16\x03\x16\x03\x16" +
		"\x03\x16\x03\x16\x05\x16\u050B\n\x16\x03\x16\x03\x16\x05\x16\u050F\n\x16" +
		"\x03\x16\x05\x16\u0512\n\x16\x03\x16\x03\x16\x03\x16\x05\x16\u0517\n\x16" +
		"\x03\x16\x03\x16\x05\x16\u051B\n\x16\x03\x16\x05\x16\u051E\n\x16\x03\x16" +
		"\x03\x16\x05\x16\u0522\n\x16\x03\x16\x05\x16\u0525\n\x16\x03\x17\x03\x17" +
		"\x05\x17\u0529\n\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03" +
		"\x17\x03\x17\x03\x17\x03\x17\x03\x17\x05\x17\u0536\n\x17\x03\x17\x05\x17" +
		"\u0539\n\x17\x03\x17\x03\x17\x05\x17\u053D\n\x17\x03\x17\x05\x17\u0540" +
		"\n\x17\x03\x17\x03\x17\x05\x17\u0544\n\x17\x03\x17\x05\x17\u0547\n\x17" +
		"\x03\x17\x03\x17\x05\x17\u054B\n\x17\x03\x17\x05\x17\u054E\n\x17\x03\x17" +
		"\x03\x17\x05\x17\u0552\n\x17\x03\x17\x05\x17\u0555\n\x17\x03\x17\x05\x17" +
		"\u0558\n\x17\x03\x17\x03\x17\x05\x17\u055C\n\x17\x03\x17\x05\x17\u055F" +
		"\n\x17\x03\x17\x03\x17\x05\x17\u0563\n\x17\x03\x17\x03\x17\x03\x18\x03" +
		"\x18\x05\x18\u0569\n\x18\x03\x18\x03\x18\x05\x18\u056D\n\x18\x03\x18\x03" +
		"\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x05" +
		"\x18\u0579\n\x18\x03\x18\x03\x18\x03\x19\x03\x19\x05\x19\u057F\n\x19\x03" +
		"\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x07\x1A\u0588\n\x1A" +
		"\f\x1A\x0E\x1A\u058B\v\x1A\x03\x1A\x03\x1A\x05\x1A\u058F\n\x1A\x03\x1A" +
		"\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x05\x1A\u0597\n\x1A\x03\x1B\x03" +
		"\x1B\x05\x1B\u059B\n\x1B\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u05A0\n\x1B\x03" +
		"\x1B\x05\x1B\u05A3\n\x1B\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u05A8\n\x1B\x03" +
		"\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u05B0\n\x1B\x03\x1B" +
		"\x03\x1B\x03\x1B\x05\x1B\u05B5\n\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x05" +
		"\x1B\u05BB\n\x1B\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u05C0\n\x1B\x03\x1B\x03" +
		"\x1B\x05\x1B\u05C4\n\x1B\x05\x1B\u05C6\n\x1B\x03\x1C\x05\x1C\u05C9\n\x1C" +
		"\x03\x1C\x03\x1C\x05\x1C\u05CD\n\x1C\x03\x1C\x03\x1C\x05\x1C\u05D1\n\x1C" +
		"\x03\x1C\x05\x1C\u05D4\n\x1C\x03\x1C\x03\x1C\x05\x1C\u05D8\n\x1C\x03\x1C" +
		"\x03\x1C\x05\x1C\u05DC\n\x1C\x03\x1C\x03\x1C\x05\x1C\u05E0\n\x1C\x03\x1C" +
		"\x03\x1C\x03\x1C\x03\x1C\x05\x1C\u05E6\n\x1C\x03\x1C\x05\x1C\u05E9\n\x1C" +
		"\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x05\x1D\u05F0\n\x1D\x03\x1E\x03" +
		"\x1E\x03\x1E\x05\x1E\u05F5\n\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F" +
		"\u05FB\n\x1F\x03 \x03 \x03 \x07 \u0600\n \f \x0E \u0603\v \x03 \x03 \x03" +
		" \x05 \u0608\n \x03 \x03 \x03 \x03 \x07 \u060E\n \f \x0E \u0611\v \x05" +
		" \u0613\n \x03 \x03 \x03 \x07 \u0618\n \f \x0E \u061B\v \x05 \u061D\n" +
		" \x05 \u061F\n \x03!\x03!\x03!\x03!\x05!\u0625\n!\x03\"\x03\"\x03\"\x03" +
		"\"\x05\"\u062B\n\"\x03\"\x03\"\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03" +
		"#\x03#\x03#\x03#\x03#\x03#\x05#\u063C\n#\x03$\x03$\x03$\x03$\x03$\x05" +
		"$\u0643\n$\x03%\x03%\x03%\x03&\x03&\x05&\u064A\n&\x03&\x03&\x03&\x03&" +
		"\x03&\x03&\x03&\x03&\x03&\x03&\x05&\u0656\n&\x03&\x03&\x03&\x05&\u065B" +
		"\n&\x03&\x05&\u065E\n&\x03\'\x05\'\u0661\n\'\x03\'\x03\'\x03\'\x03(\x03" +
		"(\x03(\x03(\x03(\x05(\u066B\n(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03" +
		"(\x03(\x03(\x03(\x05(\u0678\n(\x03(\x03(\x03(\x05(\u067D\n(\x03)\x03)" +
		"\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x03)\x05)\u068D" +
		"\n)\x03*\x03*\x03*\x03*\x07*\u0693\n*\f*\x0E*\u0696\v*\x03*\x03*\x03+" +
		"\x03+\x03+\x03+\x03+\x05+\u069F\n+\x03+\x05+\u06A2\n+\x03+\x03+\x07+\u06A6" +
		"\n+\f+\x0E+\u06A9\v+\x03+\x03+\x05+\u06AD\n+\x03+\x05+\u06B0\n+\x03+\x03" +
		"+\x07+\u06B4\n+\f+\x0E+\u06B7\v+\x03+\x05+\u06BA\n+\x03+\x03+\x03+\x05" +
		"+\u06BF\n+\x03+\x03+\x07+\u06C3\n+\f+\x0E+\u06C6\v+\x03+\x05+\u06C9\n" +
		"+\x03+\x03+\x05+\u06CD\n+\x03+\x05+\u06D0\n+\x03+\x05+\u06D3\n+\x03+\x03" +
		"+\x07+\u06D7\n+\f+\x0E+\u06DA\v+\x03+\x05+\u06DD\n+\x03+\x03+\x03+\x05" +
		"+\u06E2\n+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x03+\x05+\u06ED\n+" +
		"\x03,\x05,\u06F0\n,\x03,\x03,\x03,\x03,\x03,\x05,\u06F7\n,\x03,\x05,\u06FA" +
		"\n,\x03-\x03-\x05-\u06FE\n-\x03.\x03.\x07.\u0702\n.\f.\x0E.\u0705\v.\x03" +
		"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x05/\u0710\n/\x03/\x05/\u0713" +
		"\n/\x03/\x03/\x03/\x05/\u0718\n/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" +
		"/\x03/\x03/\x03/\x05/\u0725\n/\x03/\x03/\x03/\x03/\x03/\x05/\u072C\n/" +
		"\x03/\x03/\x03/\x03/\x05/\u0732\n/\x030\x030\x030\x050\u0737\n0\x030\x03" +
		"0\x050\u073B\n0\x030\x050\u073E\n0\x031\x031\x031\x031\x031\x031\x051" +
		"\u0746\n1\x031\x031\x031\x031\x031\x031\x051\u074E\n1\x051\u0750\n1\x03" +
		"2\x032\x032\x032\x032\x032\x032\x032\x052\u075A\n2\x033\x033\x053\u075E" +
		"\n3\x033\x053\u0761\n3\x033\x033\x053\u0765\n3\x033\x033\x033\x053\u076A" +
		"\n3\x033\x033\x033\x053\u076F\n3\x033\x033\x033\x053\u0774\n3\x033\x03" +
		"3\x053\u0778\n3\x033\x033\x053\u077C\n3\x033\x033\x053\u0780\n3\x033\x03" +
		"3\x053\u0784\n3\x033\x033\x053\u0788\n3\x033\x033\x053\u078C\n3\x033\x03" +
		"3\x033\x053\u0791\n3\x033\x033\x033\x053\u0796\n3\x033\x033\x033\x053" +
		"\u079B\n3\x033\x033\x033\x033\x053\u07A1\n3\x033\x033\x033\x053\u07A6" +
		"\n3\x033\x033\x033\x053\u07AB\n3\x033\x033\x033\x053\u07B0\n3\x033\x03" +
		"3\x033\x053\u07B5\n3\x033\x033\x033\x053\u07BA\n3\x033\x033\x033\x033" +
		"\x053\u07C0\n3\x033\x033\x033\x053\u07C5\n3\x033\x033\x033\x053\u07CA" +
		"\n3\x033\x033\x033\x053\u07CF\n3\x033\x033\x033\x053\u07D4\n3\x033\x03" +
		"3\x033\x053\u07D9\n3\x033\x033\x033\x053\u07DE\n3\x033\x033\x033\x053" +
		"\u07E3\n3\x033\x033\x033\x033\x033\x053\u07EA\n3\x033\x033\x033\x053\u07EF" +
		"\n3\x033\x033\x033\x053\u07F4\n3\x033\x033\x033\x053\u07F9\n3\x033\x03" +
		"3\x053\u07FD\n3\x033\x033\x033\x053\u0802\n3\x033\x033\x033\x033\x033" +
		"\x033\x053\u080A\n3\x033\x033\x033\x053\u080F\n3\x033\x033\x033\x033\x05" +
		"3\u0815\n3\x034\x034\x035\x035\x035\x036\x036\x036\x036\x036\x056\u0821" +
		"\n6\x036\x036\x036\x036\x036\x056\u0828\n6\x056\u082A\n6\x036\x036\x03" +
		"6\x036\x076\u0830\n6\f6\x0E6\u0833\v6\x036\x036\x056\u0837\n6\x037\x05" +
		"7\u083A\n7\x037\x037\x037\x037\x037\x037\x057\u0842\n7\x037\x037\x037" +
		"\x037\x057\u0848\n7\x037\x037\x057\u084C\n7\x037\x037\x037\x037\x037\x03" +
		"7\x037\x037\x037\x037\x037\x057\u0859\n7\x037\x037\x037\x037\x037\x03" +
		"7\x037\x037\x037\x037\x057\u0865\n7\x057\u0867\n7\x038\x058\u086A\n8\x03" +
		"8\x038\x038\x038\x038\x038\x058\u0872\n8\x038\x038\x038\x038\x058\u0878" +
		"\n8\x038\x038\x038\x038\x058\u087E\n8\x039\x039\x039\x039\x039\x039\x03" +
		"9\x039\x039\x079\u0889\n9\f9\x0E9\u088C\v9\x039\x039\x079\u0890\n9\f9" +
		"\x0E9\u0893\v9\x039\x039\x039\x039\x079\u0899\n9\f9\x0E9\u089C\v9\x03" +
		"9\x039\x059\u08A0\n9\x039\x039\x039\x039\x039\x039\x039\x079\u08A9\n9" +
		"\f9\x0E9\u08AC\v9\x039\x039\x039\x039\x079\u08B2\n9\f9\x0E9\u08B5\v9\x03" +
		"9\x039\x059\u08B9\n9\x039\x039\x039\x039\x039\x039\x039\x039\x079\u08C3" +
		"\n9\f9\x0E9\u08C6\v9\x039\x039\x079\u08CA\n9\f9\x0E9\u08CD\v9\x039\x03" +
		"9\x039\x039\x079\u08D3\n9\f9\x0E9\u08D6\v9\x039\x039\x059\u08DA\n9\x03" +
		"9\x039\x039\x039\x039\x039\x039\x039\x079\u08E4\n9\f9\x0E9\u08E7\v9\x03" +
		"9\x039\x079\u08EB\n9\f9\x0E9\u08EE\v9\x039\x039\x039\x039\x079\u08F4\n" +
		"9\f9\x0E9\u08F7\v9\x039\x039\x059\u08FB\n9\x039\x039\x039\x079\u0900\n" +
		"9\f9\x0E9\u0903\v9\x039\x039\x039\x039\x079\u0909\n9\f9\x0E9\u090C\v9" +
		"\x039\x039\x059\u0910\n9\x059\u0912\n9\x03:\x03:\x03:\x05:\u0917\n:\x03" +
		";\x03;\x03;\x03;\x06;\u091D\n;\r;\x0E;\u091E\x03;\x03;\x03<\x03<\x03<" +
		"\x07<\u0926\n<\f<\x0E<\u0929\v<\x03=\x05=\u092C\n=\x03=\x05=\u092F\n=" +
		"\x03";
	private static readonly _serializedATNSegment1: string =
		"=\x03=\x05=\u0933\n=\x03=\x03=\x03=\x05=\u0938\n=\x03=\x03=\x03=\x03=" +
		"\x05=\u093E\n=\x03=\x03=\x03=\x03=\x05=\u0944\n=\x03=\x03=\x03=\x05=\u0949" +
		"\n=\x03=\x03=\x03=\x05=\u094E\n=\x03=\x03=\x03=\x05=\u0953\n=\x03=\x03" +
		"=\x03=\x05=\u0958\n=\x03=\x05=\u095B\n=\x03>\x03>\x03>\x05>\u0960\n>\x03" +
		">\x06>\u0963\n>\r>\x0E>\u0964\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>" +
		"\x05>\u096F\n>\x03?\x03?\x05?\u0973\n?\x03?\x03?\x03?\x03?\x03?\x05?\u097A" +
		"\n?\x03?\x03?\x03?\x05?\u097F\n?\x03?\x05?\u0982\n?\x03?\x03?\x03?\x05" +
		"?\u0987\n?\x03?\x05?\u098A\n?\x03?\x03?\x05?\u098E\n?\x03?\x03?\x05?\u0992" +
		"\n?\x03@\x03@\x03@\x03@\x07@\u0998\n@\f@\x0E@\u099B\v@\x03A\x03A\x03A" +
		"\x03A\x03A\x03A\x03A\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x05" +
		"B\u09AD\nB\x03B\x05B\u09B0\nB\x03B\x05B\u09B3\nB\x03B\x03B\x05B\u09B7" +
		"\nB\x03B\x03B\x03C\x03C\x03C\x03C\x07C\u09BF\nC\fC\x0EC\u09C2\vC\x03D" +
		"\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x07D\u09CC\nD\fD\x0ED\u09CF\vD\x03" +
		"D\x03D\x03E\x03E\x03E\x03E\x03E\x03E\x07E\u09D9\nE\fE\x0EE\u09DC\vE\x05" +
		"E\u09DE\nE\x03E\x03E\x07E\u09E2\nE\fE\x0EE\u09E5\vE\x05E\u09E7\nE\x03" +
		"F\x03F\x05F\u09EB\nF\x03F\x03F\x03F\x03F\x03F\x03F\x03F\x05F\u09F4\nF" +
		"\x03F\x05F\u09F7\nF\x03F\x05F\u09FA\nF\x03F\x03F\x03F\x05F\u09FF\nF\x03" +
		"F\x03F\x05F\u0A03\nF\x03F\x05F\u0A06\nF\x03F\x03F\x05F\u0A0A\nF\x03F\x03" +
		"F\x05F\u0A0E\nF\x03F\x05F\u0A11\nF\x03F\x03F\x05F\u0A15\nF\x03F\x05F\u0A18" +
		"\nF\x03F\x03F\x05F\u0A1C\nF\x03F\x05F\u0A1F\nF\x03G\x03G\x03G\x03G\x05" +
		"G\u0A25\nG\x03G\x05G\u0A28\nG\x03G\x03G\x03G\x05G\u0A2D\nG\x03G\x03G\x03" +
		"G\x03G\x03G\x03G\x05G\u0A35\nG\x03G\x03G\x03G\x03G\x05G\u0A3B\nG\x03G" +
		"\x03G\x05G\u0A3F\nG\x03H\x03H\x05H\u0A43\nH\x03H\x07H\u0A46\nH\fH\x0E" +
		"H\u0A49\vH\x03H\x03H\x05H\u0A4D\nH\x03H\x03H\x03H\x03H\x03H\x05H\u0A54" +
		"\nH\x03H\x03H\x05H\u0A58\nH\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x07H\u0A61" +
		"\nH\fH\x0EH\u0A64\vH\x03H\x03H\x03H\x03H\x03H\x05H\u0A6B\nH\x03H\x05H" +
		"\u0A6E\nH\x03H\x03H\x07H\u0A72\nH\fH\x0EH\u0A75\vH\x03H\x03H\x03H\x05" +
		"H\u0A7A\nH\x03H\x05H\u0A7D\nH\x03H\x03H\x07H\u0A81\nH\fH\x0EH\u0A84\v" +
		"H\x03H\x03H\x03H\x05H\u0A89\nH\x05H\u0A8B\nH\x03H\x03H\x03H\x05H\u0A90" +
		"\nH\x03H\x03H\x07H\u0A94\nH\fH\x0EH\u0A97\vH\x03H\x03H\x03H\x05H\u0A9C" +
		"\nH\x05H\u0A9E\nH\x03H\x03H\x05H\u0AA2\nH\x03H\x05H\u0AA5\nH\x03H\x05" +
		"H\u0AA8\nH\x03H\x03H\x07H\u0AAC\nH\fH\x0EH\u0AAF\vH\x03H\x03H\x03H\x05" +
		"H\u0AB4\nH\x05H\u0AB6\nH\x03H\x03H\x03H\x05H\u0ABB\nH\x03H\x03H\x03H\x03" +
		"H\x03H\x05H\u0AC2\nH\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x05H\u0ACB\nH" +
		"\x03H\x05H\u0ACE\nH\x03H\x03H\x05H\u0AD2\nH\x03H\x03H\x03H\x05H\u0AD7" +
		"\nH\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x05H\u0AE1\nH\x03H\x03H\x03" +
		"H\x03H\x03H\x03H\x03H\x05H\u0AEA\nH\x03H\x03H\x03H\x03H\x03H\x03H\x05" +
		"H\u0AF2\nH\x03H\x05H\u0AF5\nH\x03H\x03H\x03H\x03H\x03H\x03H\x05H\u0AFD" +
		"\nH\x03H\x05H\u0B00\nH\x03H\x03H\x03H\x03H\x03H\x05H\u0B07\nH\x03H\x03" +
		"H\x03H\x05H\u0B0C\nH\x03H\x03H\x03H\x03H\x03H\x03H\x05H\u0B14\nH\x03H" +
		"\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x05" +
		"H\u0B24\nH\x03H\x03H\x03H\x05H\u0B29\nH\x03H\x03H\x03H\x03H\x03H\x05H" +
		"\u0B30\nH\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03H" +
		"\x03H\x03H\x03H\x03H\x03H\x05H\u0B43\nH\x03H\x03H\x03H\x03H\x05H\u0B49" +
		"\nH\x03I\x03I\x03I\x03I\x03I\x03I\x07I\u0B51\nI\fI\x0EI\u0B54\vI\x03I" +
		"\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x05I\u0B5F\nI\x03I\x03I\x03I" +
		"\x03I\x03I\x05I\u0B66\nI\x03I\x03I\x03I\x03I\x03I\x05I\u0B6D\nI\x03I\x03" +
		"I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x07I\u0B7A\nI\fI\x0EI\u0B7D" +
		"\vI\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x03I\x05I\u0B89\nI\x03" +
		"I\x03I\x03I\x03I\x05I\u0B8F\nI\x03I\x03I\x03I\x03I\x05I\u0B95\nI\x03I" +
		"\x03I\x03I\x03I\x05I\u0B9B\nI\x03I\x03I\x03I\x03I\x05I\u0BA1\nI\x03I\x03" +
		"I\x03I\x03I\x05I\u0BA7\nI\x03I\x03I\x03I\x03I\x05I\u0BAD\nI\x03J\x03J" +
		"\x03J\x05J\u0BB2\nJ\x03J\x03J\x03K\x03K\x03K\x05K\u0BB9\nK\x03K\x03K\x03" +
		"L\x03L\x03L\x05L\u0BC0\nL\x03L\x03L\x03L\x03L\x03L\x05L\u0BC7\nL\x03L" +
		"\x03L\x03L\x05L\u0BCC\nL\x03L\x07L\u0BCF\nL\fL\x0EL\u0BD2\vL\x03M\x03" +
		"M\x03M\x03M\x03M\x03M\x05M\u0BDA\nM\x03M\x03M\x03N\x03N\x03N\x05N\u0BE1" +
		"\nN\x03N\x03N\x03O\x03O\x03O\x05O\u0BE8\nO\x03O\x03O\x03P\x03P\x03P\x05" +
		"P\u0BEF\nP\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\u0BF8\nQ\x03Q\x03Q" +
		"\x03R\x03R\x05R\u0BFE\nR\x03R\x03R\x05R\u0C02\nR\x03R\x03R\x05R\u0C06" +
		"\nR\x03S\x03S\x05S\u0C0A\nS\x03S\x03S\x03S\x03S\x05S\u0C10\nS\x03S\x05" +
		"S\u0C13\nS\x03T\x03T\x03T\x05T\u0C18\nT\x03T\x03T\x03U\x03U\x03U\x05U" +
		"\u0C1F\nU\x03U\x03U\x03U\x07U\u0C24\nU\fU\x0EU\u0C27\vU\x03U\x05U\u0C2A" +
		"\nU\x03V\x03V\x03V\x05V\u0C2F\nV\x03V\x03V\x03W\x03W\x03W\x03W\x03W\x03" +
		"W\x05W\u0C39\nW\x03W\x03W\x03W\x03W\x07W\u0C3F\nW\fW\x0EW\u0C42\vW\x03" +
		"W\x03W\x03W\x05W\u0C47\nW\x03X\x03X\x03X\x03X\x03X\x07X\u0C4E\nX\fX\x0E" +
		"X\u0C51\vX\x03Y\x03Y\x03Y\x03Y\x03Z\x03Z\x05Z\u0C59\nZ\x03Z\x03Z\x03[" +
		"\x03[\x03[\x03[\x03[\x05[\u0C62\n[\x03[\x05[\u0C65\n[\x03\\\x03\\\x05" +
		"\\\u0C69\n\\\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x05^\u0C72\n^\x03_\x03" +
		"_\x05_\u0C76\n_\x03_\x05_\u0C79\n_\x03_\x05_\u0C7C\n_\x03_\x03_\x03_\x03" +
		"_\x05_\u0C82\n_\x03_\x05_\u0C85\n_\x03_\x05_\u0C88\n_\x03_\x03_\x05_\u0C8C" +
		"\n_\x03_\x05_\u0C8F\n_\x03_\x05_\u0C92\n_\x03_\x05_\u0C95\n_\x03_\x03" +
		"_\x03_\x03_\x03_\x03_\x03_\x07_\u0C9E\n_\f_\x0E_\u0CA1\v_\x05_\u0CA3\n" +
		"_\x03`\x03`\x03`\x05`\u0CA8\n`\x03a\x03a\x03a\x03a\x05a\u0CAE\na\x03b" +
		"\x03b\x03b\x05b\u0CB3\nb\x03b\x06b\u0CB6\nb\rb\x0Eb\u0CB7\x03c\x05c\u0CBB" +
		"\nc\x03c\x03c\x05c\u0CBF\nc\x03d\x03d\x03d\x05d\u0CC4\nd\x03d\x05d\u0CC7" +
		"\nd\x03d\x03d\x03d\x05d\u0CCC\nd\x03d\x03d\x03d\x03d\x03d\x03d\x03d\x03" +
		"d\x05d\u0CD6\nd\x03d\x03d\x03d\x05d\u0CDB\nd\x03d\x03d\x06d\u0CDF\nd\r" +
		"d\x0Ed\u0CE0\x05d\u0CE3\nd\x03d\x03d\x06d\u0CE7\nd\rd\x0Ed\u0CE8\x05d" +
		"\u0CEB\nd\x03d\x03d\x03d\x03d\x05d\u0CF1\nd\x03d\x03d\x03d\x03d\x07d\u0CF7" +
		"\nd\fd\x0Ed\u0CFA\vd\x03d\x03d\x05d\u0CFE\nd\x03d\x03d\x03d\x03d\x07d" +
		"\u0D04\nd\fd\x0Ed\u0D07\vd\x05d\u0D09\nd\x03e\x03e\x03e\x05e\u0D0E\ne" +
		"\x03e\x05e\u0D11\ne\x03e\x03e\x03e\x05e\u0D16\ne\x03e\x03e\x03e\x03e\x03" +
		"e\x03e\x05e\u0D1E\ne\x03e\x03e\x03e\x03e\x05e\u0D24\ne\x03e\x03e\x05e" +
		"\u0D28\ne\x05e\u0D2A\ne\x03e\x03e\x03e\x03e\x05e\u0D30\ne\x03e\x03e\x03" +
		"e\x03e\x07e\u0D36\ne\fe\x0Ee\u0D39\ve\x03e\x03e\x05e\u0D3D\ne\x03e\x03" +
		"e\x03e\x03e\x07e\u0D43\ne\fe\x0Ee\u0D46\ve\x05e\u0D48\ne\x03f\x03f\x03" +
		"f\x05f\u0D4D\nf\x03f\x05f\u0D50\nf\x03f\x03f\x05f\u0D54\nf\x03f\x05f\u0D57" +
		"\nf\x03f\x05f\u0D5A\nf\x03g\x03g\x05g\u0D5E\ng\x03g\x05g\u0D61\ng\x03" +
		"g\x03g\x03g\x03g\x03g\x03g\x05g\u0D69\ng\x03g\x03g\x03g\x03g\x05g\u0D6F" +
		"\ng\x03g\x03g\x05g\u0D73\ng\x03h\x03h\x05h\u0D77\nh\x03h\x03h\x05h\u0D7B" +
		"\nh\x03h\x05h\u0D7E\nh\x03h\x03h\x05h\u0D82\nh\x03h\x03h\x06h\u0D86\n" +
		"h\rh\x0Eh\u0D87\x03h\x03h\x05h\u0D8C\nh\x03h\x03h\x05h\u0D90\nh\x05h\u0D92" +
		"\nh\x03h\x05h\u0D95\nh\x03h\x05h\u0D98\nh\x03h\x05h\u0D9B\nh\x03h\x03" +
		"h\x06h\u0D9F\nh\rh\x0Eh\u0DA0\x03h\x03h\x05h\u0DA5\nh\x03h\x05h\u0DA8" +
		"\nh\x03h\x05h\u0DAB\nh\x03h\x05h\u0DAE\nh\x03h\x05h\u0DB1\nh\x03h\x03" +
		"h\x03h\x06h\u0DB6\nh\rh\x0Eh\u0DB7\x05h\u0DBA\nh\x03i\x05i\u0DBD\ni\x03" +
		"i\x03i\x05i\u0DC1\ni\x03i\x05i\u0DC4\ni\x03i\x05i\u0DC7\ni\x03j\x03j\x03" +
		"j\x03j\x03j\x03j\x05j\u0DCF\nj\x03j\x03j\x03j\x03j\x05j\u0DD5\nj\x03j" +
		"\x07j\u0DD8\nj\fj\x0Ej\u0DDB\vj\x03k\x03k\x03k\x03k\x03k\x03k\x05k\u0DE3" +
		"\nk\x03k\x07k\u0DE6\nk\fk\x0Ek\u0DE9\vk\x03l\x03l\x03l\x03l\x05l\u0DEF" +
		"\nl\x03l\x05l\u0DF2\nl\x03l\x05l\u0DF5\nl\x03l\x03l\x05l\u0DF9\nl\x03" +
		"m\x03m\x05m\u0DFD\nm\x03n\x03n\x03n\x03n\x05n\u0E03\nn\x03n\x03n\x05n" +
		"\u0E07\nn\x03o\x03o\x03o\x07o\u0E0C\no\fo\x0Eo\u0E0F\vo\x03o\x05o\u0E12" +
		"\no\x03o\x05o\u0E15\no\x03o\x05o\u0E18\no\x03p\x03p\x03p\x05p\u0E1D\n" +
		"p\x03q\x03q\x03q\x03q\x03q\x05q\u0E24\nq\x03r\x03r\x03r\x03r\x03r\x03" +
		"r\x07r\u0E2C\nr\fr\x0Er\u0E2F\vr\x03s\x03s\x03s\x03s\x07s\u0E35\ns\fs" +
		"\x0Es\u0E38\vs\x03t\x03t\x03t\x03t\x03u\x03u\x05u\u0E40\nu\x03v\x03v\x03" +
		"v\x03v\x03v\x03v\x07v\u0E48\nv\fv\x0Ev\u0E4B\vv\x05v\u0E4D\nv\x03v\x03" +
		"v\x05v\u0E51\nv\x03v\x03v\x03v\x03v\x05v\u0E57\nv\x03w\x03w\x05w\u0E5B" +
		"\nw\x03w\x05w\u0E5E\nw\x03w\x05w\u0E61\nw\x03w\x03w\x03w\x05w\u0E66\n" +
		"w\x03w\x05w\u0E69\nw\x03w\x03w\x03w\x03w\x03w\x05w\u0E70\nw\x03w\x03w" +
		"\x05w\u0E74\nw\x03w\x05w\u0E77\nw\x03w\x03w\x05w\u0E7B\nw\x03x\x03x\x05" +
		"x\u0E7F\nx\x03x\x05x\u0E82\nx\x03x\x05x\u0E85\nx\x03x\x03x\x03x\x05x\u0E8A" +
		"\nx\x03x\x03x\x03x\x03x\x05x\u0E90\nx\x07x\u0E92\nx\fx\x0Ex\u0E95\vx\x03" +
		"x\x03x\x03x\x03x\x03x\x03x\x03x\x05x\u0E9E\nx\x03x\x03x\x03x\x03x\x05" +
		"x\u0EA4\nx\x07x\u0EA6\nx\fx\x0Ex\u0EA9\vx\x03x\x03x\x03x\x05x\u0EAE\n" +
		"x\x03x\x03x\x05x\u0EB2\nx\x03y\x03y\x03y\x03y\x05y\u0EB8\ny\x03y\x05y" +
		"\u0EBB\ny\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x03z\x05z\u0EC7" +
		"\nz\x03z\x03z\x05z\u0ECB\nz\x03z\x03z\x05z\u0ECF\nz\x03{\x03{\x03{\x03" +
		"{\x03{\x03{\x05{\u0ED7\n{\x03{\x03{\x05{\u0EDB\n{\x03|\x03|\x03|\x03|" +
		"\x03}\x03}\x03}\x03}\x03}\x03}\x07}\u0EE7\n}\f}\x0E}\u0EEA\v}\x03~\x03" +
		"~\x05~\u0EEE\n~\x03~\x05~\u0EF1\n~\x03~\x03~\x05~\u0EF5\n~\x03~\x05~\u0EF8" +
		"\n~\x03~\x03~\x03~\x03~\x07~\u0EFE\n~\f~\x0E~\u0F01\v~\x03~\x03~\x05~" +
		"\u0F05\n~\x03~\x05~\u0F08\n~\x03~\x05~\u0F0B\n~\x03\x7F\x03\x7F\x05\x7F" +
		"\u0F0F\n\x7F\x03\x7F\x05\x7F\u0F12\n\x7F\x03\x7F\x03\x7F\x03\x7F\x03\x7F" +
		"\x03\x7F\x07\x7F\u0F19\n\x7F\f\x7F\x0E\x7F\u0F1C\v\x7F\x03\x7F\x03\x7F" +
		"\x05\x7F\u0F20\n\x7F\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x07\x80\u0F27" +
		"\n\x80\f\x80\x0E\x80\u0F2A\v\x80\x03\x81\x03\x81\x05\x81\u0F2E\n\x81\x03" +
		"\x82\x03\x82\x03\x82\x07\x82\u0F33\n\x82\f\x82\x0E\x82\u0F36\v\x82\x03" +
		"\x83\x03\x83\x07\x83\u0F3A\n\x83\f\x83\x0E\x83\u0F3D\v\x83\x03\x83\x03" +
		"\x83\x03\x83\x07\x83\u0F42\n\x83\f\x83\x0E\x83\u0F45\v\x83\x03\x83\x03" +
		"\x83\x03\x83\x05\x83\u0F4A\n\x83\x03\x84\x03\x84\x03\x84\x03\x84\x03\x84" +
		"\x03\x84\x05\x84\u0F52\n\x84\x03\x84\x05\x84\u0F55\n\x84\x03\x84\x05\x84" +
		"\u0F58\n\x84\x03\x84\x03\x84\x03\x84\x07\x84\u0F5D\n\x84\f\x84\x0E\x84" +
		"\u0F60\v\x84\x05\x84\u0F62\n\x84\x03\x84\x05\x84\u0F65\n\x84\x03\x84\x03" +
		"\x84\x03\x84\x03\x84\x03\x84\x05\x84\u0F6C\n\x84\x03\x84\x05\x84\u0F6F" +
		"\n\x84\x03\x84\x03\x84\x05\x84\u0F73\n\x84\x03\x84\x03\x84\x03\x84\x03" +
		"\x84\x05\x84\u0F79\n\x84\x03\x85\x03\x85\x03\x85\x03\x85\x03\x86\x03\x86" +
		"\x03\x86\x03\x86\x05\x86\u0F83\n\x86\x03\x86\x03\x86\x05\x86\u0F87\n\x86" +
		"\x03\x86\x03\x86\x03\x87\x03\x87\x03\x87\x03\x87\x03\x87\x05\x87\u0F90" +
		"\n\x87\x03\x88\x05\x88\u0F93\n\x88\x03\x88\x03\x88\x05\x88\u0F97\n\x88" +
		"\x03\x88\x03\x88\x07\x88\u0F9B\n\x88\f\x88\x0E\x88\u0F9E\v\x88\x03\x88" +
		"\x03\x88\x03\x88\x07\x88\u0FA3\n\x88\f\x88\x0E\x88\u0FA6\v\x88\x03\x88" +
		"\x03\x88\x05\x88\u0FAA\n\x88\x03\x88\x03\x88\x05\x88\u0FAE\n\x88\x03\x88" +
		"\x03\x88\x07\x88\u0FB2\n\x88\f\x88\x0E\x88\u0FB5\v\x88\x03\x88\x03\x88" +
		"\x03\x88\x05\x88\u0FBA\n\x88\x03\x88\x05\x88\u0FBD\n\x88\x05\x88\u0FBF" +
		"\n\x88\x03\x88\x03\x88\x05\x88\u0FC3\n\x88\x03\x89\x03\x89\x03\x89\x03" +
		"\x89\x03\x89\x03\x89\x03\x89\x05\x89\u0FCC\n\x89\x03\x8A\x03\x8A\x03\x8A" +
		"\x03\x8A\x03\x8A\x03\x8A\x03\x8A\x03\x8A\x05\x8A\u0FD6\n\x8A\x03\x8B\x03" +
		"\x8B\x03\x8B\x03\x8B\x03\x8B\x03\x8B\x03\x8B\x03\x8B\x05\x8B\u0FE0\n\x8B" +
		"\x03\x8C\x03\x8C\x07\x8C\u0FE4\n\x8C\f\x8C\x0E\x8C\u0FE7\v\x8C\x03\x8C" +
		"\x03\x8C\x05\x8C\u0FEB\n\x8C\x03\x8C\x03\x8C\x05\x8C\u0FEF\n\x8C\x03\x8C" +
		"\x05\x8C\u0FF2\n\x8C\x03\x8C\x05\x8C\u0FF5\n\x8C\x03\x8C\x05\x8C\u0FF8" +
		"\n\x8C\x03\x8C\x05\x8C\u0FFB\n\x8C\x03\x8C\x03\x8C\x07\x8C\u0FFF\n\x8C" +
		"\f\x8C\x0E\x8C\u1002\v\x8C\x03\x8C\x03\x8C\x03\x8C\x05\x8C\u1007\n\x8C" +
		"\x03\x8C\x05\x8C\u100A\n\x8C\x03\x8C\x05\x8C\u100D\n\x8C\x03\x8C\x05\x8C" +
		"\u1010\n\x8C\x03\x8C\x05\x8C\u1013\n\x8C\x03\x8C\x05\x8C\u1016\n\x8C\x05" +
		"\x8C\u1018\n\x8C\x03\x8D\x03\x8D\x07\x8D\u101C\n\x8D\f\x8D\x0E\x8D\u101F" +
		"\v\x8D\x03\x8D\x03\x8D\x03\x8D\x05\x8D\u1024\n\x8D\x03\x8D\x05\x8D\u1027" +
		"\n\x8D\x03\x8D\x05\x8D\u102A\n\x8D\x03\x8D\x05\x8D\u102D\n\x8D\x03\x8D" +
		"\x05\x8D\u1030\n\x8D\x03\x8E\x03\x8E\x05\x8E\u1034\n\x8E\x03\x8E\x03\x8E" +
		"\x03\x8F\x03\x8F\x05\x8F\u103A\n\x8F\x03\x8F\x03\x8F\x05\x8F\u103E\n\x8F" +
		"\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x05\x90\u1046\n\x90\x03" +
		"\x90\x03\x90\x05\x90\u104A\n\x90\x03\x90\x05\x90\u104D\n\x90\x05\x90\u104F" +
		"\n\x90\x03\x91\x03\x91\x03\x91\x03\x91\x03\x91\x03\x91\x03\x91\x03\x91" +
		"\x03\x91\x03\x91\x03\x91\x05\x91\u105C\n\x91\x03\x91\x05\x91\u105F\n\x91" +
		"\x03\x92\x03\x92\x03\x92\x07\x92\u1064\n\x92\f\x92\x0E\x92\u1067\v\x92" +
		"\x03\x93\x03\x93\x03\x93\x03\x93\x03\x93\x03\x93\x03\x93\x05\x93\u1070" +
		"\n\x93\x03\x93\x05\x93\u1073\n\x93\x03\x93\x03\x93\x03\x93\x05\x93\u1078" +
		"\n\x93\x05\x93\u107A\n\x93\x03\x93\x03\x93\x05\x93\u107E\n\x93\x03\x93" +
		"\x03\x93\x03\x93\x03\x93\x03\x93\x03\x93\x05\x93\u1086\n\x93\x03\x94\x03" +
		"\x94\x03\x94\x03\x94\x05\x94\u108C\n\x94\x03\x94\x03\x94\x03\x94\x03\x95" +
		"\x03\x95\x03\x95\x03\x95\x05\x95\u1095\n\x95\x03\x95\x03\x95\x03\x95\x03" +
		"\x96\x03\x96\x03\x96\x03\x96\x03\x96\x03\x96\x03\x96\x03\x96\x05\x96\u10A2" +
		"\n\x96\x03\x97\x03\x97\x05\x97\u10A6\n\x97\x03\x97\x03\x97\x07\x97\u10AA" +
		"\n\x97\f\x97\x0E\x97\u10AD\v\x97\x03\x98\x03\x98\x03\x98\x03\x98\x03\x98" +
		"\x03\x98\x05\x98\u10B5\n\x98\x03\x98\x05\x98\u10B8\n\x98\x03\x98\x03\x98" +
		"\x05\x98\u10BC\n\x98\x03\x98\x05\x98\u10BF\n\x98\x03\x98\x03\x98\x05\x98" +
		"\u10C3\n\x98\x03\x98\x03\x98\x05\x98\u10C7\n\x98\x03\x98\x05\x98\u10CA" +
		"\n\x98\x05\x98\u10CC\n\x98\x03\x99\x03\x99\x03\x99\x03\x99\x07\x99\u10D2" +
		"\n\x99\f\x99\x0E\x99\u10D5\v\x99\x03\x99\x03\x99\x03\x99\x03\x99\x03\x99" +
		"\x03\x99\x03\x99\x03\x99\x03\x99\x05\x99\u10E0\n\x99\x03\x99\x03\x99\x06" +
		"\x99\u10E4\n\x99\r\x99\x0E\x99\u10E5\x05\x99\u10E8\n\x99\x03\x99\x03\x99" +
		"\x06\x99\u10EC\n\x99\r\x99\x0E\x99\u10ED\x05\x99\u10F0\n\x99\x05\x99\u10F2" +
		"\n\x99\x03\x9A\x03\x9A\x03\x9A\x03\x9A\x05\x9A\u10F8\n\x9A\x03\x9A\x03" +
		"\x9A\x03\x9A\x03\x9A\x03\x9A\x03\x9A\x05\x9A\u1100\n\x9A\x03\x9B\x03\x9B" +
		"\x03\x9B\x03\x9B\x03\x9B\x03\x9B\x05\x9B\u1108\n\x9B\x03\x9C\x03\x9C\x05" +
		"\x9C\u110C\n\x9C\x03\x9C\x03\x9C\x05\x9C\u1110\n\x9C\x03\x9D\x03\x9D\x03" +
		"\x9D\x03\x9D\x03\x9D\x07\x9D\u1117\n\x9D\f\x9D\x0E\x9D\u111A\v\x9D\x03" +
		"\x9D\x03\x9D\x05\x9D\u111E\n\x9D\x03\x9E\x03\x9E\x03\x9E\x03\x9F\x03\x9F" +
		"\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F" +
		"\x03\x9F\x03\x9F\x07\x9F\u1130\n\x9F\f\x9F\x0E\x9F\u1133\v\x9F\x03\xA0" +
		"\x03\xA0\x05\xA0\u1137\n\xA0\x03\xA1\x03\xA1\x03\xA1\x03\xA1\x05\xA1\u113D" +
		"\n\xA1\x03\xA1\x03\xA1\x03\xA1\x03\xA1\x03\xA1\x05\xA1\u1144\n\xA1\x03" +
		"\xA2\x03\xA2\x03\xA2\x05\xA2\u1149\n\xA2\x03\xA3\x03\xA3\x03\xA3\x03\xA3" +
		"\x03\xA3\x07\xA3\u1150\n\xA3\f\xA3\x0E\xA3\u1153\v\xA3\x05\xA3\u1155\n" +
		"\xA3\x03\xA4\x03\xA4\x05\xA4\u1159\n\xA4\x03\xA5\x03\xA5\x05\xA5\u115D" +
		"\n\xA5\x03\xA5\x03\xA5\x05\xA5\u1161\n\xA5\x03\xA5\x05\xA5\u1164\n\xA5" +
		"\x03\xA5\x05\xA5\u1167\n\xA5\x03\xA5\x05\xA5\u116A\n\xA5\x03\xA6\x03\xA6" +
		"\x05\xA6\u116E\n\xA6\x03\xA6\x03\xA6\x05\xA6\u1172\n\xA6\x03\xA6\x05\xA6" +
		"\u1175\n\xA6\x03\xA6\x05\xA6\u1178\n\xA6\x03\xA6\x05\xA6\u117B\n\xA6\x03" +
		"\xA7\x03\xA7\x03\xA7\x03\xA8\x03\xA8\x05\xA8\u1182\n\xA8\x03\xA8\x03\xA8" +
		"\x05\xA8\u1186\n\xA8\x03\xA8\x03\xA8\x03\xA9\x03\xA9\x03\xA9\x03\xA9\x03" +
		"\xAA\x03\xAA\x03\xAA\x03\xAA\x03\xAA\x07\xAA\u1193\n\xAA\f\xAA\x0E\xAA" +
		"\u1196\v\xAA\x03\xAB\x03\xAB\x03\xAB\x03\xAC\x03\xAC\x03\xAC\x03\xAC\x03" +
		"\xAC\x03\xAD\x03\xAD\x05\xAD\u11A2\n\xAD\x03\xAD\x03\xAD\x03\xAD\x03\xAD" +
		"\x07\xAD\u11A8\n\xAD\f\xAD\x0E\xAD\u11AB\v\xAD\x03\xAE\x03\xAE\x03\xAE" +
		"\x03\xAE\x03\xAE\x03\xAE\x03\xAE\x05\xAE\u11B4\n\xAE\x03\xAF\x03\xAF\x05" +
		"\xAF\u11B8\n\xAF\x03\xAF\x05\xAF\u11BB\n\xAF\x03\xAF\x03\xAF\x03\xB0\x03" +
		"\xB0\x05\xB0\u11C1\n\xB0\x03\xB0\x05\xB0\u11C4\n\xB0\x03\xB0\x05\xB0\u11C7" +
		"\n\xB0\x03\xB1\x03\xB1\x03\xB1\x03\xB1\x03\xB1\x03\xB1\x03\xB1\x05\xB1" +
		"\u11D0\n\xB1\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x05" +
		"\xB2\u11D9\n\xB2\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x07\xB3" +
		"\u11E1\n\xB3\f\xB3\x0E\xB3\u11E4\v\xB3\x03\xB3\x05\xB3\u11E7\n\xB3\x03" +
		"\xB4\x03\xB4\x03\xB4\x03\xB4\x03\xB4\x03\xB4\x07\xB4\u11EF\n\xB4\f\xB4" +
		"\x0E\xB4\u11F2\v\xB4\x03\xB4\x05\xB4\u11F5\n\xB4\x03\xB5\x03\xB5\x03\xB5" +
		"\x03\xB5\x03\xB5\x03\xB5\x03\xB5\x07\xB5\u11FE\n\xB5\f\xB5\x0E\xB5\u1201" +
		"\v\xB5\x03\xB5\x05\xB5\u1204\n\xB5\x03";
	private static readonly _serializedATNSegment2: string =
		"\xB6\x03\xB6\x03\xB6\x03\xB6\x03\xB6\x03\xB6\x03\xB6\x05\xB6\u120D\n\xB6" +
		"\x03\xB7\x03\xB7\x03\xB7\x03\xB7\x03\xB7\x07\xB7\u1214\n\xB7\f\xB7\x0E" +
		"\xB7\u1217\v\xB7\x05\xB7\u1219\n\xB7\x03\xB7\x03\xB7\x05\xB7\u121D\n\xB7" +
		"\x03\xB7\x07\xB7\u1220\n\xB7\f\xB7\x0E\xB7\u1223\v\xB7\x03\xB7\x05\xB7" +
		"\u1226\n\xB7\x03\xB8\x03\xB8\x03\xB8\x03\xB8\x03\xB8\x07\xB8\u122D\n\xB8" +
		"\f\xB8\x0E\xB8\u1230\v\xB8\x05\xB8\u1232\n\xB8\x03\xB8\x05\xB8\u1235\n" +
		"\xB8\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x05\xB9\u123C\n\xB9\x03\xB9" +
		"\x03\xB9\x03\xB9\x03\xB9\x05\xB9\u1242\n\xB9\x03\xB9\x03\xB9\x03\xB9\x03" +
		"\xB9\x05\xB9\u1248\n\xB9\x03\xBA\x03\xBA\x03\xBA\x03\xBB\x03\xBB\x03\xBB" +
		"\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB" +
		"\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x07\xBB\u1260" +
		"\n\xBB\f\xBB\x0E\xBB\u1263\v\xBB\x05\xBB\u1265\n\xBB\x03\xBB\x05\xBB\u1268" +
		"\n\xBB\x03\xBC\x03\xBC\x03\xBD\x03\xBD\x03\xBE\x03\xBE\x03\xBF\x03\xBF" +
		"\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x03\xBF" +
		"\x05\xBF\u127B\n\xBF\x05\xBF\u127D\n\xBF\x03\xC0\x03\xC0\x03\xC0\x03\xC0" +
		"\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0" +
		"\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x07\xC0\u1292\n\xC0\f" +
		"\xC0\x0E\xC0\u1295\v\xC0\x05\xC0\u1297\n\xC0\x03\xC0\x05\xC0\u129A\n\xC0" +
		"\x03\xC1\x03\xC1\x03\xC2\x03\xC2\x03\xC3\x03\xC3\x03\xC4\x03\xC4\x03\xC4" +
		"\x03\xC4\x03\xC4\x03\xC4\x03\xC4\x03\xC4\x03\xC4\x03\xC4\x03\xC4\x05\xC4" +
		"\u12AD\n\xC4\x05\xC4\u12AF\n\xC4\x03\xC5\x03\xC5\x03\xC5\x03\xC5\x03\xC6" +
		"\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x07\xC6\u12BB\n\xC6\f\xC6\x0E" +
		"\xC6\u12BE\v\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6" +
		"\x03\xC6\x07\xC6\u12C8\n\xC6\f\xC6\x0E\xC6\u12CB\v\xC6\x03\xC6\x03\xC6" +
		"\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6" +
		"\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6" +
		"\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6" +
		"\x03\xC6\x03\xC6\x03\xC6\x07\xC6\u12ED\n\xC6\f\xC6\x0E\xC6\u12F0\v\xC6" +
		"\x03\xC6\x03\xC6\x05\xC6\u12F4\n\xC6\x03\xC7\x03\xC7\x03\xC7\x03\xC7\x03" +
		"\xC7\x03\xC7\x03\xC8\x03\xC8\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03" +
		"\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03" +
		"\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03" +
		"\xC9\x03\xC9\x05\xC9\u1317\n\xC9\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x03\xCA" +
		"\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x05\xCA\u1325" +
		"\n\xCA\x03\xCB\x03\xCB\x03\xCB\x07\xCB\u132A\n\xCB\f\xCB\x0E\xCB\u132D" +
		"\v\xCB\x03\xCB\x05\xCB\u1330\n\xCB\x03\xCC\x03\xCC\x03\xCC\x03\xCC\x05" +
		"\xCC\u1336\n\xCC\x03\xCD\x03\xCD\x03\xCD\x03\xCD\x03\xCD\x03\xCD\x05\xCD" +
		"\u133E\n\xCD\x05\xCD\u1340\n\xCD\x03\xCE\x03\xCE\x03\xCE\x03\xCE\x03\xCF" +
		"\x03\xCF\x03\xCF\x03\xCF\x03\xCF\x05\xCF\u134B\n\xCF\x03\xD0\x03\xD0\x03" +
		"\xD0\x03\xD0\x03\xD1\x03\xD1\x03\xD1\x03\xD1\x05\xD1\u1355\n\xD1\x03\xD2" +
		"\x03\xD2\x03\xD2\x03\xD2\x03\xD2\x05\xD2\u135C\n\xD2\x03\xD3\x03\xD3\x03" +
		"\xD3\x03\xD3\x05\xD3\u1362\n\xD3\x03\xD4\x03\xD4\x03\xD4\x03\xD4\x03\xD5" +
		"\x03\xD5\x05\xD5\u136A\n\xD5\x03\xD6\x03\xD6\x03\xD6\x05\xD6\u136F\n\xD6" +
		"\x03\xD6\x03\xD6\x03\xD6\x03\xD6\x07\xD6\u1375\n\xD6\f\xD6\x0E\xD6\u1378" +
		"\v\xD6\x03\xD6\x03\xD6\x03\xD6\x07\xD6\u137D\n\xD6\f\xD6\x0E\xD6\u1380" +
		"\v\xD6\x03\xD6\x03\xD6\x03\xD6\x07\xD6\u1385\n\xD6\f\xD6\x0E\xD6\u1388" +
		"\v\xD6\x03\xD6\x03\xD6\x03\xD6\x07\xD6\u138D\n\xD6\f\xD6\x0E\xD6\u1390" +
		"\v\xD6\x03\xD6\x07\xD6\u1393\n\xD6\f\xD6\x0E\xD6\u1396\v\xD6\x03\xD6\x03" +
		"\xD6\x05\xD6\u139A\n\xD6\x03\xD7\x03\xD7\x03\xD7\x05\xD7\u139F\n\xD7\x03" +
		"\xD7\x06\xD7\u13A2\n\xD7\r\xD7\x0E\xD7\u13A3\x03\xD7\x03\xD7\x06\xD7\u13A8" +
		"\n\xD7\r\xD7\x0E\xD7\u13A9\x05\xD7\u13AC\n\xD7\x03\xD7\x03\xD7\x03\xD7" +
		"\x03\xD8\x03\xD8\x03\xD8\x03\xD8\x06\xD8\u13B5\n\xD8\r\xD8\x0E\xD8\u13B6" +
		"\x03\xD8\x07\xD8\u13BA\n\xD8\f\xD8\x0E\xD8\u13BD\v\xD8\x03\xD8\x03\xD8" +
		"\x06\xD8\u13C1\n\xD8\r\xD8\x0E\xD8\u13C2\x05\xD8\u13C5\n\xD8\x03\xD8\x03" +
		"\xD8\x03\xD8\x03\xD9\x03\xD9\x03\xD9\x03\xDA\x03\xDA\x03\xDA\x03\xDB\x03" +
		"\xDB\x03\xDB\x05\xDB\u13D3\n\xDB\x03\xDB\x03\xDB\x06\xDB\u13D7\n\xDB\r" +
		"\xDB\x0E\xDB\u13D8\x03\xDB\x03\xDB\x03\xDB\x05\xDB\u13DE\n\xDB\x03\xDC" +
		"\x03\xDC\x03\xDC\x05\xDC\u13E3\n\xDC\x03\xDC\x03\xDC\x06\xDC\u13E7\n\xDC" +
		"\r\xDC\x0E\xDC\u13E8\x03\xDC\x03\xDC\x03\xDC\x03\xDC\x03\xDC\x05\xDC\u13F0" +
		"\n\xDC\x03\xDD\x03\xDD\x03\xDD\x03\xDE\x03\xDE\x03\xDE\x05\xDE\u13F8\n" +
		"\xDE\x03\xDE\x03\xDE\x03\xDE\x03\xDE\x06\xDE\u13FE\n\xDE\r\xDE\x0E\xDE" +
		"\u13FF\x03\xDE\x03\xDE\x03\xDE\x05\xDE\u1405\n\xDE\x03\xDF\x03\xDF\x03" +
		"\xDF\x03\xDF\x05\xDF\u140B\n\xDF\x03\xDF\x05\xDF\u140E\n\xDF\x03\xDF\x03" +
		"\xDF\x03\xDF\x03\xDF\x03\xDF\x03\xDF\x05\xDF\u1416\n\xDF\x03\xE0\x03\xE0" +
		"\x03\xE0\x03\xE0\x03\xE0\x05\xE0\u141D\n\xE0\x03\xE1\x03\xE1\x03\xE1\x03" +
		"\xE1\x03\xE1\x03\xE1\x03\xE1\x05\xE1\u1426\n\xE1\x03\xE1\x05\xE1\u1429" +
		"\n\xE1\x03\xE2\x03\xE2\x03\xE2\x03\xE2\x03\xE2\x03\xE2\x03\xE3\x03\xE3" +
		"\x03\xE3\x03\xE3\x03\xE3\x03\xE3\x03\xE3\x07\xE3\u1438\n\xE3\f\xE3\x0E" +
		"\xE3\u143B\v\xE3\x03\xE3\x03\xE3\x03\xE4\x03\xE4\x03\xE4\x05\xE4\u1442" +
		"\n\xE4\x03\xE4\x03\xE4\x03\xE4\x03\xE4\x03\xE4\x03\xE4\x05\xE4\u144A\n" +
		"\xE4\x03\xE5\x03\xE5\x05\xE5\u144E\n\xE5\x03\xE5\x03\xE5\x03\xE6\x03\xE6" +
		"\x03\xE6\x05\xE6\u1455\n\xE6\x03\xE6\x03\xE6\x06\xE6\u1459\n\xE6\r\xE6" +
		"\x0E\xE6\u145A\x03\xE7\x03\xE7\x03\xE7\x03\xE7\x06\xE7\u1461\n\xE7\r\xE7" +
		"\x0E\xE7\u1462\x03\xE8\x03\xE8\x03\xE8\x05\xE8\u1468\n\xE8\x03\xE8\x03" +
		"\xE8\x03\xE8\x07\xE8\u146D\n\xE8\f\xE8\x0E\xE8\u1470\v\xE8\x03\xE8\x03" +
		"\xE8\x03\xE8\x07\xE8\u1475\n\xE8\f\xE8\x0E\xE8\u1478\v\xE8\x03\xE8\x03" +
		"\xE8\x03\xE8\x03\xE8\x05\xE8\u147E\n\xE8\x03\xE8\x07\xE8\u1481\n\xE8\f" +
		"\xE8\x0E\xE8\u1484\v\xE8\x05\xE8\u1486\n\xE8\x05\xE8\u1488\n\xE8\x03\xE8" +
		"\x03\xE8\x06\xE8\u148C\n\xE8\r\xE8\x0E\xE8\u148D\x05\xE8\u1490\n\xE8\x03" +
		"\xE8\x03\xE8\x07\xE8\u1494\n\xE8\f\xE8\x0E\xE8\u1497\v\xE8\x03\xE8\x03" +
		"\xE8\x05\xE8\u149B\n\xE8\x03\xE8\x03\xE8\x03\xE8\x03\xE8\x03\xE8\x05\xE8" +
		"\u14A2\n\xE8\x03\xE9\x03\xE9\x03\xE9\x05\xE9\u14A7\n\xE9\x03\xE9\x03\xE9" +
		"\x05\xE9\u14AB\n\xE9\x03\xE9\x03\xE9\x03\xE9\x05\xE9\u14B0\n\xE9\x07\xE9" +
		"\u14B2\n\xE9\f\xE9\x0E\xE9\u14B5\v\xE9\x03\xE9\x03\xE9\x03\xE9\x05\xE9" +
		"\u14BA\n\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x05\xE9\u14C0\n\xE9\x03\xE9" +
		"\x07\xE9\u14C3\n\xE9\f\xE9\x0E\xE9\u14C6\v\xE9\x05\xE9\u14C8\n\xE9\x05" +
		"\xE9\u14CA\n\xE9\x03\xE9\x03\xE9\x06\xE9\u14CE\n\xE9\r\xE9\x0E\xE9\u14CF" +
		"\x05\xE9\u14D2\n\xE9\x03\xE9\x03\xE9\x07\xE9\u14D6\n\xE9\f\xE9\x0E\xE9" +
		"\u14D9\v\xE9\x03\xE9\x03\xE9\x05\xE9\u14DD\n\xE9\x03\xEA\x03\xEA\x03\xEA" +
		"\x05\xEA\u14E2\n\xEA\x03\xEA\x03\xEA\x03\xEA\x07\xEA\u14E7\n\xEA\f\xEA" +
		"\x0E\xEA\u14EA\v\xEA\x03\xEB\x03\xEB\x03\xEB\x03\xEB\x07\xEB\u14F0\n\xEB" +
		"\f\xEB\x0E\xEB\u14F3\v\xEB\x03\xEB\x03\xEB\x05\xEB\u14F7\n\xEB\x03\xEB" +
		"\x03\xEB\x03\xEB\x03\xEB\x03\xEB\x07\xEB\u14FE\n\xEB\f\xEB\x0E\xEB\u1501" +
		"\v\xEB\x03\xEB\x05\xEB\u1504\n\xEB\x03\xEB\x03\xEB\x03\xEB\x03\xEB\x05" +
		"\xEB\u150A\n\xEB\x03\xEB\x07\xEB\u150D\n\xEB\f\xEB\x0E\xEB\u1510\v\xEB" +
		"\x05\xEB\u1512\n\xEB\x05\xEB\u1514\n\xEB\x03\xEB\x03\xEB\x03\xEB\x03\xEB" +
		"\x07\xEB\u151A\n\xEB\f\xEB\x0E\xEB\u151D\v\xEB\x05\xEB\u151F\n\xEB\x03" +
		"\xEB\x03\xEB\x03\xEB\x03\xEB\x03\xEB\x05\xEB\u1526\n\xEB\x05\xEB\u1528" +
		"\n\xEB\x03\xEB\x03\xEB\x03\xEB\x05\xEB\u152D\n\xEB\x03\xEB\x03\xEB\x03" +
		"\xEB\x07\xEB\u1532\n\xEB\f\xEB\x0E\xEB\u1535\v\xEB\x03\xEB\x03\xEB\x03" +
		"\xEB\x03\xEB\x07\xEB\u153B\n\xEB\f\xEB\x0E\xEB\u153E\v\xEB\x03\xEB\x03" +
		"\xEB\x03\xEB\x05\xEB\u1543\n\xEB\x05\xEB\u1545\n\xEB\x03\xEC\x03\xEC\x03" +
		"\xEC\x03\xEC\x03\xEC\x05\xEC\u154C\n\xEC\x03\xEC\x05\xEC\u154F\n\xEC\x03" +
		"\xED\x03\xED\x03\xED\x03\xED\x03\xED\x03\xED\x03\xED\x03\xED\x07\xED\u1559" +
		"\n\xED\f\xED\x0E\xED\u155C\v\xED\x03\xED\x03\xED\x03\xED\x05\xED\u1561" +
		"\n\xED\x03\xEE\x03\xEE\x03\xEE\x03\xEE\x03\xEE\x03\xEE\x05\xEE\u1569\n" +
		"\xEE\x03\xEE\x05\xEE\u156C\n\xEE\x03\xEE\x03\xEE\x05\xEE\u1570\n\xEE\x03" +
		"\xEE\x05\xEE\u1573\n\xEE\x03\xEE\x03\xEE\x05\xEE\u1577\n\xEE\x05\xEE\u1579" +
		"\n\xEE\x03\xEF\x03\xEF\x03\xEF\x03\xEF\x03\xEF\x03\xEF\x03\xEF\x03\xEF" +
		"\x03\xEF\x05\xEF\u1584\n\xEF\x03\xEF\x05\xEF\u1587\n\xEF\x03\xEF\x03\xEF" +
		"\x05\xEF\u158B\n\xEF\x03\xEF\x05\xEF\u158E\n\xEF\x03\xEF\x05\xEF\u1591" +
		"\n\xEF\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x05\xF0\u1598\n\xF0\x03" +
		"\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x07\xF1\u15A2" +
		"\n\xF1\f\xF1\x0E\xF1\u15A5\v\xF1\x05\xF1\u15A7\n\xF1\x03\xF2\x03\xF2\x03" +
		"\xF2\x03\xF2\x03\xF2\x05\xF2\u15AE\n\xF2\x03\xF2\x03\xF2\x07\xF2\u15B2" +
		"\n\xF2\f\xF2\x0E\xF2\u15B5\v\xF2\x03\xF3\x03\xF3\x03\xF3\x03\xF3\x03\xF3" +
		"\x07\xF3\u15BC\n\xF3\f\xF3\x0E\xF3\u15BF\v\xF3\x03\xF4\x03\xF4\x05\xF4" +
		"\u15C3\n\xF4\x03\xF4\x03\xF4\x03\xF4\x07\xF4\u15C8\n\xF4\f\xF4\x0E\xF4" +
		"\u15CB\v\xF4\x03\xF4\x03\xF4\x05\xF4\u15CF\n\xF4\x03\xF4\x03\xF4\x03\xF4" +
		"\x03\xF4\x05\xF4\u15D5\n\xF4\x03\xF4\x03\xF4\x05\xF4\u15D9\n\xF4\x03\xF4" +
		"\x03\xF4\x05\xF4\u15DD\n\xF4\x03\xF4\x03\xF4\x03\xF4\x03\xF4\x03\xF4\x03" +
		"\xF4\x05\xF4\u15E5\n\xF4\x03\xF4\x03\xF4\x05\xF4\u15E9\n\xF4\x03\xF4\x03" +
		"\xF4\x05\xF4\u15ED\n\xF4\x03\xF4\x03\xF4\x03\xF4\x03\xF4\x05\xF4\u15F3" +
		"\n\xF4\x05\xF4\u15F5\n\xF4\x03\xF5\x03\xF5\x03\xF5\x03\xF5\x03\xF6\x03" +
		"\xF6\x03\xF7\x03\xF7\x03\xF7\x03\xF7\x05\xF7\u1601\n\xF7\x03\xF7\x03\xF7" +
		"\x03\xF7\x05\xF7\u1606\n\xF7\x03\xF7\x03\xF7\x03\xF7\x03\xF7\x05\xF7\u160C" +
		"\n\xF7\x03\xF7\x03\xF7\x03\xF7\x03\xF7\x05\xF7\u1612\n\xF7\x03\xF7\x03" +
		"\xF7\x05\xF7\u1616\n\xF7\x03\xF7\x03\xF7\x03\xF7\x05\xF7\u161B\n\xF7\x05" +
		"\xF7\u161D\n\xF7\x03\xF8\x03\xF8\x03\xF8\x03\xF9\x03\xF9\x03\xF9\x03\xF9" +
		"\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9" +
		"\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9" +
		"\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x05\xF9\u163D\n\xF9\x06\xF9\u163F" +
		"\n\xF9\r\xF9\x0E\xF9\u1640\x03\xF9\x03\xF9\x05\xF9\u1645\n\xF9\x03\xF9" +
		"\x05\xF9\u1648\n\xF9\x03\xFA\x03\xFA\x03\xFA\x03\xFA\x03\xFA\x03\xFA\x03" +
		"\xFA\x05\xFA\u1651\n\xFA\x03\xFA\x03\xFA\x05\xFA\u1655\n\xFA\x03\xFA\x03" +
		"\xFA\x03\xFA\x03\xFA\x03\xFA\x03\xFA\x03\xFA\x05\xFA\u165E\n\xFA\x03\xFA" +
		"\x03\xFA\x05\xFA\u1662\n\xFA\x03\xFA\x03\xFA\x05\xFA\u1666\n\xFA\x03\xFA" +
		"\x03\xFA\x03\xFA\x03\xFA\x05\xFA\u166C\n\xFA\x05\xFA\u166E\n\xFA\x03\xFB" +
		"\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x05\xFB\u1677\n\xFB\x03" +
		"\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x05\xFB\u1681" +
		"\n\xFB\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC" +
		"\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC" +
		"\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x05\xFC" +
		"\u169C\n\xFC\x03\xFD\x03\xFD\x05\xFD\u16A0\n\xFD\x03\xFD\x03\xFD\x03\xFD" +
		"\x05\xFD\u16A5\n\xFD\x03\xFE\x03\xFE\x03\xFE\x03\xFE\x03\xFE\x05\xFE\u16AC" +
		"\n\xFE\x03\xFE\x05\xFE\u16AF\n\xFE\x03\xFE\x03\xFE\x03\xFE\x03\xFE\x05" +
		"\xFE\u16B5\n\xFE\x03\xFF\x03\xFF\x03\xFF\x03\xFF\x03\xFF\x03\xFF\x03\xFF" +
		"\x03\xFF\x05\xFF\u16BF\n\xFF\x03\u0100\x03\u0100\x03\u0100\x03\u0100\x03" +
		"\u0100\x03\u0100\x03\u0100\x03\u0100\x05\u0100\u16C9\n\u0100\x03\u0101" +
		"\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101" +
		"\x05\u0101\u16D3\n\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x05\u0101" +
		"\u16D9\n\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101" +
		"\x03\u0101\x05\u0101\u16E2\n\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101" +
		"\x05\u0101\u16E8\n\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101\x03\u0101" +
		"\x05\u0101\u16EF\n\u0101\x05\u0101\u16F1\n\u0101\x03\u0102\x03\u0102\x03" +
		"\u0102\x03\u0103\x03\u0103\x03\u0103\x05\u0103\u16F9\n\u0103\x03\u0103" +
		"\x03\u0103\x03\u0103\x03\u0103\x05\u0103\u16FF\n\u0103\x03\u0103\x03\u0103" +
		"\x05\u0103\u1703\n\u0103\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104" +
		"\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104" +
		"\x03\u0104\x03\u0104\x03\u0104\x05\u0104\u1714\n\u0104\x03\u0105\x03\u0105" +
		"\x03\u0105\x03\u0106\x03\u0106\x03\u0106\x03\u0106\x03\u0106\x05\u0106" +
		"\u171E\n\u0106\x03\u0107\x03\u0107\x05\u0107\u1722\n\u0107\x03\u0107\x03" +
		"\u0107\x05\u0107\u1726\n\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x05\u0107\u1730\n\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x05\u0107\u1735\n\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x03\u0107" +
		"\x03\u0107\x03\u0107\x03\u0107\x03\u0107\x05\u0107\u177D\n\u0107\x03\u0108" +
		"\x03\u0108\x03\u0108\x03\u0108\x03\u0108\x03\u0108\x03\u0108\x03\u0108" +
		"\x03\u0108\x03\u0108\x03\u0108\x03\u0108\x03\u0108\x03\u0108\x03\u0108" +
		"\x03\u0108\x05\u0108\u178F\n\u0108\x03\u0109\x03\u0109\x03\u0109\x03\u0109" +
		"\x03\u010A\x03\u010A\x05\u010A\u1797\n\u010A\x03\u010A\x03\u010A\x03\u010A" +
		"\x03\u010A\x05\u010A\u179D\n\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A" +
		"\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x05\u010A" +
		"\u17A9\n\u010A\x03\u010A\x03\u010A\x05\u010A\u17AD\n\u010A\x03\u010A\x03" +
		"\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03" +
		"\u010A\x05\u010A\u17B8\n\u010A\x03\u010A\x03\u010A\x05\u010A\u17BC\n\u010A" +
		"\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A\x03\u010A" +
		"\x05\u010A\u17C5\n\u010A\x03\u010B\x03\u010B\x03\u010B\x03\u010B\x07\u010B" +
		"\u17CB\n\u010B\f\u010B\x0E\u010B\u17CE\v\u010B\x03\u010C\x03\u010C\x03" +
		"\u010C\x03\u010C\x05\u010C\u17D4\n\u010C\x03\u010D\x03\u010D\x05\u010D" +
		"\u17D8\n\u010D\x03\u010D\x03\u010D\x03\u010D\x03\u010E\x03\u010E\x05\u010E" +
		"\u17DF\n\u010E\x03\u010E\x03\u010E\x03\u010E\x05\u010E\u17E4\n\u010E\x03" +
		"\u010E\x05\u010E\u17E7\n\u010E\x03\u010E\x05\u010E\u17EA\n\u010E\x03\u010F" +
		"\x03\u010F\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u17F5\n\u0110\x03\u0111\x03\u0111\x05\u0111\u17F9" +
		"\n\u0111\x03\u0111\x03\u0111\x05\u0111\u17FD\n\u0111\x03\u0111\x03\u0111" +
		"\x03\u0111\x03\u0111\x03\u0111\x03\u0111\x03\u0112\x03\u0112\x03\u0112" +
		"\x03\u0112\x03\u0112\x07\u0112\u180A\n\u0112\f\u0112\x0E\u0112\u180D\v" +
		"\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x07\u0112\u1813\n\u0112" +
		"\f\u0112\x0E\u0112\u1816\v\u0112\x05\u0112\u1818\n\u0112\x03\u0113\x03" +
		"\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0114\x03\u0114\x03\u0114\x03" +
		"\u0114\x03\u0114\x07\u0114\u1824\n\u0114\f\u0114\x0E\u0114\u1827\v\u0114" +
		"\x03\u0115\x03\u0115\x03\u0115\x03\u0115\x03\u0115\x03\u0115\x03\u0116" +
		"\x03\u0116\x03\u0116\x03\u0116\x03\u0117\x03\u0117\x03\u0117\x03\u0117" +
		"\x03\u0117\x05\u0117\u1838\n\u0117\x03\u0117\x03\u0117\x03\u0117\x03\u0117" +
		"\x03\u0117\x03\u0117\x03\u0117\x03\u0117\x03\u0117\x03\u0117\x03\u0117" +
		"\x05\u0117\u1845\n\u0117\x03\u0117\x05\u0117\u1848\n\u0117\x03\u0117\x03" +
		"\u0117\x05\u0117\u184C\n\u0117\x03\u0117\x05\u0117\u184F\n\u0117\x05\u0117" +
		"\u1851\n\u0117\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x05\u0118" +
		"\u1858\n\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x05\u0118" +
		"\u185F\n\u0118\x07\u0118\u1861\n\u0118\f\u0118\x0E\u0118\u1864\v\u0118" +
		"\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x05\u0118\u186A\n\u0118\x03\u0118" +
		"\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x05\u0118\u1871\n\u0118\x03\u0118" +
		"\x05\u0118\u1874\n\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118" +
		"\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118\x03\u0118" +
		"\x07\u0118\u1882\n\u0118\f\u0118\x0E\u0118\u1885\v\u0118\x05\u0118\u1887" +
		"\n\u0118\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03" +
		"\u0119\x03\u0119\x05\u0119\u1891\n\u0119\x03\u0119\x03\u0119\x05\u0119" +
		"\u1895\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x05\u0119\u189B" +
		"\n\u0119\x03\u0119\x05\u0119\u189E\n\u0119\x03\u0119\x05\u0119\u18A1\n" +
		"\u0119\x03\u0119\x03\u0119\x03\u0119\x05\u0119\u18A6\n\u0119\x03\u0119" +
		"\x03\u0119\x05\u0119\u18AA\n\u0119\x03\u0119\x05\u0119\u18AD\n\u0119\x03" +
		"\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x05\u0119\u18B4\n\u0119" +
		"\x03\u0119\x05\u0119\u18B7\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x05\u0119\u18BD\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x05\u0119\u18E1\n\u0119\x03\u0119\x05\u0119\u18E4\n\u0119\x03" +
		"\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03" +
		"\u0119\x03\u0119\x03\u0119\x05\u0119\u18F0\n\u0119\x03\u0119\x05\u0119" +
		"\u18F3\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x05\u0119\u1903\n\u0119\x05\u0119\u1905\n\u0119\x03\u0119\x03" +
		"\u0119\x05\u0119\u1909\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x05\u0119\u1910\n\u0119\x03\u0119\x03\u0119\x05\u0119\u1914" +
		"\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x05\u0119\u191B" +
		"\n\u0119\x03\u0119\x05\u0119\u191E\n\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x03\u0119\x03\u0119\x07\u0119\u1925\n\u0119\f\u0119\x0E\u0119\u1928\v" +
		"\u0119\x05\u0119\u192A\n\u0119\x03\u0119\x03\u0119\x03\u0119\x05\u0119" +
		"\u192F\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x05\u0119\u1935" +
		"\n\u0119\x05\u0119\u1937\n\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u0119" +
		"\x05\u0119\u193D\n\u0119\x03\u0119\x03\u0119\x05\u0119\u1941\n\u0119\x03" +
		"\u011A\x03\u011A\x03\u011A\x03\u011A\x05\u011A\u1947\n\u011A\x03\u011A" +
		"\x05\u011A\u194A\n\u011A\x03\u011A\x05\u011A\u194D\n\u011A\x03\u011B\x03" +
		"\u011B\x03\u011B\x03\u011B\x03\u011B\x03\u011B\x03\u011B\x03\u011B\x03" +
		"\u011B\x03\u011B\x03\u011B\x05\u011B\u195A\n\u011B\x03\u011B\x05\u011B" +
		"\u195D\n\u011B\x03\u011C\x03\u011C\x03\u011C\x03\u011C\x05\u011C\u1963" +
		"\n\u011C\x03\u011D\x05\u011D\u1966\n\u011D\x03\u011D\x03\u011D\x03\u011D" +
		"\x03\u011D\x03\u011D\x03\u011D\x05\u011D\u196E\n\u011D\x03\u011D\x03\u011D" +
		"\x03\u011D\x03\u011D\x03\u011D\x03\u011D\x05\u011D\u1976\n\u011D\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x05\u011E\u197C\n\u011E\x03\u011E\x05\u011E" +
		"\u197F\n\u011E\x03\u011E\x03\u011E\x05\u011E\u1983\n\u011E\x03\u011F\x03" +
		"\u011F\x03\u011F\x03\u011F\x03\u011F\x03\u011F\x03\u011F\x03\u011F\x03" +
		"\u011F\x03\u011F\x03\u011F\x03\u011F\x05\u011F\u1991\n\u011F\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0121\x03\u0121\x03\u0121\x03\u0121\x03\u0121" +
		"\x07\u0121\u199B\n\u0121\f\u0121\x0E\u0121\u199E\v\u0121\x03\u0121\x03" +
		"\u0121\x03\u0121\x03\u0121\x03\u0121\x05\u0121\u19A5\n\u0121\x03\u0121" +
		"\x03\u0121\x05\u0121\u19A9\n\u0121\x03\u0121\x03\u0121\x03\u0121\x03\u0122" +
		"\x03\u0122\x05\u0122\u19B0\n\u0122\x03\u0122\x03\u0122\x03\u0122\x07\u0122" +
		"\u19B5\n\u0122\f\u0122\x0E\u0122\u19B8\v\u0122\x03\u0123\x03\u0123\x05" +
		"\u0123\u19BC\n\u0123\x03\u0123\x03\u0123\x03\u0124\x03\u0124\x03\u0124" +
		"\x03\u0124\x03\u0124\x03\u0124\x03\u0124\x07\u0124\u19C7\n\u0124\f\u0124" +
		"\x0E\u0124\u19CA\v\u0124\x03\u0125\x03\u0125\x03\u0125\x03\u0125\x07\u0125" +
		"\u19D0\n\u0125\f\u0125\x0E\u0125\u19D3\v\u0125\x03\u0126\x03\u0126\x03" +
		"\u0126\x03\u0126\x03\u0126\x05\u0126\u19DA\n\u0126\x03\u0127\x03\u0127" +
		"\x03\u0127\x05\u0127\u19DF\n\u0127\x03\u0127\x05\u0127\u19E2\n\u0127\x03" +
		"\u0128\x03\u0128\x03\u0128\x05\u0128\u19E7\n\u0128\x03\u0128\x05\u0128" +
		"\u19EA\n\u0128\x03\u0129\x03\u0129\x03\u012A\x03\u012A\x03\u012B\x03\u012B" +
		"\x03\u012B\x03\u012B\x03\u012B\x03\u012B\x05\u012B\u19F6\n\u012B\x03\u012C" +
		"\x03\u012C\x03\u012C\x05\u012C\u19FB\n\u012C\x03\u012C\x03\u012C\x03\u012C" +
		"\x03\u012C\x03\u012C\x03\u012C\x03\u012C\x03\u012C\x03\u012C\x03\u012C" +
		"\x03\u012C\x05\u012C\u1A08\n\u012C\x05\u012C\u1A0A\n\u012C\x03\u012C\x03" +
		"\u012C\x03\u012C\x05\u012C\u1A0F\n\u012C\x03\u012C\x03\u012C\x05\u012C" +
		"\u1A13\n\u012C\x03\u012C\x05\u012C\u1A16\n\u012C\x05\u012C\u1A18\n\u012C" +
		"\x03\u012D\x03\u012D\x03\u012D\x03\u012D\x03\u012D\x05\u012D\u1A1F\n\u012D" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x05\u012E\u1A26\n\u012E" +
		"\x03\u012E\x05\u012E\u1A29\n\u012E\x03\u012E\x05\u012E\u1A2C\n\u012E\x03" +
		"\u012E\x03\u012E\x03\u012E\x03\u012E\x05\u012E\u1A32\n\u012E\x03\u012E" +
		"\x03\u012E\x05\u012E\u1A36\n\u012E\x03\u012F\x03\u012F\x03\u012F\x03\u012F" +
		"\x05\u012F\u1A3C\n\u012F\x03\u0130\x03\u0130\x03\u0130\x03\u0130\x03\u0130" +
		"\x03\u0130\x05\u0130\u1A44\n\u0130\x03\u0130\x03\u0130\x03\u0131\x03\u0131" +
		"\x03\u0131\x03\u0131\x03\u0131\x05\u0131\u1A4D\n\u0131\x03\u0131\x03\u0131" +
		"\x03\u0132\x03\u0132\x03\u0132\x03\u0133\x03\u0133\x03\u0133\x03\u0134" +
		"\x03\u0134\x03\u0134\x05\u0134\u1A5A\n\u0134\x03\u0134\x03\u0134\x03\u0134" +
		"\x05\u0134\u1A5F\n\u0134\x03\u0134\x03\u0134\x03\u0134\x03\u0134\x07\u0134" +
		"\u1A65\n\u0134\f\u0134\x0E\u0134\u1A68\v\u0134\x05\u0134\u1A6A\n\u0134" +
		"\x03\u0135\x03\u0135\x03\u0135\x05\u0135\u1A6F\n\u0135\x03\u0135\x03\u0135" +
		"\x03\u0135\x05\u0135\u1A74\n\u0135\x03\u0135\x03\u0135\x03\u0135\x03\u0135" +
		"\x07\u0135\u1A7A\n\u0135\f\u0135\x0E\u0135\u1A7D\v\u0135\x05\u0135\u1A7F" +
		"\n\u0135\x03\u0136\x03\u0136\x03\u0136\x03\u0136\x03\u0136\x03\u0136\x05" +
		"\u0136\u1A87\n\u0136\x03\u0137\x03\u0137\x05\u0137\u1A8B\n\u0137\x03\u0137" +
		"\x03\u0137\x03\u0137\x07\u0137\u1A90\n\u0137\f\u0137\x0E\u0137\u1A93\v" +
		"\u0137\x03\u0138\x03\u0138\x03\u0138\x05\u0138\u1A98\n\u0138\x03\u0138" +
		"\x05\u0138\u1A9B\n\u0138\x03\u0139\x03\u0139\x05\u0139\u1A9F\n\u0139\x03" +
		"\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03" +
		"\u0139\x03\u0139\x07\u0139\u1AAA\n\u0139\f\u0139\x0E\u0139\u1AAD\v\u0139" +
		"\x03\u0139\x03\u0139\x03\u0139\x05\u0139\u1AB2\n\u0139\x03\u0139\x03\u0139" +
		"\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x07\u0139" +
		"\u1ABC\n\u0139\f\u0139\x0E\u0139\u1ABF\v\u0139\x05\u0139\u1AC1\n\u0139" +
		"\x03\u013A\x03\u013A\x03\u013B\x03\u013B\x03\u013B\x03\u013B\x03\u013B" +
		"\x05\u013B\u1ACA\n\u013B\x03\u013B\x03\u013B\x03\u013B\x05\u013B\u1ACF" +
		"\n\u013B\x03\u013C\x03\u013C\x03\u013D\x03\u013D\x03\u013E\x03\u013E\x03" +
		"\u013F\x03\u013F\x03\u0140\x03\u0140\x03\u0141\x03\u0141\x03\u0142\x03" +
		"\u0142\x03\u0143\x03\u0143\x03\u0143\x07\u0143\u1AE2\n\u0143\f\u0143\x0E" +
		"\u0143\u1AE5\v\u0143\x03\u0144\x03\u0144\x03\u0145\x03\u0145\x03\u0146" +
		"\x03\u0146\x03\u0147\x03\u0147\x03\u0148\x03\u0148\x03\u0148\x07\u0148" +
		"\u1AF2\n\u0148\f\u0148\x0E\u0148\u1AF5\v\u0148\x03\u0149\x03\u0149\x03" +
		"\u014A\x03\u014A\x03\u014A\x07\u014A\u1AFC\n\u014A\f\u014A\x0E\u014A\u1AFF" +
		"\v\u014A\x03\u014B\x03\u014B\x05\u014B\u1B03\n\u014B\x03\u014C";
	private static readonly _serializedATNSegment3: string =
		"\x03\u014C\x03\u014C\x05\u014C\u1B08\n\u014C\x05\u014C\u1B0A\n\u014C\x03" +
		"\u014C\x05\u014C\u1B0D\n\u014C\x03\u014C\x03\u014C\x05\u014C\u1B11\n\u014C" +
		"\x05\u014C\u1B13\n\u014C\x03\u014D\x03\u014D\x03\u014D\x07\u014D\u1B18" +
		"\n\u014D\f\u014D\x0E\u014D\u1B1B\v\u014D\x03\u014E\x03\u014E\x03\u014E" +
		"\x05\u014E\u1B20\n\u014E\x05\u014E\u1B22\n\u014E\x03\u014E\x05\u014E\u1B25" +
		"\n\u014E\x03\u014E\x03\u014E\x05\u014E\u1B29\n\u014E\x05\u014E\u1B2B\n" +
		"\u014E\x03\u014F\x03\u014F\x03\u0150\x03\u0150\x03\u0151\x03\u0151\x03" +
		"\u0152\x03\u0152\x03\u0152\x07\u0152\u1B36\n\u0152\f\u0152\x0E\u0152\u1B39" +
		"\v\u0152\x03\u0153\x03\u0153\x03\u0154\x03\u0154\x03\u0154\x03\u0154\x03" +
		"\u0154\x05\u0154\u1B42\n\u0154\x03\u0154\x05\u0154\u1B45\n\u0154\x03\u0154" +
		"\x05\u0154\u1B48\n\u0154\x03\u0155\x03\u0155\x03\u0155\x03\u0155\x03\u0156" +
		"\x03\u0156\x03\u0156\x03\u0157\x03\u0157\x03\u0157\x03\u0157\x05\u0157" +
		"\u1B55\n\u0157\x03\u0158\x03\u0158\x03\u0159\x03\u0159\x05\u0159\u1B5B" +
		"\n\u0159\x03\u0159\x05\u0159\u1B5E\n\u0159\x03\u015A\x03\u015A\x03\u015B" +
		"\x03\u015B\x03\u015B\x03\u015B\x05\u015B\u1B66\n\u015B\x03\u015C\x03\u015C" +
		"\x03\u015D\x03\u015D\x03\u015D\x05\u015D\u1B6D\n\u015D\x03\u015E\x03\u015E" +
		"\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F" +
		"\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F" +
		"\x06\u015F\u1B7F\n\u015F\r\u015F\x0E\u015F\u1B80\x03\u0160\x03\u0160\x03" +
		"\u0160\x03\u0160\x03\u0160\x05\u0160\u1B88\n\u0160\x05\u0160\u1B8A\n\u0160" +
		"\x03\u0161\x03\u0161\x03\u0161\x06\u0161\u1B8F\n\u0161\r\u0161\x0E\u0161" +
		"\u1B90\x05\u0161\u1B93\n\u0161\x03\u0162\x03\u0162\x05\u0162\u1B97\n\u0162" +
		"\x03\u0163\x03\u0163\x03\u0163\x07\u0163\u1B9C\n\u0163\f\u0163\x0E\u0163" +
		"\u1B9F\v\u0163\x03\u0164\x03\u0164\x03\u0164\x05\u0164\u1BA4\n\u0164\x03" +
		"\u0165\x03\u0165\x03\u0165\x03\u0165\x03\u0165\x03\u0165\x03\u0165\x03" +
		"\u0165\x03\u0165\x05\u0165\u1BAF\n\u0165\x03\u0166\x03\u0166\x03\u0166" +
		"\x03\u0166\x05\u0166\u1BB5\n\u0166\x03\u0167\x03\u0167\x03\u0168\x03\u0168" +
		"\x05\u0168\u1BBB\n\u0168\x03\u0169\x05\u0169\u1BBE\n\u0169\x03\u0169\x03" +
		"\u0169\x05\u0169\u1BC2\n\u0169\x03\u0169\x06\u0169\u1BC5\n\u0169\r\u0169" +
		"\x0E\u0169\u1BC6\x03\u0169\x05\u0169\u1BCA\n\u0169\x03\u0169\x03\u0169" +
		"\x05\u0169\u1BCE\n\u0169\x03\u0169\x03\u0169\x05\u0169\u1BD2\n\u0169\x05" +
		"\u0169\u1BD4\n\u0169\x03\u016A\x03\u016A\x03\u016B\x05\u016B\u1BD9\n\u016B" +
		"\x03\u016B\x03\u016B\x03\u016C\x05\u016C\u1BDE\n\u016C\x03\u016C\x03\u016C" +
		"\x03\u016D\x03\u016D\x03\u016D\x03\u016D\x03\u016D\x03\u016D\x03\u016D" +
		"\x03\u016D\x03\u016D\x05\u016D\u1BEB\n\u016D\x03\u016D\x05\u016D\u1BEE" +
		"\n\u016D\x03\u016E\x03\u016E\x05\u016E\u1BF2\n\u016E\x03\u016E\x05\u016E" +
		"\u1BF5\n\u016E\x03\u016E\x05\u016E\u1BF8\n\u016E\x03\u016E\x03\u016E\x03" +
		"\u016E\x05\u016E\u1BFD\n\u016E\x03\u016E\x03\u016E\x03\u016E\x05\u016E" +
		"\u1C02\n\u016E\x03\u016E\x03\u016E\x03\u016E\x03\u016E\x05\u016E\u1C08" +
		"\n\u016E\x03\u016E\x05\u016E\u1C0B\n\u016E\x03\u016E\x03\u016E\x03\u016E" +
		"\x05\u016E\u1C10\n\u016E\x03\u016E\x05\u016E\u1C13\n\u016E\x03\u016E\x03" +
		"\u016E\x03\u016E\x05\u016E\u1C18\n\u016E\x03\u016E\x05\u016E\u1C1B\n\u016E" +
		"\x03\u016E\x03\u016E\x05\u016E\u1C1F\n\u016E\x03\u016E\x07\u016E\u1C22" +
		"\n\u016E\f\u016E\x0E\u016E\u1C25\v\u016E\x03\u016E\x03\u016E\x05\u016E" +
		"\u1C29\n\u016E\x03\u016E\x07\u016E\u1C2C\n\u016E\f\u016E\x0E\u016E\u1C2F" +
		"\v\u016E\x03\u016E\x03\u016E\x05\u016E\u1C33\n\u016E\x03\u016E\x05\u016E" +
		"\u1C36\n\u016E\x03\u016E\x07\u016E\u1C39\n\u016E\f\u016E\x0E\u016E\u1C3C" +
		"\v\u016E\x03\u016E\x03\u016E\x05\u016E\u1C40\n\u016E\x03\u016E\x07\u016E" +
		"\u1C43\n\u016E\f\u016E\x0E\u016E\u1C46\v\u016E\x03\u016E\x03\u016E\x03" +
		"\u016E\x05\u016E\u1C4B\n\u016E\x03\u016E\x03\u016E\x03\u016E\x05\u016E" +
		"\u1C50\n\u016E\x03\u016E\x03\u016E\x03\u016E\x05\u016E\u1C55\n\u016E\x03" +
		"\u016E\x03\u016E\x03\u016E\x05\u016E\u1C5A\n\u016E\x03\u016E\x03\u016E" +
		"\x05\u016E\u1C5E\n\u016E\x03\u016E\x05\u016E\u1C61\n\u016E\x03\u016E\x03" +
		"\u016E\x03\u016E\x05\u016E\u1C66\n\u016E\x03\u016E\x03\u016E\x05\u016E" +
		"\u1C6A\n\u016E\x03\u016E\x03\u016E\x05\u016E\u1C6E\n\u016E\x03\u016F\x03" +
		"\u016F\x03\u016F\x03\u016F\x07\u016F\u1C74\n\u016F\f\u016F\x0E\u016F\u1C77" +
		"\v\u016F\x03\u016F\x03\u016F\x03\u0170\x03\u0170\x05\u0170\u1C7D\n\u0170" +
		"\x03\u0170\x03\u0170\x05\u0170\u1C81\n\u0170\x03\u0170\x03\u0170\x03\u0170" +
		"\x05\u0170\u1C86\n\u0170\x03\u0170\x03\u0170\x03\u0170\x05\u0170\u1C8B" +
		"\n\u0170\x03\u0170\x03\u0170\x05\u0170\u1C8F\n\u0170\x05\u0170\u1C91\n" +
		"\u0170\x03\u0170\x05\u0170\u1C94\n\u0170\x03\u0171\x03\u0171\x03\u0171" +
		"\x03\u0171\x03\u0172\x03\u0172\x03\u0172\x03\u0172\x03\u0172\x03\u0172" +
		"\x03\u0173\x03\u0173\x03\u0173\x03\u0173\x05\u0173\u1CA4\n\u0173\x03\u0173" +
		"\x03\u0173\x03\u0174\x03\u0174\x03\u0174\x03\u0174\x07\u0174\u1CAC\n\u0174" +
		"\f\u0174\x0E\u0174\u1CAF\v\u0174\x03\u0174\x03\u0174\x03\u0175\x03\u0175" +
		"\x03\u0175\x07\u0175\u1CB6\n\u0175\f\u0175\x0E\u0175\u1CB9\v\u0175\x03" +
		"\u0176\x03\u0176\x03\u0176\x03\u0176\x07\u0176\u1CBF\n\u0176\f\u0176\x0E" +
		"\u0176\u1CC2\v\u0176\x03\u0177\x03\u0177\x03\u0177\x03\u0177\x07\u0177" +
		"\u1CC8\n\u0177\f\u0177\x0E\u0177\u1CCB\v\u0177\x03\u0177\x03\u0177\x03" +
		"\u0178\x03\u0178\x05\u0178\u1CD1\n\u0178\x03\u0179\x03\u0179\x03\u0179" +
		"\x07\u0179\u1CD6\n\u0179\f\u0179\x0E\u0179\u1CD9\v\u0179\x03\u017A\x03" +
		"\u017A\x03\u017A\x07\u017A\u1CDE\n\u017A\f\u017A\x0E\u017A\u1CE1\v\u017A" +
		"\x03\u017B\x03\u017B\x03\u017B\x07\u017B\u1CE6\n\u017B\f\u017B\x0E\u017B" +
		"\u1CE9\v\u017B\x03\u017C\x03\u017C\x03\u017C\x03\u017C\x03\u017C\x03\u017C" +
		"\x03\u017C\x03\u017C\x03\u017C\x05\u017C\u1CF4\n\u017C\x03\u017C\x03\u017C" +
		"\x03\u017C\x03\u017C\x03\u017C\x05\u017C\u1CFB\n\u017C\x03\u017C\x03\u017C" +
		"\x03\u017C\x03\u017C\x03\u017C\x03\u017C\x03\u017C\x03\u017C\x05\u017C" +
		"\u1D05\n\u017C\x03\u017D\x03\u017D\x03\u017D\x05\u017D\u1D0A\n\u017D\x03" +
		"\u017D\x05\u017D\u1D0D\n\u017D\x03\u017D\x03\u017D\x03\u017D\x05\u017D" +
		"\u1D12\n\u017D\x03\u017D\x05\u017D\u1D15\n\u017D\x03\u017E\x03\u017E\x03" +
		"\u017E\x03\u017F\x03\u017F\x03\u017F\x03\u017F\x03\u0180\x03\u0180\x03" +
		"\u0180\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05" +
		"\u0181\u1D27\n\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x05\u0181\u1D2E\n\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1D33" +
		"\n\u0181\x03\u0182\x03\u0182\x03\u0182\x05\u0182\u1D38\n\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x06\u0182\u1D58\n\u0182\r\u0182\x0E\u0182\u1D59\x03\u0182\x03" +
		"\u0182\x05\u0182\u1D5E\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x06\u0182\u1D64\n\u0182\r\u0182\x0E\u0182\u1D65\x03\u0182\x03\u0182\x05" +
		"\u0182\u1D6A\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x05\u0182\u1D73\n\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x05\u0182\u1D7B\n\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x05\u0182\u1D80\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x05\u0182\u1D88\n\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x05\u0182\u1D8D\n\u0182\x03\u0182\x03\u0182\x03\u0182\x05\u0182\u1D92" +
		"\n\u0182\x05\u0182\u1D94\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x05\u0182\u1D9D\n\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x05\u0182\u1DA2\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x05\u0182\u1DAA\n\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x05\u0182\u1DAF\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x05\u0182\u1DB7\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x05\u0182\u1DBF\n\u0182\x03\u0182\x05\u0182\u1DC2" +
		"\n\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03" +
		"\u0182\x03\u0182\x05\u0182\u1DCC\n\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182" +
		"\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x05\u0182" +
		"\u1DDE\n\u0182\x03\u0182\x05\u0182\u1DE1\n\u0182\x03\u0182\x05\u0182\u1DE4" +
		"\n\u0182\x03\u0182\x03\u0182\x05\u0182\u1DE8\n\u0182\x03\u0183\x03\u0183" +
		"\x03\u0183\x03\u0183\x03\u0183\x03\u0184\x03\u0184\x03\u0184\x03\u0184" +
		"\x07\u0184\u1DF3\n\u0184\f\u0184\x0E\u0184\u1DF6\v\u0184\x03\u0184\x03" +
		"\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184\u1DFD\n\u0184\x03\u0185" +
		"\x03\u0185\x05\u0185\u1E01\n\u0185\x03\u0186\x03\u0186\x03\u0186\x05\u0186" +
		"\u1E06\n\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186\u1E0B\n\u0186\x03" +
		"\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186\u1E11\n\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x05\u0186\u1E16\n\u0186\x03\u0186\x03\u0186\x05\u0186" +
		"\u1E1A\n\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186\u1E1F\n\u0186\x03" +
		"\u0186\x03\u0186\x03\u0186\x05\u0186\u1E24\n\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x05\u0186\u1E29\n\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x07\u0186\u1E31\n\u0186\f\u0186\x0E\u0186\u1E34\v" +
		"\u0186\x05\u0186\u1E36\n\u0186\x03\u0186\x03\u0186\x05\u0186\u1E3A\n\u0186" +
		"\x03\u0186\x03\u0186\x05\u0186\u1E3E\n\u0186\x03\u0187\x03\u0187\x03\u0187" +
		"\x03\u0187\x03\u0187\x05\u0187\u1E45\n\u0187\x03\u0187\x03\u0187\x05\u0187" +
		"\u1E49\n\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187" +
		"\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187" +
		"\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187" +
		"\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187" +
		"\x05\u0187\u1E66\n\u0187\x03\u0188\x03\u0188\x03\u0188\x03\u0188\x03\u0188" +
		"\x03\u0188\x05\u0188\u1E6E\n\u0188\x03\u0189\x05\u0189\u1E71\n\u0189\x03" +
		"\u0189\x05\u0189\u1E74\n\u0189\x03\u0189\x05\u0189\u1E77\n\u0189\x03\u0189" +
		"\x05\u0189\u1E7A\n\u0189\x03\u018A\x03\u018A\x03\u018B\x03\u018B\x03\u018B" +
		"\x03\u018C\x03\u018C\x03\u018D\x03\u018D\x05\u018D\u1E85\n\u018D\x03\u018E" +
		"\x03\u018E\x03\u018E\x03\u018E\x03\u018E\x03\u018F\x03\u018F\x03\u018F" +
		"\x03\u018F\x03\u018F\x03\u018F\x03\u018F\x05\u018F\u1E93\n\u018F\x03\u0190" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x07\u0190\u1E9A\n\u0190\f\u0190" +
		"\x0E\u0190\u1E9D\v\u0190\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191" +
		"\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191" +
		"\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191" +
		"\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x05\u0191\u1EB7\n\u0191" +
		"\x03\u0192\x03\u0192\x03\u0192\x03\u0192\x03\u0192\x03\u0193\x03\u0193" +
		"\x03\u0193\x07\u0193\u1EC1\n\u0193\f\u0193\x0E\u0193\u1EC4\v\u0193\x03" +
		"\u0194\x03\u0194\x03\u0194\x03\u0194\x05\u0194\u1ECA\n\u0194\x03\u0195" +
		"\x03\u0195\x03\u0195\x03\u0195\x03\u0195\x03\u0195\x05\u0195\u1ED2\n\u0195" +
		"\x03\u0195\x03\u0195\x03\u0195\x05\u0195\u1ED7\n\u0195\x03\u0195\x03\u0195" +
		"\x03\u0195\x03\u0195\x07\u0195\u1EDD\n\u0195\f\u0195\x0E\u0195\u1EE0\v" +
		"\u0195\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03" +
		"\u0196\x03\u0196\x03\u0196\x05\u0196\u1EEB\n\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x03\u0196\x05\u0196\u1EF8\n\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x05\u0196\u1EFE\n\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x05\u0196\u1F04\n\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x03\u0196\x05\u0196\u1F14\n\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x05\u0196\u1F1A\n\u0196\x03\u0196\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x03\u0196\x03\u0196\x07\u0196\u1F23\n\u0196\f\u0196\x0E\u0196" +
		"\u1F26\v\u0196\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197" +
		"\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197" +
		"\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x07\u0197\u1F39\n\u0197\f\u0197" +
		"\x0E\u0197\u1F3C\v\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197" +
		"\x03\u0197\x03\u0197\x06\u0197\u1F45\n\u0197\r\u0197\x0E\u0197\u1F46\x03" +
		"\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03" +
		"\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03" +
		"\u0197\x05\u0197\u1F58\n\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197" +
		"\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x03\u0197" +
		"\x03\u0197\x03\u0197\x03\u0197\x03\u0197\x07\u0197\u1F69\n\u0197\f\u0197" +
		"\x0E\u0197\u1F6C\v\u0197\x03\u0198\x03\u0198\x03\u0199\x03\u0199\x03\u0199" +
		"\x03\u0199\x03\u0199\x03\u0199\x03\u0199\x03\u0199\x05\u0199\u1F78\n\u0199" +
		"\x03\u019A\x03\u019A\x03\u019A\x03\u019A\x03\u019A\x03\u019A\x03\u019A" +
		"\x05\u019A\u1F81\n\u019A\x03\u019B\x03\u019B\x03\u019B\x03\u019B\x03\u019B" +
		"\x03\u019B\x03\u019B\x05\u019B\u1F8A\n\u019B\x03\u019C\x03\u019C\x03\u019C" +
		"\x03\u019C\x03\u019C\x03\u019C\x03\u019C\x05\u019C\u1F93\n\u019C\x03\u019D" +
		"\x03\u019D\x03\u019E\x03\u019E\x03\u019E\x03\u019E\x03\u019E\x05\u019E" +
		"\u1F9C\n\u019E\x03\u019F\x03\u019F\x03\u01A0\x03\u01A0\x03\u01A1\x03\u01A1" +
		"\x03\u01A2\x03\u01A2\x03\u01A3\x03\u01A3\x03\u01A4\x03\u01A4\x03\u01A5" +
		"\x03\u01A5\x03\u01A5\x02\x02\x07\xD2\xD4\u0328\u032A\u032C\u01A6\x02\x02" +
		"\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16" +
		"\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02" +
		".\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02" +
		"J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02\\\x02^\x02`\x02b\x02d\x02" +
		"f\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02x\x02z\x02|\x02~\x02\x80" +
		"\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C\x02\x8E\x02\x90\x02\x92" +
		"\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E\x02\xA0\x02\xA2\x02\xA4" +
		"\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0\x02\xB2\x02\xB4\x02\xB6" +
		"\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC2\x02\xC4\x02\xC6\x02\xC8" +
		"\x02\xCA\x02\xCC\x02\xCE\x02\xD0\x02\xD2\x02\xD4\x02\xD6\x02\xD8\x02\xDA" +
		"\x02\xDC\x02\xDE\x02\xE0\x02\xE2\x02\xE4\x02\xE6\x02\xE8\x02\xEA\x02\xEC" +
		"\x02\xEE\x02\xF0\x02\xF2\x02\xF4\x02\xF6\x02\xF8\x02\xFA\x02\xFC\x02\xFE" +
		"\x02\u0100\x02\u0102\x02\u0104\x02\u0106\x02\u0108\x02\u010A\x02\u010C" +
		"\x02\u010E\x02\u0110\x02\u0112\x02\u0114\x02\u0116\x02\u0118\x02\u011A" +
		"\x02\u011C\x02\u011E\x02\u0120\x02\u0122\x02\u0124\x02\u0126\x02\u0128" +
		"\x02\u012A\x02\u012C\x02\u012E\x02\u0130\x02\u0132\x02\u0134\x02\u0136" +
		"\x02\u0138\x02\u013A\x02\u013C\x02\u013E\x02\u0140\x02\u0142\x02\u0144" +
		"\x02\u0146\x02\u0148\x02\u014A\x02\u014C\x02\u014E\x02\u0150\x02\u0152" +
		"\x02\u0154\x02\u0156\x02\u0158\x02\u015A\x02\u015C\x02\u015E\x02\u0160" +
		"\x02\u0162\x02\u0164\x02\u0166\x02\u0168\x02\u016A\x02\u016C\x02\u016E" +
		"\x02\u0170\x02\u0172\x02\u0174\x02\u0176\x02\u0178\x02\u017A\x02\u017C" +
		"\x02\u017E\x02\u0180\x02\u0182\x02\u0184\x02\u0186\x02\u0188\x02\u018A" +
		"\x02\u018C\x02\u018E\x02\u0190\x02\u0192\x02\u0194\x02\u0196\x02\u0198" +
		"\x02\u019A\x02\u019C\x02\u019E\x02\u01A0\x02\u01A2\x02\u01A4\x02\u01A6" +
		"\x02\u01A8\x02\u01AA\x02\u01AC\x02\u01AE\x02\u01B0\x02\u01B2\x02\u01B4" +
		"\x02\u01B6\x02\u01B8\x02\u01BA\x02\u01BC\x02\u01BE\x02\u01C0\x02\u01C2" +
		"\x02\u01C4\x02\u01C6\x02\u01C8\x02\u01CA\x02\u01CC\x02\u01CE\x02\u01D0" +
		"\x02\u01D2\x02\u01D4\x02\u01D6\x02\u01D8\x02\u01DA\x02\u01DC\x02\u01DE" +
		"\x02\u01E0\x02\u01E2\x02\u01E4\x02\u01E6\x02\u01E8\x02\u01EA\x02\u01EC" +
		"\x02\u01EE\x02\u01F0\x02\u01F2\x02\u01F4\x02\u01F6\x02\u01F8\x02\u01FA" +
		"\x02\u01FC\x02\u01FE\x02\u0200\x02\u0202\x02\u0204\x02\u0206\x02\u0208" +
		"\x02\u020A\x02\u020C\x02\u020E\x02\u0210\x02\u0212\x02\u0214\x02\u0216" +
		"\x02\u0218\x02\u021A\x02\u021C\x02\u021E\x02\u0220\x02\u0222\x02\u0224" +
		"\x02\u0226\x02\u0228\x02\u022A\x02\u022C\x02\u022E\x02\u0230\x02\u0232" +
		"\x02\u0234\x02\u0236\x02\u0238\x02\u023A\x02\u023C\x02\u023E\x02\u0240" +
		"\x02\u0242\x02\u0244\x02\u0246\x02\u0248\x02\u024A\x02\u024C\x02\u024E" +
		"\x02\u0250\x02\u0252\x02\u0254\x02\u0256\x02\u0258\x02\u025A\x02\u025C" +
		"\x02\u025E\x02\u0260\x02\u0262\x02\u0264\x02\u0266\x02\u0268\x02\u026A" +
		"\x02\u026C\x02\u026E\x02\u0270\x02\u0272\x02\u0274\x02\u0276\x02\u0278" +
		"\x02\u027A\x02\u027C\x02\u027E\x02\u0280\x02\u0282\x02\u0284\x02\u0286" +
		"\x02\u0288\x02\u028A\x02\u028C\x02\u028E\x02\u0290\x02\u0292\x02\u0294" +
		"\x02\u0296\x02\u0298\x02\u029A\x02\u029C\x02\u029E\x02\u02A0\x02\u02A2" +
		"\x02\u02A4\x02\u02A6\x02\u02A8\x02\u02AA\x02\u02AC\x02\u02AE\x02\u02B0" +
		"\x02\u02B2\x02\u02B4\x02\u02B6\x02\u02B8\x02\u02BA\x02\u02BC\x02\u02BE" +
		"\x02\u02C0\x02\u02C2\x02\u02C4\x02\u02C6\x02\u02C8\x02\u02CA\x02\u02CC" +
		"\x02\u02CE\x02\u02D0\x02\u02D2\x02\u02D4\x02\u02D6\x02\u02D8\x02\u02DA" +
		"\x02\u02DC\x02\u02DE\x02\u02E0\x02\u02E2\x02\u02E4\x02\u02E6\x02\u02E8" +
		"\x02\u02EA\x02\u02EC\x02\u02EE\x02\u02F0\x02\u02F2\x02\u02F4\x02\u02F6" +
		"\x02\u02F8\x02\u02FA\x02\u02FC\x02\u02FE\x02\u0300\x02\u0302\x02\u0304" +
		"\x02\u0306\x02\u0308\x02\u030A\x02\u030C\x02\u030E\x02\u0310\x02\u0312" +
		"\x02\u0314\x02\u0316\x02\u0318\x02\u031A\x02\u031C\x02\u031E\x02\u0320" +
		"\x02\u0322\x02\u0324\x02\u0326\x02\u0328\x02\u032A\x02\u032C\x02\u032E" +
		"\x02\u0330\x02\u0332\x02\u0334\x02\u0336\x02\u0338\x02\u033A\x02\u033C" +
		"\x02\u033E\x02\u0340\x02\u0342\x02\u0344\x02\u0346\x02\u0348\x02\x02\xA2" +
		"\x04\x02))\x9A\x9A\x04\x02\u01FE\u01FE\u0204\u0204\x05\x02GG\xA3\xA3\xB8" +
		"\xB8\x05\x02,,\u0167\u0167\u01B0\u01B0\x06\x02,,\u0187\u0187\u01FB\u01FB" +
		"\u0255\u0255\x04\x02\u01F0\u01F0\u0374\u0374\x04\x02QQ\x91\x91\x04\x02" +
		"\x12\x12\u0134\u0134\x05\x02..XX\xBB\xBB\x04\x02\u0198\u0198\u021C\u021C" +
		"\x05\x02\u01E8\u01E8\u0297\u0297\u02A0\u02A0\x04\x02\u016E\u016E\u01B6" +
		"\u01B6\x04\x02\u0147\u0147\u01C4\u01C4\x04\x02,,\u0369\u036A\x04\x02\'" +
		"\'\u02A8\u02A8\x04\x02\u0145\u0145\u01A4\u01A4\x04\x02\u01B5\u01B5\u02B0" +
		"\u02B0\x05\x02RRWW\x80\x80\x04\x02TT^^\x04\x02GG\xA3\xA3\x05\x02,,\u0178" +
		"\u0178\u0195\u0195\x05\x02,,\u0174\u0174\u0324\u0324\x04\x02\u028A\u028A" +
		"\u02AF\u02AF\x05\x02\u019A\u019A\u0210\u0210\u0257\u0257\x04\x02\u014B" +
		"\u014B\u020C\u020C\x03\x02\u0369\u036A\x04\x02\u0374\u0374\u037B\u037B" +
		"\x04\x02TT\u016A\u016A\x04\x02\u020D\u020D\u0374\u0374\x04\x02\u020E\u020E" +
		"\u0374\u0374\x05\x02\u0194\u0194\u01BF\u01BF\u01F8\u01F8\t\x02,,\u0158" +
		"\u0158\u015B\u015B\u0178\u0178\u0195\u0195\u022C\u022C\u037B\u037B\x04" +
		"\x02\u01F0\u01F0\u01FC\u01FC\x03\x02\u036A\u036B\x04\x02\b\b55\x04\x02" +
		"\x07\x07SS\x04\x02\x1D\x1D!!\x06\x02,,\u0167\u0167\u01B0\u01B0\u01B4\u01B4" +
		"\x04\x02\u0172\u0172\u0179\u0179\x04\x02\u0173\u0173\u01AB\u01AB\x04\x02" +
		"\x0F\x0F\xB2\xB2\x04\x02\xC4\xC4\u02B4\u02B4\x04\x02\x18\x18\x94\x94\x05" +
		"\x02--NNmm\x04\x02\t\t33\x04\x02mm\u015D\u015D\x04\x02\u0153\u0153\u0190" +
		"\u0190\x04\x02hh\u024D\u024D\x04\x02--mm\x05\x02==\xB7\xB7\u033E\u033E" +
		"\x04\x02\xBB\xBB\u0254\u0254\x04\x02\xA1\xA1\u01F9\u01F9\x06\x02\u0194" +
		"\u0194\u01BF\u01BF\u01F7\u01F7\u0220\u0220\x04\x02\u0194\u0194\u01F7\u01F7" +
		"\x04\x02\x10\x10//\x05\x02DDQQ\xBD\xBD\x04\x02%%VV\x04\x02dd\x98\x98\x04" +
		"\x02\t\t34\x03\x02\u027F\u0280\x04\x02\xAF\xAF\u02F2\u02F2\x04\x02\u019F" +
		"\u019F\u0253\u0253\x04\x02\xE6\xE6\u01C7\u01C7\x04\x02\u0235\u0235\u0258" +
		"\u0258\n\x02nn\u01C9\u01C9\u01CD\u01CE\u01D0\u01D0\u01D2\u01D2\u01D5\u01DE" +
		"\u01F5\u01F5\u022F\u022F\b\x02\u01CA\u01CC\u01CF\u01CF\u01D1\u01D1\u01D3" +
		"\u01D3\u01DF\u01DF\u0230\u0230\t\x02oo\u019D\u019D\u01A2\u01A2\u01C8\u01C8" +
		"\u01D4\u01D4\u023F\u023F\u026B\u026B\x04\x02vv\u0374\u0374\x04\x02xy\u01FD" +
		"\u01FD\t\x02\u01F5\u01F5\u022F\u022F\u0260\u0263\u0265\u0265\u026D\u026D" +
		"\u0270\u0276\u0278\u027A\b\x02\u0230\u0230\u0264\u0264\u0266\u0266\u0268" +
		"\u026A\u026C\u026C\u026E\u026E\t\x02\u019E\u019E\u01A2\u01A2\u023F\u023F" +
		"\u0267\u0267\u026B\u026B\u026F\u026F\u0277\u0277\x05\x02HHxy\u01FD\u01FD" +
		"\x04\x02\u01B8\u01B8\u0281\u0281\x04\x02\u027B\u027B\u027D\u027D\x04\x02" +
		"\u013F\u013F\u0282\u0282\x04\x02]]\u0243\u0243\x04\x0255\u016C\u016C\x05" +
		"\x02\"\"??\xB6\xB6\x04\x02\x11\x11\u0156\u0156\x04\x02\u02A8\u02A8\u0345" +
		"\u0345\x05\x02\x86\x86\xAF\xAF\u019B\u019B\x05\x02\b\b55\u01EE\u01EE\x05" +
		"\x02\x0F\x0F\x16\x16\xBE\xBE\x04\x02,,||\x04\x02jj\xB9\xB9\x03\x02\u036B" +
		"\u036C\x04\x02\u014F\u014F\u0258\u0258\x04\x02**\u02AE\u02AE\x04\x02\u018A" +
		"\u018A\u0227\u0227\x04\x02uu\u01C4\u01C4\x06\x02\xD2\xD2\xD4\xD4\xDA\xDA" +
		"\u028B\u028B\x05\x02\u019F\u019F\u0215\u0215\u037F\u0380\x04\x02\u034B" +
		"\u034B\u035B\u035B\x04\x02\u0140\u0140\u0231\u0231\x04\x02FFRR\x05\x02" +
		"\x86\x86\xB4\xB4\u0183\u0183\x04\x02\u01EF\u01EF\u0287\u0287\x04\x02\u0181" +
		"\u0181\u02B2\u02B2\x05\x02TT__\u01AC\u01AC\x06\x02\u019F\u019F\u01C4\u01C4" +
		"\u0215\u0216\u0253\u0253\x04\x02\u0287\u0287\u02AD\u02AD\x04\x02\u015F" +
		"\u015F\u0226\u0226\b\x02\xE6\xE6\u017E\u017E\u0180\u0180\u019C\u019C\u022E" +
		"\u022E\u0259\u0259\x04\x02/0@@\x05\x02\u01BC\u01BC\u0299\u0299\u029C\u029C" +
		"\f\x02\u014E\u014E\u0155\u0155\u0161\u0163\u0169\u0169\u01E9\u01E9\u01F1" +
		"\u01F1\u028C\u028C\u0293\u0293\u0338\u0338\u0342\u0342\x04\x02&&\xAC\xAC" +
		"\x04\x02ww\u0341\u0341\r\x02\u014E\u014E\u0155\u0155\u0161\u0163\u0169" +
		"\u0169\u01E9\u01E9\u01F1\u01F1\u0244\u0244\u028C\u028C\u0293\u0293\u0338" +
		"\u0338\u0342\u0342\x04\x02\u0368\u0368\u037D\u037E\x03\x02\u037E\u037F" +
		"\x04\x02\u015E\u015E\u031F\u032A\x05\x02\u0369\u036C\u0375\u0375\u0377" +
		"\u0377\x04\x02AA\xB5\xB5\x04\x02vv\u0378\u0378\x07\x02\x1C\x1C\xE2\xE4" +
		"\xEB\xEB\xED\xF0\u01F4\u01F4\x04\x02\x1C\x1C\xE2\xE2\x04\x02\x1C\x1C\xE2" +
		"\xE3\x03\x02\xC8\xD3\x05\x02\xBA\xBA\xC7\xC7\u0256\u0256\x04\x02\xD7\xDC" +
		"\u0195\u0195\b\x02\xDD\xDD\xE8\xE8\xEA\xEA\xEC\xEC\xF3\xF3\u0143\u0144" +
		"\x06\x02\xDE\xE1\xE6\xE7\xE9\xE9\u0141\u0141\x04\x02\x9D\x9D\xF1\xF1\x04" +
		"\x02\u01BC\u01BC\u032F\u0337\x04\x02\xE6\xE6\u01F4\u01F4\x07\x02\xCC\xCC" +
		"\xD2\xD2\xDD\xDE\xE0\xE0\u01BC\u01BC\x03\x02\xDA\xDB\x04\x02\xBA\xBA\u0256" +
		"\u0256\x04\x02\xCC\xCC\xD2\xD2\x04\x02\xBF\xBF\u02AC\u02AC\x04\x02\u0121" +
		"\u0122\u0128\u0128\x05\x02\x9A\x9A\u011F\u0122\u0131\u0131\x03\x02\u012B" +
		"\u012C\x05\x02\x14\x14bb\xB3\xB3\x04\x02\xE2\xE2\xE6\xE6\x04\x02\xDD\xDE" +
		"\xE0\xE0\x05\x02\x10\x10//\u0340\u0340\x05\x02\u0104\u0104\u0110\u0111" +
		"\u011B\u011B\x05\x02\u0105\u0107\u0117\u011A\u011C\u011E\x04\x02\u010D" +
		"\u010D\u010F\u010F\x04\x02\u010B\u010B\u010E\u010E\x04\x02\u0109\u010A" +
		"\u0114\u0116\x04\x02\x88\x88\u024D\u024D\x04\x02\u0197\u0197\u021D\u021D" +
		"\x04\x02\u0202\u0202\u0213\u0213\x04\x02tt\u035E\u035E\x05\x02AA\xB5\xB5" +
		"\u02A4\u02A4\x04\x02\x8D\x8D\x99\x99\x05\x02\t\t\u0137\u0137\u025C\u025C" +
		"\x05\x02tt\u0357\u0358\u035E\u035F\x03\x02\u0354\u035A\x04\x02\xE6\xE6" +
		"\u02F6\u031E\x03\x02\u032B\u032E\x07\x02\u02CF\u02D0\u02E0\u02E2\u02E9" +
		"\u02E9\u02EF\u02F0\u02F2\u02F2\x03\x02\u02BA\u02C1\x05\x02\xDD\xE1\xEE" +
		"\xEE\xF1\xF1N\x02\x0E\x0E\x11\x11\x15\x15  &\',,2299;;==LLaaww||\x7F\x7F" +
		"\x85\x85\xA2\xA2\xAC\xAC\xF3\xF3\u0101\u0108\u010C\u010C\u0110\u0111\u0117" +
		"\u011E\u0132\u0137\u0139\u014B\u014D\u0159\u015B\u017A\u017C\u018B\u018D" +
		"\u0192\u0194\u0196\u0198\u019C\u019F\u01A1\u01A3\u01AC\u01AE\u01AE\u01B0" +
		"\u01B4\u01B6\u01C8\u01CA\u01D1\u01D3\u01DB\u01DD\u01DE\u01E0\u01F4\u01F6" +
		"\u01FC\u01FE\u0200\u0202\u020C\u020F\u0214\u0217\u021C\u021E\u0220\u0222" +
		"\u022C\u022E\u0234\u0237\u023E\u0241\u0241\u0243\u0244\u0246\u025F\u027B" +
		"\u0289\u028B\u029B\u029D\u02A4\u02A6\u02AF\u02B1\u02B2\u02B4\u02B9\u02C2" +
		"\u02C2\u02C4\u02C5\u02C7\u02CA\u02CC\u02CE\u02D1\u02D3\u02D8\u02D9\u02DB" +
		"\u02DF\u02E3\u02E4\u02E6\u02E8\u02EA\u02EA\u02EC\u02EE\u02F1\u02F1\u02F3" +
		"\u02F5\u0324\u0324\u0338\u0338\u033B\u033B\u0342\u0343\u0348\u0348\x1A" +
		"\x02))dd\x98\x98\x9A\x9A\xDD\xDF\xE1\xE1\xFF\u0100\u0108\u010B\u010D\u010F" +
		"\u0112\u0116\u012A\u012A\u01B5\u01B5\u02B0\u02B0\u02BA\u02C1\u02EC\u02EC" +
		"\u032F\u032F\u0332\u0337\u0339\u033A\u033C\u033D\u033F\u0341\u0344\u0344" +
		"\u0346\u0346\u034A\u034A\u035A\u035A\x02\u250F\x02\u034D\x03\x02\x02\x02" +
		"\x04\u0357\x03\x02\x02\x02\x06\u0360\x03\x02\x02\x02\b\u0362\x03\x02\x02" +
		"\x02\n\u038B\x03\x02\x02\x02\f\u039E\x03\x02\x02\x02\x0E\u03A9\x03\x02" +
		"\x02\x02\x10\u03B9\x03\x02\x02\x02\x12\u03BE\x03\x02\x02\x02\x14\u03CA" +
		"\x03\x02\x02\x02\x16\u03ED\x03\x02\x02\x02\x18\u03F7\x03\x02\x02\x02\x1A" +
		"\u03F9\x03\x02\x02\x02\x1C\u0405\x03\x02\x02\x02\x1E\u0423\x03\x02\x02" +
		"\x02 \u0447\x03\x02\x02\x02\"\u047A\x03\x02\x02\x02$\u0497\x03\x02\x02" +
		"\x02&\u049E\x03\x02\x02\x02(\u04FF\x03\x02\x02\x02*\u0501\x03\x02\x02" +
		"\x02,\u0526\x03\x02\x02\x02.\u0566\x03\x02\x02\x020\u057C\x03\x02\x02" +
		"\x022\u0582\x03\x02\x02\x024\u0598\x03\x02\x02\x026\u05E8\x03\x02\x02" +
		"\x028\u05EF\x03\x02\x02\x02:\u05F1\x03\x02\x02\x02<\u05F6\x03\x02\x02" +
		"\x02>\u061E\x03\x02\x02\x02@\u0624\x03\x02\x02\x02B\u0626\x03\x02\x02" +
		"\x02D\u063B\x03\x02\x02\x02F\u0642\x03\x02\x02\x02H\u0644";
	private static readonly _serializedATNSegment4: string =
		"\x03\x02\x02\x02J\u065D\x03\x02\x02\x02L\u0660\x03\x02\x02\x02N\u067C" +
		"\x03\x02\x02\x02P\u068C\x03\x02\x02\x02R\u068E\x03\x02\x02\x02T\u06EC" +
		"\x03\x02\x02\x02V\u06EF\x03\x02\x02\x02X\u06FB\x03\x02\x02\x02Z\u06FF" +
		"\x03\x02\x02\x02\\\u0731\x03\x02\x02\x02^\u0733\x03\x02\x02\x02`\u074F" +
		"\x03\x02\x02\x02b\u0759\x03\x02\x02\x02d\u0814\x03\x02\x02\x02f\u0816" +
		"\x03\x02\x02\x02h\u0818\x03\x02\x02\x02j\u081B\x03\x02\x02\x02l\u0866" +
		"\x03\x02\x02\x02n\u087D\x03\x02\x02\x02p\u0911\x03\x02\x02\x02r\u0916" +
		"\x03\x02\x02\x02t\u0918\x03\x02\x02\x02v\u0922\x03\x02\x02\x02x\u095A" +
		"\x03\x02\x02\x02z\u096E\x03\x02\x02\x02|\u0970\x03\x02\x02\x02~\u0993" +
		"\x03\x02\x02\x02\x80\u099C\x03\x02\x02\x02\x82\u09A3\x03\x02\x02\x02\x84" +
		"\u09BA\x03\x02\x02\x02\x86\u09C3\x03\x02\x02\x02\x88\u09D2\x03\x02\x02" +
		"\x02\x8A\u09E8\x03\x02\x02\x02\x8C\u0A20\x03\x02\x02\x02\x8E\u0B48\x03" +
		"\x02\x02\x02\x90\u0BAC\x03\x02\x02\x02\x92\u0BAE\x03\x02\x02\x02\x94\u0BB5" +
		"\x03\x02\x02\x02\x96\u0BBC\x03\x02\x02\x02\x98\u0BD3\x03\x02\x02\x02\x9A" +
		"\u0BDD\x03\x02\x02\x02\x9C\u0BE4\x03\x02\x02\x02\x9E\u0BEB\x03\x02\x02" +
		"\x02\xA0\u0BF2\x03\x02\x02\x02\xA2\u0BFB\x03\x02\x02\x02\xA4\u0C07\x03" +
		"\x02\x02\x02\xA6\u0C14\x03\x02\x02\x02\xA8\u0C1B\x03\x02\x02\x02\xAA\u0C2B" +
		"\x03\x02\x02\x02\xAC\u0C46\x03\x02\x02\x02\xAE\u0C48\x03\x02\x02\x02\xB0" +
		"\u0C52\x03\x02\x02\x02\xB2\u0C56\x03\x02\x02\x02\xB4\u0C5C\x03\x02\x02" +
		"\x02\xB6\u0C68\x03\x02\x02\x02\xB8\u0C6A\x03\x02\x02\x02\xBA\u0C71\x03" +
		"\x02\x02\x02\xBC\u0C73\x03\x02\x02\x02\xBE\u0CA4\x03\x02\x02\x02\xC0\u0CAD" +
		"\x03\x02\x02\x02\xC2\u0CAF\x03\x02\x02\x02\xC4\u0CBA\x03\x02\x02\x02\xC6" +
		"\u0CC0\x03\x02\x02\x02\xC8\u0D0A\x03\x02\x02\x02\xCA\u0D49\x03\x02\x02" +
		"\x02\xCC\u0D5B\x03\x02\x02\x02\xCE\u0DB9\x03\x02\x02\x02\xD0\u0DBC\x03" +
		"\x02\x02\x02\xD2\u0DC8\x03\x02\x02\x02\xD4\u0DDC\x03\x02\x02\x02\xD6\u0DF8" +
		"\x03\x02\x02\x02\xD8\u0DFC\x03\x02\x02\x02\xDA\u0DFE\x03\x02\x02\x02\xDC" +
		"\u0E08\x03\x02\x02\x02\xDE\u0E1C\x03\x02\x02\x02\xE0\u0E23\x03\x02\x02" +
		"\x02\xE2\u0E25\x03\x02\x02\x02\xE4\u0E30\x03\x02\x02\x02\xE6\u0E39\x03" +
		"\x02\x02\x02\xE8\u0E3F\x03\x02\x02\x02\xEA\u0E56\x03\x02\x02\x02\xEC\u0E58" +
		"\x03\x02\x02\x02\xEE\u0E7C\x03\x02\x02\x02\xF0\u0EB3\x03\x02\x02\x02\xF2" +
		"\u0EBC\x03\x02\x02\x02\xF4\u0ED0\x03\x02\x02\x02\xF6\u0EDC\x03\x02\x02" +
		"\x02\xF8\u0EE0\x03\x02\x02\x02\xFA\u0EEB\x03\x02\x02\x02\xFC\u0F0C\x03" +
		"\x02\x02\x02\xFE\u0F21\x03\x02\x02\x02\u0100\u0F2B\x03\x02\x02\x02\u0102" +
		"\u0F2F\x03\x02\x02\x02\u0104\u0F49\x03\x02\x02\x02\u0106\u0F78\x03\x02" +
		"\x02\x02\u0108\u0F7A\x03\x02\x02\x02\u010A\u0F7E\x03\x02\x02\x02\u010C" +
		"\u0F8F\x03\x02\x02\x02\u010E\u0FC2\x03\x02\x02\x02\u0110\u0FCB\x03\x02" +
		"\x02\x02\u0112\u0FD5\x03\x02\x02\x02\u0114\u0FDF\x03\x02\x02\x02\u0116" +
		"\u1017\x03\x02\x02\x02\u0118\u1019\x03\x02\x02\x02\u011A\u1031\x03\x02" +
		"\x02\x02\u011C\u1037\x03\x02\x02\x02\u011E\u103F\x03\x02\x02\x02\u0120" +
		"\u1050\x03\x02\x02\x02\u0122\u1060\x03\x02\x02\x02\u0124\u1085\x03\x02" +
		"\x02\x02\u0126\u108B\x03\x02\x02\x02\u0128\u1094\x03\x02\x02\x02\u012A" +
		"\u10A1\x03\x02\x02\x02\u012C\u10A5\x03\x02\x02\x02\u012E\u10CB\x03\x02" +
		"\x02\x02\u0130\u10F1\x03\x02\x02\x02\u0132\u10FF\x03\x02\x02\x02\u0134" +
		"\u1107\x03\x02\x02\x02\u0136\u110B\x03\x02\x02\x02\u0138\u1111\x03\x02" +
		"\x02\x02\u013A\u111F\x03\x02\x02\x02\u013C\u1122\x03\x02\x02\x02\u013E" +
		"\u1134\x03\x02\x02\x02\u0140\u1138\x03\x02\x02\x02\u0142\u1148\x03\x02" +
		"\x02\x02\u0144\u114A\x03\x02\x02\x02\u0146\u1156\x03\x02\x02\x02\u0148" +
		"\u115A\x03\x02\x02\x02\u014A\u116B\x03\x02\x02\x02\u014C\u117C\x03\x02" +
		"\x02\x02\u014E\u117F\x03\x02\x02\x02\u0150\u1189\x03\x02\x02\x02\u0152" +
		"\u118D\x03\x02\x02\x02\u0154\u1197\x03\x02\x02\x02\u0156\u119A\x03\x02" +
		"\x02\x02\u0158\u119F\x03\x02\x02\x02\u015A\u11B3\x03\x02\x02\x02\u015C" +
		"\u11B5\x03\x02\x02\x02\u015E\u11C6\x03\x02\x02\x02\u0160\u11CF\x03\x02" +
		"\x02\x02\u0162\u11D8\x03\x02\x02\x02\u0164\u11DA\x03\x02\x02\x02\u0166" +
		"\u11E8\x03\x02\x02\x02\u0168\u11F6\x03\x02\x02\x02\u016A\u1205\x03\x02" +
		"\x02\x02\u016C\u120E\x03\x02\x02\x02\u016E\u1227\x03\x02\x02\x02\u0170" +
		"\u1236\x03\x02\x02\x02\u0172\u1249\x03\x02\x02\x02\u0174\u1267\x03\x02" +
		"\x02\x02\u0176\u1269\x03\x02\x02\x02\u0178\u126B\x03\x02\x02\x02\u017A" +
		"\u126D\x03\x02\x02\x02\u017C\u127C\x03\x02\x02\x02\u017E\u1299\x03\x02" +
		"\x02\x02\u0180\u129B\x03\x02\x02\x02\u0182\u129D\x03\x02\x02\x02\u0184" +
		"\u129F\x03\x02\x02\x02\u0186\u12AE\x03\x02\x02\x02\u0188\u12B0\x03\x02" +
		"\x02\x02\u018A\u12F3\x03\x02\x02\x02\u018C\u12F5\x03\x02\x02\x02\u018E" +
		"\u12FB\x03\x02\x02\x02\u0190\u1316\x03\x02\x02\x02\u0192\u1324\x03\x02" +
		"\x02\x02\u0194\u132F\x03\x02\x02\x02\u0196\u1331\x03\x02\x02\x02\u0198" +
		"\u1337\x03\x02\x02\x02\u019A\u1341\x03\x02\x02\x02\u019C\u1345\x03\x02" +
		"\x02\x02\u019E\u134C\x03\x02\x02\x02\u01A0\u1350\x03\x02\x02\x02\u01A2" +
		"\u1356\x03\x02\x02\x02\u01A4\u135D\x03\x02\x02\x02\u01A6\u1363\x03\x02" +
		"\x02\x02\u01A8\u1369\x03\x02\x02\x02\u01AA\u136E\x03\x02\x02\x02\u01AC" +
		"\u139B\x03\x02\x02\x02\u01AE\u13B0\x03\x02\x02\x02\u01B0\u13C9\x03\x02" +
		"\x02\x02\u01B2\u13CC\x03\x02\x02\x02\u01B4\u13D2\x03\x02\x02\x02\u01B6" +
		"\u13E2\x03\x02\x02\x02\u01B8\u13F1\x03\x02\x02\x02\u01BA\u13F7\x03\x02" +
		"\x02\x02\u01BC\u1415\x03\x02\x02\x02\u01BE\u1417\x03\x02\x02\x02\u01C0" +
		"\u141E\x03\x02\x02\x02\u01C2\u142A\x03\x02\x02\x02\u01C4\u1430\x03\x02" +
		"\x02\x02\u01C6\u1449\x03\x02\x02\x02\u01C8\u144D\x03\x02\x02\x02\u01CA" +
		"\u1451\x03\x02\x02\x02\u01CC\u145C\x03\x02\x02\x02\u01CE\u1464\x03\x02" +
		"\x02\x02\u01D0\u14A3\x03\x02\x02\x02\u01D2\u14DE\x03\x02\x02\x02\u01D4" +
		"\u1544\x03\x02\x02\x02\u01D6\u154E\x03\x02\x02\x02\u01D8\u1550\x03\x02" +
		"\x02\x02\u01DA\u1562\x03\x02\x02\x02\u01DC\u157A\x03\x02\x02\x02\u01DE" +
		"\u1592\x03\x02\x02\x02\u01E0\u1599\x03\x02\x02\x02\u01E2\u15AD\x03\x02" +
		"\x02\x02\u01E4\u15B6\x03\x02\x02\x02\u01E6\u15F4\x03\x02\x02\x02\u01E8" +
		"\u15F6\x03\x02\x02\x02\u01EA\u15FA\x03\x02\x02\x02\u01EC\u161C\x03\x02" +
		"\x02\x02\u01EE\u161E\x03\x02\x02\x02\u01F0\u1647\x03\x02\x02\x02\u01F2" +
		"\u166D\x03\x02\x02\x02\u01F4\u1680\x03\x02\x02\x02\u01F6\u169B\x03\x02" +
		"\x02\x02\u01F8\u169F\x03\x02\x02\x02\u01FA\u16B4\x03\x02\x02\x02\u01FC" +
		"\u16BE\x03\x02\x02\x02\u01FE\u16C8\x03\x02\x02\x02\u0200\u16F0\x03\x02" +
		"\x02\x02\u0202\u16F2\x03\x02\x02\x02\u0204\u16F5\x03\x02\x02\x02\u0206" +
		"\u1713\x03\x02\x02\x02\u0208\u1715\x03\x02\x02\x02\u020A\u1718\x03\x02" +
		"\x02\x02\u020C\u177C\x03\x02\x02\x02\u020E\u178E\x03\x02\x02\x02\u0210" +
		"\u1790\x03\x02\x02\x02\u0212\u17C4\x03\x02\x02\x02\u0214\u17C6\x03\x02" +
		"\x02\x02\u0216\u17CF\x03\x02\x02\x02\u0218\u17D5\x03\x02\x02\x02\u021A" +
		"\u17DC\x03\x02\x02\x02\u021C\u17EB\x03\x02\x02\x02\u021E\u17F4\x03\x02" +
		"\x02\x02\u0220\u17F6\x03\x02\x02\x02\u0222\u1804\x03\x02\x02\x02\u0224" +
		"\u1819\x03\x02\x02\x02\u0226\u181E\x03\x02\x02\x02\u0228\u1828\x03\x02" +
		"\x02\x02\u022A\u182E\x03\x02\x02\x02\u022C\u1850\x03\x02\x02\x02\u022E" +
		"\u1886\x03\x02\x02\x02\u0230\u1940\x03\x02\x02\x02\u0232\u194C\x03\x02" +
		"\x02\x02\u0234\u195C\x03\x02\x02\x02\u0236\u1962\x03\x02\x02\x02\u0238" +
		"\u1975\x03\x02\x02\x02\u023A\u1982\x03\x02\x02\x02\u023C\u1990\x03\x02" +
		"\x02\x02\u023E\u1992\x03\x02\x02\x02\u0240\u1995\x03\x02\x02\x02\u0242" +
		"\u19AD\x03\x02\x02\x02\u0244\u19B9\x03\x02\x02\x02\u0246\u19BF\x03\x02" +
		"\x02\x02\u0248\u19CB\x03\x02\x02\x02\u024A\u19D9\x03\x02\x02\x02\u024C" +
		"\u19DB\x03\x02\x02\x02\u024E\u19E3\x03\x02\x02\x02\u0250\u19EB\x03\x02" +
		"\x02\x02\u0252\u19ED\x03\x02\x02\x02\u0254\u19EF\x03\x02\x02\x02\u0256" +
		"\u1A17\x03\x02\x02\x02\u0258\u1A1E\x03\x02\x02\x02\u025A\u1A20\x03\x02" +
		"\x02\x02\u025C\u1A37\x03\x02\x02\x02\u025E\u1A3D\x03\x02\x02\x02\u0260" +
		"\u1A47\x03\x02\x02\x02\u0262\u1A50\x03\x02\x02\x02\u0264\u1A53\x03\x02" +
		"\x02\x02\u0266\u1A56\x03\x02\x02\x02\u0268\u1A6B\x03\x02\x02\x02\u026A" +
		"\u1A80\x03\x02\x02\x02\u026C\u1A88\x03\x02\x02\x02\u026E\u1A94\x03\x02" +
		"\x02\x02\u0270\u1A9C\x03\x02\x02\x02\u0272\u1AC2\x03\x02\x02\x02\u0274" +
		"\u1ACE\x03\x02\x02\x02\u0276\u1AD0\x03\x02\x02\x02\u0278\u1AD2\x03\x02" +
		"\x02\x02\u027A\u1AD4\x03\x02\x02\x02\u027C\u1AD6\x03\x02\x02\x02\u027E" +
		"\u1AD8\x03\x02\x02\x02\u0280\u1ADA\x03\x02\x02\x02\u0282\u1ADC\x03\x02" +
		"\x02\x02\u0284\u1ADE\x03\x02\x02\x02\u0286\u1AE6\x03\x02\x02\x02\u0288" +
		"\u1AE8\x03\x02\x02\x02\u028A\u1AEA\x03\x02\x02\x02\u028C\u1AEC\x03\x02" +
		"\x02\x02\u028E\u1AEE\x03\x02\x02\x02\u0290\u1AF6\x03\x02\x02\x02\u0292" +
		"\u1AF8\x03\x02\x02\x02\u0294\u1B02\x03\x02\x02\x02\u0296\u1B12\x03\x02" +
		"\x02\x02\u0298\u1B14\x03\x02\x02\x02\u029A\u1B2A\x03\x02\x02\x02\u029C" +
		"\u1B2C\x03\x02\x02\x02\u029E\u1B2E\x03\x02\x02\x02\u02A0\u1B30\x03\x02" +
		"\x02\x02\u02A2\u1B32\x03\x02\x02\x02\u02A4\u1B3A\x03\x02\x02\x02\u02A6" +
		"\u1B44\x03\x02\x02\x02\u02A8\u1B49\x03\x02\x02\x02\u02AA\u1B4D\x03\x02" +
		"\x02\x02\u02AC\u1B54\x03\x02\x02\x02\u02AE\u1B56\x03\x02\x02\x02\u02B0" +
		"\u1B5D\x03\x02\x02\x02\u02B2\u1B5F\x03\x02\x02\x02\u02B4\u1B65\x03\x02" +
		"\x02\x02\u02B6\u1B67\x03\x02\x02\x02\u02B8\u1B6C\x03\x02\x02\x02\u02BA" +
		"\u1B6E\x03\x02\x02\x02\u02BC\u1B70\x03\x02\x02\x02\u02BE\u1B82\x03\x02" +
		"\x02\x02\u02C0\u1B92\x03\x02\x02\x02\u02C2\u1B94\x03\x02\x02\x02\u02C4" +
		"\u1B98\x03\x02\x02\x02\u02C6\u1BA3\x03\x02\x02\x02\u02C8\u1BAE\x03\x02" +
		"\x02\x02\u02CA\u1BB4\x03\x02\x02\x02\u02CC\u1BB6\x03\x02\x02\x02\u02CE" +
		"\u1BBA\x03\x02\x02\x02\u02D0\u1BD3\x03\x02\x02\x02\u02D2\u1BD5\x03\x02" +
		"\x02\x02\u02D4\u1BD8\x03\x02\x02\x02\u02D6\u1BDD\x03\x02\x02\x02\u02D8" +
		"\u1BED\x03\x02\x02\x02\u02DA\u1C6D\x03\x02\x02\x02\u02DC\u1C6F\x03\x02" +
		"\x02\x02\u02DE\u1C90\x03\x02\x02\x02\u02E0\u1C95\x03\x02\x02\x02\u02E2" +
		"\u1C99\x03\x02\x02\x02\u02E4\u1C9F\x03\x02\x02\x02\u02E6\u1CA7\x03\x02" +
		"\x02\x02\u02E8\u1CB2\x03\x02\x02\x02\u02EA\u1CBA\x03\x02\x02\x02\u02EC" +
		"\u1CC3\x03\x02\x02\x02\u02EE\u1CD0\x03\x02\x02\x02\u02F0\u1CD2\x03\x02" +
		"\x02\x02\u02F2\u1CDA\x03\x02\x02\x02\u02F4\u1CE2\x03\x02\x02\x02\u02F6" +
		"\u1D04\x03\x02\x02\x02\u02F8\u1D14\x03\x02\x02\x02\u02FA\u1D16\x03\x02" +
		"\x02\x02\u02FC\u1D19\x03\x02\x02\x02\u02FE\u1D1D\x03\x02\x02\x02\u0300" +
		"\u1D32\x03\x02\x02\x02\u0302\u1DE7\x03\x02\x02\x02\u0304\u1DE9\x03\x02" +
		"\x02\x02\u0306\u1DFC\x03\x02\x02\x02\u0308\u1DFE\x03\x02\x02\x02\u030A" +
		"\u1E3D\x03\x02\x02\x02\u030C\u1E65\x03\x02\x02\x02\u030E\u1E67\x03\x02" +
		"\x02\x02\u0310\u1E70\x03\x02\x02\x02\u0312\u1E7B\x03\x02\x02\x02\u0314" +
		"\u1E7D\x03\x02\x02\x02\u0316\u1E80\x03\x02\x02\x02\u0318\u1E84\x03\x02" +
		"\x02\x02\u031A\u1E86\x03\x02\x02\x02\u031C\u1E92\x03\x02\x02\x02\u031E" +
		"\u1E94\x03\x02\x02\x02\u0320\u1EB6\x03\x02\x02\x02\u0322\u1EB8\x03\x02" +
		"\x02\x02\u0324\u1EBD\x03\x02\x02\x02\u0326\u1EC9\x03\x02\x02\x02\u0328" +
		"\u1ED6\x03\x02\x02\x02\u032A\u1EE1\x03\x02\x02\x02\u032C\u1F57\x03\x02" +
		"\x02\x02\u032E\u1F6D\x03\x02\x02\x02\u0330\u1F77\x03\x02\x02\x02\u0332" +
		"\u1F80\x03\x02\x02\x02\u0334\u1F89\x03\x02\x02\x02\u0336\u1F92\x03\x02" +
		"\x02\x02\u0338\u1F94\x03\x02\x02\x02\u033A\u1F9B\x03\x02\x02\x02\u033C" +
		"\u1F9D\x03\x02\x02\x02\u033E\u1F9F\x03\x02\x02\x02\u0340\u1FA1\x03\x02" +
		"\x02\x02\u0342\u1FA3\x03\x02\x02\x02\u0344\u1FA5\x03\x02\x02\x02\u0346" +
		"\u1FA7\x03\x02\x02\x02\u0348\u1FA9\x03\x02\x02\x02\u034A\u034C\x05\x04" +
		"\x03\x02\u034B\u034A\x03\x02\x02\x02\u034C\u034F\x03\x02\x02\x02\u034D" +
		"\u034B\x03\x02\x02\x02\u034D\u034E\x03\x02\x02\x02\u034E\u0350\x03\x02" +
		"\x02\x02\u034F\u034D\x03\x02\x02\x02\u0350\u0351\x07\x02\x02\x03\u0351" +
		"\x03\x03\x02\x02\x02\u0352\u0354\x05\x06\x04\x02\u0353\u0355\x07\u0367" +
		"\x02\x02\u0354\u0353\x03\x02\x02\x02\u0354\u0355\x03\x02\x02\x02\u0355" +
		"\u0358\x03\x02\x02\x02\u0356\u0358\x05\b\x05\x02\u0357\u0352\x03\x02\x02" +
		"\x02\u0357\u0356\x03\x02\x02\x02\u0358\x05\x03\x02\x02\x02\u0359\u0361" +
		"\x05\n\x06\x02\u035A\u0361\x05\f\x07\x02\u035B\u0361\x05\x0E\b\x02\u035C" +
		"\u0361\x05\x10\t\x02\u035D\u0361\x05\x12\n\x02\u035E\u0361\x05\x16\f\x02" +
		"\u035F\u0361\x05\x18\r\x02\u0360\u0359\x03\x02\x02\x02\u0360\u035A\x03" +
		"\x02\x02\x02\u0360\u035B\x03\x02\x02\x02\u0360\u035C\x03\x02\x02\x02\u0360" +
		"\u035D\x03\x02\x02\x02\u0360\u035E\x03\x02\x02\x02\u0360\u035F\x03\x02" +
		"\x02\x02\u0361\x07\x03\x02\x02\x02\u0362\u0363\x07\u0367\x02\x02\u0363" +
		"\t\x03\x02\x02\x02\u0364\u038C\x05\x1A\x0E\x02\u0365\u038C\x05\x1C\x0F" +
		"\x02\u0366\u038C\x05\x1E\x10\x02\u0367\u038C\x05 \x11\x02\u0368\u038C" +
		"\x05\"\x12\x02\u0369\u038C\x05\u0220\u0111\x02\u036A\u038C\x05&\x14\x02" +
		"\u036B\u038C\x05(\x15\x02\u036C\u038C\x05*\x16\x02\u036D\u038C\x05,\x17" +
		"\x02\u036E\u038C\x05.\x18\x02\u036F\u038C\x054\x1B\x02\u0370\u038C\x05" +
		"$\x13\x02\u0371\u038C\x05z>\x02\u0372\u038C\x05|?\x02\u0373\u038C\x05" +
		"~@\x02\u0374\u038C\x05\x80A\x02\u0375\u038C\x05\x82B\x02\u0376\u038C\x05" +
		"\x84C\x02\u0377\u038C\x05\x86D\x02\u0378\u038C\x05\x88E\x02\u0379\u038C" +
		"\x05\x8AF\x02\u037A\u038C\x05\x8CG\x02\u037B\u038C\x05\x92J\x02\u037C" +
		"\u038C\x05\x94K\x02\u037D\u038C\x05\x96L\x02\u037E\u038C\x05\x98M\x02" +
		"\u037F\u038C\x05\x9AN\x02\u0380\u038C\x05\x9CO\x02\u0381\u038C\x05\x9E" +
		"P\x02\u0382\u038C\x05\xA0Q\x02\u0383\u038C\x05\xA2R\x02\u0384\u038C\x05" +
		"\xA4S\x02\u0385\u038C\x05\xA6T\x02\u0386\u038C\x05\xA8U\x02\u0387\u038C" +
		"\x05\xAAV\x02\u0388\u038C\x05\xACW\x02\u0389\u038C\x05\xAEX\x02\u038A" +
		"\u038C\x05\xB2Z\x02\u038B\u0364\x03\x02\x02\x02\u038B\u0365\x03\x02\x02" +
		"\x02\u038B\u0366\x03\x02\x02\x02\u038B\u0367\x03\x02\x02\x02\u038B\u0368" +
		"\x03\x02\x02\x02\u038B\u0369\x03\x02\x02\x02\u038B\u036A\x03\x02\x02\x02" +
		"\u038B\u036B\x03\x02\x02\x02\u038B\u036C\x03\x02\x02\x02\u038B\u036D\x03" +
		"\x02\x02\x02\u038B\u036E\x03\x02\x02\x02\u038B\u036F\x03\x02\x02\x02\u038B" +
		"\u0370\x03\x02\x02\x02\u038B\u0371\x03\x02\x02\x02\u038B\u0372\x03\x02" +
		"\x02\x02\u038B\u0373\x03\x02\x02\x02\u038B\u0374\x03\x02\x02\x02\u038B" +
		"\u0375\x03\x02\x02\x02\u038B\u0376\x03\x02\x02\x02\u038B\u0377\x03\x02" +
		"\x02\x02\u038B\u0378\x03\x02\x02\x02\u038B\u0379\x03\x02\x02\x02\u038B" +
		"\u037A\x03\x02\x02\x02\u038B\u037B\x03\x02\x02\x02\u038B\u037C\x03\x02" +
		"\x02\x02\u038B\u037D\x03\x02\x02\x02\u038B\u037E\x03\x02\x02\x02\u038B" +
		"\u037F\x03\x02\x02\x02\u038B\u0380\x03\x02\x02\x02\u038B\u0381\x03\x02" +
		"\x02\x02\u038B\u0382\x03\x02\x02\x02\u038B\u0383\x03\x02\x02\x02\u038B" +
		"\u0384\x03\x02\x02\x02\u038B\u0385\x03\x02\x02\x02\u038B\u0386\x03\x02" +
		"\x02\x02\u038B\u0387\x03\x02\x02\x02\u038B\u0388\x03\x02\x02\x02\u038B" +
		"\u0389\x03\x02\x02\x02\u038B\u038A\x03\x02\x02\x02\u038C\v\x03\x02\x02" +
		"\x02\u038D\u039F\x05\xCEh\x02\u038E\u039F\x05\xD0i\x02\u038F\u039F\x05" +
		"\xBC_\x02\u0390\u039F\x05\xD8m\x02\u0391\u039F\x05\xB6\\\x02\u0392\u039F" +
		"\x05\xCCg\x02\u0393\u039F\x05\xB4[\x02\u0394\u039F\x05\xC2b\x02\u0395" +
		"\u039F\x05\xC6d\x02\u0396\u039F\x05\xC8e\x02\u0397\u039F\x05\xCAf\x02" +
		"\u0398\u039F\x05\xB8]\x02\u0399\u039F\x05\xBA^\x02\u039A\u039F\x05\xF8" +
		"}\x02\u039B\u039F\x05\xDAn\x02\u039C\u039F\x05\u026C\u0137\x02\u039D\u039F" +
		"\x05\u026E\u0138\x02\u039E\u038D\x03\x02\x02\x02\u039E\u038E\x03\x02\x02" +
		"\x02\u039E\u038F\x03\x02\x02\x02\u039E\u0390\x03\x02\x02\x02\u039E\u0391" +
		"\x03\x02\x02\x02\u039E\u0392\x03\x02\x02\x02\u039E\u0393\x03\x02\x02\x02" +
		"\u039E\u0394\x03\x02\x02\x02\u039E\u0395\x03\x02\x02\x02\u039E\u0396\x03" +
		"\x02\x02\x02\u039E\u0397\x03\x02\x02\x02\u039E\u0398\x03\x02\x02\x02\u039E" +
		"\u0399\x03\x02\x02\x02\u039E\u039A\x03\x02\x02\x02\u039E\u039B\x03\x02" +
		"\x02\x02\u039E\u039C\x03\x02\x02\x02\u039E\u039D\x03\x02\x02\x02\u039F" +
		"\r\x03\x02\x02\x02\u03A0\u03AA\x05\u0144\xA3\x02\u03A1\u03AA\x05\u0146" +
		"\xA4\x02\u03A2\u03AA\x05\u0148\xA5\x02\u03A3\u03AA\x05\u014A\xA6\x02\u03A4" +
		"\u03AA\x05\u014C\xA7\x02\u03A5\u03AA\x05\u014E\xA8\x02\u03A6\u03AA\x05" +
		"\u0150\xA9\x02\u03A7\u03AA\x05\u0152\xAA\x02\u03A8\u03AA\x05\u0154\xAB" +
		"\x02\u03A9\u03A0\x03\x02\x02\x02\u03A9\u03A1\x03\x02\x02\x02\u03A9\u03A2" +
		"\x03\x02\x02\x02\u03A9\u03A3\x03\x02\x02\x02\u03A9\u03A4\x03\x02\x02\x02" +
		"\u03A9\u03A5\x03\x02\x02\x02\u03A9\u03A6\x03\x02\x02\x02\u03A9\u03A7\x03" +
		"\x02\x02\x02\u03A9\u03A8\x03\x02\x02\x02\u03AA\x0F\x03\x02\x02\x02\u03AB" +
		"\u03BA\x05\u0164\xB3\x02\u03AC\u03BA\x05\u0166\xB4\x02\u03AD\u03BA\x05" +
		"\u0168\xB5\x02\u03AE\u03BA\x05\u016A\xB6\x02\u03AF\u03BA\x05\u016C\xB7" +
		"\x02\u03B0\u03BA\x05\u016E\xB8\x02\u03B1\u03BA\x05\u0170\xB9\x02\u03B2" +
		"\u03BA\x05\u0172\xBA\x02\u03B3\u03BA\x05\u0196\xCC\x02\u03B4\u03BA\x05" +
		"\u0198\xCD\x02\u03B5\u03BA\x05\u019A\xCE\x02\u03B6\u03BA\x05\u019C\xCF" +
		"\x02\u03B7\u03BA\x05\u019E\xD0\x02\u03B8\u03BA\x05\u01A0\xD1\x02\u03B9" +
		"\u03AB\x03\x02\x02\x02\u03B9\u03AC\x03\x02\x02\x02\u03B9\u03AD\x03\x02" +
		"\x02\x02\u03B9\u03AE\x03\x02\x02\x02\u03B9\u03AF\x03\x02\x02\x02\u03B9" +
		"\u03B0\x03\x02\x02\x02\u03B9\u03B1\x03\x02\x02\x02\u03B9\u03B2\x03\x02" +
		"\x02\x02\u03B9\u03B3\x03\x02\x02\x02\u03B9\u03B4\x03\x02\x02\x02\u03B9" +
		"\u03B5\x03\x02\x02\x02\u03B9\u03B6\x03\x02\x02\x02\u03B9\u03B7\x03\x02" +
		"\x02\x02\u03B9\u03B8\x03\x02\x02\x02\u03BA\x11\x03\x02\x02\x02\u03BB\u03BF" +
		"\x05\u01A2\xD2\x02\u03BC\u03BF\x05\u01A4\xD3\x02\u03BD\u03BF\x05\u01A6" +
		"\xD4\x02\u03BE\u03BB\x03\x02\x02\x02\u03BE\u03BC\x03\x02\x02\x02\u03BE" +
		"\u03BD\x03\x02\x02\x02\u03BF\x13\x03\x02\x02\x02\u03C0\u03CB\x05\u01AA" +
		"\xD6\x02\u03C1\u03CB\x05\u01AC\xD7\x02\u03C2\u03CB\x05\u01AE\xD8\x02\u03C3" +
		"\u03CB\x05\u01B2\xDA\x02\u03C4\u03CB\x05\u01B4\xDB\x02\u03C5\u03CB\x05" +
		"\u01B6\xDC\x02\u03C6\u03CB\x05\u01BA\xDE\x02\u03C7\u03CB\x05\u01B0\xD9" +
		"\x02\u03C8\u03CB\x05\u01B8\xDD\x02\u03C9\u03CB\x05\u01BC\xDF\x02\u03CA" +
		"\u03C0\x03\x02\x02\x02\u03CA\u03C1\x03\x02\x02\x02\u03CA\u03C2\x03\x02" +
		"\x02\x02\u03CA\u03C3\x03\x02\x02\x02\u03CA\u03C4\x03\x02\x02\x02\u03CA" +
		"\u03C5\x03\x02\x02\x02\u03CA\u03C6\x03\x02\x02\x02\u03CA\u03C7\x03\x02" +
		"\x02\x02\u03CA\u03C8\x03\x02\x02\x02\u03CA\u03C9\x03\x02\x02\x02\u03CB" +
		"\x15\x03\x02\x02\x02\u03CC\u03EE\x05\u01CE\xE8\x02\u03CD\u03EE\x05\u01D0" +
		"\xE9\x02\u03CE\u03EE\x05\u01D2\xEA\x02\u03CF\u03EE\x05\u01D4\xEB\x02\u03D0" +
		"\u03EE\x05\u01D8\xED\x02\u03D1\u03EE\x05\u01E4\xF3\x02\u03D2\u03EE\x05" +
		"\u01E6\xF4\x02\u03D3\u03EE\x05\u01DA\xEE\x02\u03D4\u03EE\x05\u01DC\xEF" +
		"\x02\u03D5\u03EE\x05\u01DE\xF0\x02\u03D6\u03EE\x05\u01E0\xF1\x02\u03D7" +
		"\u03EE\x05\u0212\u010A\x02\u03D8\u03EE\x05\u0214\u010B\x02\u03D9\u03EE" +
		"\x05\u0216\u010C\x02\u03DA\u03EE\x05\u0218\u010D\x02\u03DB\u03EE\x05\u021A" +
		"\u010E\x02\u03DC\u03EE\x05\u0222\u0112\x02\u03DD\u03EE\x05\u0226\u0114" +
		"\x02\u03DE\u03EE\x05\u0228\u0115\x02\u03DF\u03EE\x05\u022A\u0116\x02\u03E0" +
		"\u03EE\x05\u022C\u0117\x02\u03E1\u03EE\x05\u022E\u0118\x02\u03E2\u03EE" +
		"\x05\u0230\u0119\x02\u03E3\u03EE\x05\u023E\u0120\x02\u03E4\u03EE\x05\u0240" +
		"\u0121\x02\u03E5\u03EE\x05\u0242\u0122\x02\u03E6\u03EE\x05\u0244\u0123" +
		"\x02\u03E7\u03EE\x05\u0246\u0124\x02\u03E8\u03EE\x05\u0248\u0125\x02\u03E9" +
		"\u03EE\x05\u024C\u0127\x02\u03EA\u03EE\x05\u024E\u0128\x02\u03EB\u03EE" +
		"\x05\u0250\u0129\x02\u03EC\u03EE\x05\u0252\u012A\x02\u03ED\u03CC\x03\x02" +
		"\x02\x02\u03ED\u03CD\x03\x02\x02\x02\u03ED\u03CE\x03\x02\x02\x02\u03ED" +
		"\u03CF\x03\x02\x02\x02\u03ED\u03D0\x03\x02\x02\x02\u03ED\u03D1\x03\x02" +
		"\x02\x02\u03ED\u03D2\x03\x02\x02\x02\u03ED\u03D3\x03\x02\x02\x02\u03ED" +
		"\u03D4\x03\x02\x02\x02\u03ED\u03D5\x03\x02\x02\x02\u03ED\u03D6\x03\x02" +
		"\x02\x02\u03ED\u03D7\x03\x02\x02\x02\u03ED\u03D8\x03\x02\x02\x02\u03ED" +
		"\u03D9\x03\x02\x02\x02\u03ED\u03DA\x03\x02\x02\x02\u03ED\u03DB\x03\x02" +
		"\x02\x02\u03ED\u03DC\x03\x02\x02\x02\u03ED\u03DD\x03\x02\x02\x02\u03ED" +
		"\u03DE\x03\x02\x02\x02\u03ED\u03DF\x03\x02\x02\x02\u03ED\u03E0\x03\x02" +
		"\x02\x02\u03ED\u03E1\x03\x02\x02\x02\u03ED\u03E2\x03\x02\x02\x02\u03ED" +
		"\u03E3\x03\x02\x02\x02\u03ED\u03E4\x03\x02\x02\x02\u03ED\u03E5\x03\x02" +
		"\x02\x02\u03ED\u03E6\x03\x02\x02\x02\u03ED\u03E7\x03\x02\x02\x02\u03ED" +
		"\u03E8\x03\x02\x02\x02\u03ED\u03E9\x03\x02\x02\x02\u03ED\u03EA\x03\x02" +
		"\x02\x02\u03ED\u03EB\x03\x02\x02\x02\u03ED\u03EC\x03\x02\x02\x02\u03EE" +
		"\x17\x03\x02\x02\x02\u03EF\u03F8\x05\u025C\u012F\x02\u03F0\u03F8\x05\u025E" +
		"\u0130\x02\u03F1\u03F8\x05\u0260\u0131\x02\u03F2\u03F8\x05\u0262\u0132" +
		"\x02\u03F3\u03F8\x05\u0264\u0133\x02\u03F4\u03F8\x05\u0266\u0134\x02\u03F5" +
		"\u03F8\x05\u0268\u0135\x02\u03F6\u03F8\x05\u0270\u0139\x02\u03F7\u03EF" +
		"\x03\x02\x02\x02\u03F7\u03F0\x03\x02\x02\x02\u03F7\u03F1\x03\x02\x02\x02" +
		"\u03F7\u03F2\x03\x02\x02\x02\u03F7\u03F3\x03\x02\x02\x02\u03F7\u03F4\x03" +
		"\x02\x02\x02\u03F7\u03F5\x03\x02\x02\x02\u03F7\u03F6\x03\x02\x02\x02\u03F8" +
		"\x19\x03\x02\x02\x02\u03F9\u03FA\x07$\x02\x02\u03FA\u03FC\t\x02\x02\x02" +
		"\u03FB\u03FD\x05\u02FC\u017F\x02\u03FC\u03FB\x03\x02\x02\x02\u03FC\u03FD" +
		"\x03\x02\x02\x02\u03FD\u03FE\x03\x02\x02\x02\u03FE\u0402\x05\u0276\u013C" +
		"\x02\u03FF\u0401\x056\x1C\x02\u0400\u03FF\x03\x02\x02\x02\u0401\u0404" +
		"\x03\x02\x02\x02\u0402\u0400\x03\x02\x02\x02\u0402\u0403\x03\x02\x02\x02" +
		"\u0403\x1B\x03\x02\x02\x02\u0404\u0402\x03\x02\x02\x02\u0405\u0407\x07" +
		"$\x02\x02\u0406\u0408\x05<\x1F\x02\u0407\u0406\x03\x02\x02\x02\u0407\u0408" +
		"\x03\x02\x02\x02\u0408\u0409\x03\x02\x02\x02\u0409\u040B\x07\u0183\x02" +
		"\x02\u040A\u040C\x05\u02FC\u017F\x02\u040B\u040A\x03\x02\x02\x02\u040B" +
		"\u040C\x03\x02\x02\x02\u040C\u040D\x03\x02\x02\x02\u040D\u040E\x05\u02C2" +
		"\u0162\x02\u040E\u040F\x07y\x02\x02\u040F\u0410\x07\u0250\x02\x02\u0410" +
		"\u0417\x05> \x02\u0411\u0412\x07y\x02\x02\u0412\u0414\x07\u0159\x02\x02" +
		"\u0413\u0415\x07t\x02\x02\u0414\u0413\x03\x02\x02\x02\u0414\u0415\x03" +
		"\x02\x02\x02\u0415\u0416\x03\x02\x02\x02\u0416\u0418\x07\u021F\x02\x02" +
		"\u0417\u0411\x03\x02\x02\x02\u0417\u0418\x03\x02\x02\x02\u0418\u041A\x03" +
		"\x02\x02\x02\u0419\u041B\x05F$\x02\u041A\u0419\x03\x02\x02\x02\u041A\u041B" +
		"\x03\x02\x02\x02\u041B\u041E\x03\x02\x02\x02\u041C\u041D\x07\u0156\x02" +
		"\x02\u041D\u041F\x07\u0374\x02\x02\u041E\u041C\x03\x02\x02\x02\u041E\u041F" +
		"\x03\x02\x02\x02\u041F\u0420\x03\x02\x02\x02\u0420\u0421\x07\u0175\x02" +
		"\x02\u0421\u0422\x05\u01A8\xD5\x02\u0422\x1D\x03\x02\x02\x02\u0423\u0425" +
		"\x07$\x02\x02\u0424\u0426\t\x03\x02\x02\u0425\u0424\x03\x02\x02\x02\u0425" +
		"\u0426\x03\x02\x02\x02\u0426\u0428\x03\x02\x02\x02\u0427\u0429\t\x04\x02" +
		"\x02\u0428\u0427\x03\x02\x02\x02\u0428\u0429\x03\x02\x02\x02\u0429\u042A" +
		"\x03\x02\x02\x02\u042A\u042B\x07T\x02\x02\u042B\u042D\x05\u0282\u0142" +
		"\x02\u042C\u042E\x05H%\x02\u042D\u042C\x03\x02\x02\x02\u042D\u042E\x03" +
		"\x02\x02\x02\u042E\u042F\x03\x02\x02\x02\u042F\u0430\x07y\x02\x02\u0430" +
		"\u0431\x05\u0290\u0149\x02\u0431\u0435\x05\u02E6\u0174\x02\u0432\u0434" +
		"\x05J&\x02\u0433\u0432\x03\x02\x02\x02\u0434\u0437\x03\x02\x02\x02\u0435" +
		"\u0433\x03\x02\x02\x02\u0435\u0436\x03\x02\x02\x02\u0436\u0444\x03\x02" +
		"\x02\x02\u0437\u0435\x03\x02\x02\x02\u0438\u043A\x07\u0136\x02\x02\u0439" +
		"\u043B\x07\u035B\x02\x02\u043A\u0439\x03\x02\x02\x02\u043A\u043B\x03\x02" +
		"\x02\x02\u043B\u043C\x03\x02\x02\x02\u043C\u0443\t\x05\x02\x02\u043D\u043F" +
		"\x07j\x02\x02\u043E\u0440\x07\u035B\x02\x02\u043F\u043E\x03\x02\x02\x02" +
		"\u043F\u0440\x03\x02\x02\x02\u0440\u0441\x03\x02\x02\x02\u0441\u0443\t" +
		"\x06\x02\x02\u0442\u0438\x03\x02\x02\x02\u0442\u043D\x03\x02\x02\x02\u0443" +
		"\u0446\x03\x02\x02\x02\u0444\u0442\x03\x02\x02\x02\u0444\u0445\x03\x02" +
		"\x02\x02\u0445\x1F\x03\x02\x02\x02\u0446\u0444\x03\x02\x02\x02\u0447\u0448" +
		"\x07$\x02\x02\u0448\u0449\x07\u01C5\x02\x02\u0449\u044A\x07L\x02\x02\u044A" +
		"\u044B\x05\u02C6\u0164\x02\u044B\u044C\x07\b\x02\x02\u044C\u044D\x07\u02A1" +
		"\x02\x02\u044D\u0453\x07\u0374\x02\x02\u044E\u0450\x07\u01AE\x02\x02\u044F" +
		"\u0451\x07\u035B\x02\x02\u0450\u044F\x03\x02\x02\x02\u0450\u0451\x03\x02" +
		"\x02\x02\u0451\u0452\x03\x02\x02\x02\u0452\u0454\x05\u02CE\u0168\x02\u0453" +
		"\u044E\x03\x02\x02\x02\u0453\u0454\x03\x02\x02\x02\u0454\u045A\x03\x02" +
		"\x02\x02\u0455\u0457\x07\u02A2\x02\x02\u0456\u0458\x07\u035B\x02\x02\u0457" +
		"\u0456\x03\x02\x02\x02\u0457\u0458\x03\x02\x02\x02\u0458\u0459\x03\x02" +
		"\x02\x02\u0459\u045B\x05\u02CE\u0168\x02\u045A\u0455\x03\x02\x02\x02\u045A" +
		"\u045B\x03\x02\x02\x02\u045B\u0461\x03\x02\x02\x02\u045C\u045E\x07\u022B" +
		"\x02\x02\u045D\u045F\x07\u035B\x02\x02\u045E\u045D\x03\x02\x02\x02\u045E" +
		"\u045F\x03\x02\x02\x02\u045F\u0460\x03\x02\x02\x02\u0460\u0462\x05\u02CE" +
		"\u0168\x02\u0461\u045C\x03\x02\x02\x02\u0461\u0462\x03\x02\x02\x02\u0462" +
		"\u0468\x03\x02\x02\x02\u0463\u0465\x07\u01FA\x02\x02\u0464\u0466\x07\u035B" +
		"\x02\x02\u0465\u0464\x03\x02\x02\x02\u0465\u0466\x03\x02\x02\x02\u0466" +
		"\u0467\x03\x02\x02\x02\u0467\u0469\x05\u02C6\u0164\x02\u0468\u0463\x03" +
		"\x02\x02\x02\u0468\u0469\x03\x02\x02\x02\u0469\u046B\x03\x02\x02\x02\u046A" +
		"\u046C\x07\u02B1\x02\x02\u046B\u046A\x03\x02\x02\x02\u046B\u046C\x03\x02";
	private static readonly _serializedATNSegment5: string =
		"\x02\x02\u046C\u0472\x03\x02\x02\x02\u046D\u046F\x07\u0156\x02\x02\u046E" +
		"\u0470\x07\u035B\x02\x02\u046F\u046E\x03\x02\x02\x02\u046F\u0470\x03\x02" +
		"\x02\x02\u0470\u0471\x03\x02\x02\x02\u0471\u0473\x07\u0374\x02\x02\u0472" +
		"\u046D\x03\x02\x02\x02\u0472\u0473\x03\x02\x02\x02\u0473\u0474\x03\x02" +
		"\x02\x02\u0474\u0476\x07\u017E\x02\x02\u0475\u0477\x07\u035B\x02\x02\u0476" +
		"\u0475\x03\x02\x02\x02\u0476\u0477\x03\x02\x02\x02\u0477\u0478\x03\x02" +
		"\x02\x02\u0478\u0479\x05\u02B8\u015D\x02\u0479!\x03\x02\x02\x02\u047A" +
		"\u047C\x07$\x02\x02\u047B\u047D\x05<\x1F\x02\u047C\u047B\x03\x02\x02\x02" +
		"\u047C\u047D\x03\x02\x02\x02\u047D\u047E\x03\x02\x02\x02\u047E\u0480\x07" +
		"\x86\x02\x02\u047F\u0481\x05\u02FC\u017F\x02\u0480\u047F\x03\x02\x02\x02" +
		"\u0480\u0481\x03\x02\x02\x02\u0481\u0482\x03\x02\x02\x02\u0482\u0483\x05" +
		"\u02C2\u0162\x02\u0483\u0485\x07\u0364\x02\x02\u0484\u0486\x05L\'\x02" +
		"\u0485\u0484\x03\x02\x02\x02\u0485\u0486\x03\x02\x02\x02\u0486\u048B\x03" +
		"\x02\x02\x02\u0487\u0488\x07\u0366\x02\x02\u0488\u048A\x05L\'\x02\u0489" +
		"\u0487\x03\x02\x02\x02\u048A\u048D\x03\x02\x02\x02\u048B\u0489\x03\x02" +
		"\x02\x02\u048B\u048C\x03\x02\x02\x02\u048C\u048E\x03\x02\x02\x02\u048D" +
		"\u048B\x03\x02\x02\x02\u048E\u0492\x07\u0365\x02\x02\u048F\u0491\x05N" +
		"(\x02\u0490\u048F\x03\x02\x02\x02\u0491\u0494\x03\x02\x02\x02\u0492\u0490" +
		"\x03\x02\x02\x02\u0492\u0493\x03\x02\x02\x02\u0493\u0495\x03\x02\x02\x02" +
		"\u0494\u0492\x03\x02\x02\x02\u0495\u0496\x05\u01A8\xD5\x02\u0496#\x03" +
		"\x02\x02\x02\u0497\u0498\x07$\x02\x02\u0498\u049A\x07\u0248\x02\x02\u0499" +
		"\u049B\x05\u02FC\u017F\x02\u049A\u0499\x03\x02\x02\x02\u049A\u049B\x03" +
		"\x02\x02\x02\u049B\u049C\x03\x02\x02\x02\u049C\u049D\x05\u0292\u014A\x02" +
		"\u049D%\x03\x02\x02\x02\u049E\u049F\x07$\x02\x02\u049F\u04A0\x07\u0252" +
		"\x02\x02\u04A0\u04A1\x05\u02C6\u0164\x02\u04A1\u04A2\x07E\x02\x02\u04A2" +
		"\u04A3\x07\u016A\x02\x02\u04A3\u04A4\x07\u02B6\x02\x02\u04A4\u04A5\t\x07" +
		"\x02\x02\u04A5\u04A6\x07\u0208\x02\x02\u04A6\u04A7\x07\u0364\x02\x02\u04A7" +
		"\u04AC\x05P)\x02\u04A8\u04A9\x07\u0366\x02\x02\u04A9\u04AB\x05P)\x02\u04AA" +
		"\u04A8\x03\x02\x02\x02\u04AB\u04AE\x03\x02\x02\x02\u04AC\u04AA\x03\x02" +
		"\x02\x02\u04AC\u04AD\x03\x02\x02\x02\u04AD\u04AF\x03\x02\x02\x02\u04AE" +
		"\u04AC\x03\x02\x02\x02\u04AF\u04B0\x07\u0365\x02\x02\u04B0\'\x03\x02\x02" +
		"\x02\u04B1\u04B3\x07$\x02\x02\u04B2\u04B4\x07\u0296\x02\x02\u04B3\u04B2" +
		"\x03\x02\x02\x02\u04B3\u04B4\x03\x02\x02\x02\u04B4\u04B5\x03\x02\x02\x02" +
		"\u04B5\u04B7\x07\xAF\x02\x02\u04B6\u04B8\x05\u02FC\u017F\x02\u04B7\u04B6" +
		"\x03\x02\x02\x02\u04B7\u04B8\x03\x02\x02\x02\u04B8\u04B9\x03\x02\x02\x02" +
		"\u04B9\u04BA\x05\u028C\u0147\x02\u04BA\u04C5\x05R*\x02\u04BB\u04C2\x05" +
		"d3\x02\u04BC\u04BE\x07\u0366\x02\x02\u04BD\u04BC\x03\x02\x02\x02\u04BD" +
		"\u04BE\x03\x02\x02\x02\u04BE\u04BF\x03\x02\x02\x02\u04BF\u04C1\x05d3\x02" +
		"\u04C0\u04BD\x03\x02\x02\x02\u04C1\u04C4\x03\x02\x02\x02\u04C2\u04C0\x03" +
		"\x02\x02\x02\u04C2\u04C3\x03\x02\x02\x02\u04C3\u04C6\x03\x02\x02\x02\u04C4" +
		"\u04C2\x03\x02\x02\x02\u04C5\u04BB\x03\x02\x02\x02\u04C5\u04C6\x03\x02" +
		"\x02\x02\u04C6\u04C8\x03\x02\x02\x02\u04C7\u04C9\x05j6\x02\u04C8\u04C7" +
		"\x03\x02\x02\x02\u04C8\u04C9\x03\x02\x02\x02\u04C9\u0500\x03\x02\x02\x02" +
		"\u04CA\u04CC\x07$\x02\x02\u04CB\u04CD\x07\u0296\x02\x02\u04CC\u04CB\x03" +
		"\x02\x02\x02\u04CC\u04CD\x03\x02\x02\x02\u04CD\u04CE\x03\x02\x02\x02\u04CE" +
		"\u04D0\x07\xAF\x02\x02\u04CF\u04D1\x05\u02FC\u017F\x02\u04D0\u04CF\x03" +
		"\x02\x02\x02\u04D0\u04D1\x03\x02\x02\x02\u04D1\u04D2\x03\x02\x02\x02\u04D2" +
		"\u04D4\x05\u028C\u0147\x02\u04D3\u04D5\x05R*\x02\u04D4\u04D3\x03\x02\x02" +
		"\x02\u04D4\u04D5\x03\x02\x02\x02\u04D5\u04E0\x03\x02\x02\x02\u04D6\u04DD" +
		"\x05d3\x02\u04D7\u04D9\x07\u0366\x02\x02\u04D8\u04D7\x03\x02\x02\x02\u04D8" +
		"\u04D9\x03\x02\x02\x02\u04D9\u04DA\x03\x02\x02\x02\u04DA\u04DC\x05d3\x02" +
		"\u04DB\u04D8\x03\x02\x02\x02\u04DC\u04DF\x03\x02\x02\x02\u04DD\u04DB\x03" +
		"\x02\x02\x02\u04DD\u04DE\x03\x02\x02\x02\u04DE\u04E1\x03\x02\x02\x02\u04DF" +
		"\u04DD\x03\x02\x02\x02\u04E0\u04D6\x03\x02\x02\x02\u04E0\u04E1\x03\x02" +
		"\x02\x02\u04E1\u04E3\x03\x02\x02\x02\u04E2\u04E4\x05j6\x02\u04E3\u04E2" +
		"\x03\x02\x02\x02\u04E3\u04E4\x03\x02\x02\x02\u04E4\u04E6\x03\x02\x02\x02" +
		"\u04E5\u04E7\t\b\x02\x02\u04E6\u04E5\x03\x02\x02\x02\u04E6\u04E7\x03\x02" +
		"\x02\x02\u04E7\u04E9\x03\x02\x02\x02\u04E8\u04EA\x07\x0F\x02\x02\u04E9" +
		"\u04E8\x03\x02\x02\x02\u04E9\u04EA\x03\x02\x02\x02\u04EA\u04EB\x03\x02" +
		"\x02\x02\u04EB\u04EC\x05\xCEh\x02\u04EC\u0500\x03\x02\x02\x02\u04ED\u04EF" +
		"\x07$\x02\x02\u04EE\u04F0\x07\u0296\x02\x02\u04EF\u04EE\x03\x02\x02\x02" +
		"\u04EF\u04F0\x03\x02\x02\x02\u04F0\u04F1\x03\x02\x02\x02\u04F1\u04F3\x07" +
		"\xAF\x02\x02\u04F2\u04F4\x05\u02FC\u017F\x02\u04F3\u04F2\x03\x02\x02\x02" +
		"\u04F3\u04F4\x03\x02\x02\x02\u04F4\u04F5\x03\x02\x02\x02\u04F5\u04FD\x05" +
		"\u028C\u0147\x02\u04F6\u04F7\x07e\x02\x02\u04F7\u04FE\x05\u0290\u0149" +
		"\x02\u04F8\u04F9\x07\u0364\x02\x02\u04F9\u04FA\x07e\x02\x02\u04FA\u04FB" +
		"\x05\u0290\u0149\x02\u04FB\u04FC\x07\u0365\x02\x02\u04FC\u04FE\x03\x02" +
		"\x02\x02\u04FD\u04F6\x03\x02\x02\x02\u04FD\u04F8\x03\x02\x02\x02\u04FE" +
		"\u0500\x03\x02\x02\x02\u04FF\u04B1\x03\x02\x02\x02\u04FF\u04CA\x03\x02" +
		"\x02\x02\u04FF\u04ED\x03\x02\x02\x02\u0500)\x03\x02\x02\x02\u0501\u0503" +
		"\x07$\x02\x02\u0502\u0504\x07\xB6\x02\x02\u0503\u0502\x03\x02\x02\x02" +
		"\u0503\u0504\x03\x02\x02\x02\u0504\u0505\x03\x02\x02\x02\u0505\u0506\x07" +
		"\u0294\x02\x02\u0506\u050A\x05\u029C\u014F\x02\u0507\u0508\x07\b\x02\x02" +
		"\u0508\u0509\x07\u016B\x02\x02\u0509\u050B\x07\u0374\x02\x02\u050A\u0507" +
		"\x03\x02\x02\x02\u050A\u050B\x03\x02\x02\x02\u050B\u0511\x03\x02\x02\x02" +
		"\u050C\u050E\x07\u013C\x02\x02\u050D\u050F\x07\u035B\x02\x02\u050E\u050D" +
		"\x03\x02\x02\x02\u050E\u050F\x03\x02\x02\x02\u050F\u0510\x03\x02\x02\x02" +
		"\u0510\u0512\x05\u02CE\u0168\x02\u0511\u050C\x03\x02\x02\x02\u0511\u0512" +
		"\x03\x02\x02\x02\u0512\u0516\x03\x02\x02\x02\u0513\u0514\x07\u0191\x02" +
		"\x02\u0514\u0515\x07\u035B\x02\x02\u0515\u0517\x05\u02CE\u0168\x02\u0516" +
		"\u0513\x03\x02\x02\x02\u0516\u0517\x03\x02\x02\x02\u0517\u051D\x03\x02" +
		"\x02\x02\u0518\u051A\x07\u017E\x02\x02\u0519\u051B\x07\u035B\x02\x02\u051A" +
		"\u0519\x03\x02\x02\x02\u051A\u051B\x03\x02\x02\x02\u051B\u051C\x03\x02" +
		"\x02\x02\u051C\u051E\x05\u02B8\u015D\x02\u051D\u0518\x03\x02\x02\x02\u051D" +
		"\u051E\x03\x02\x02\x02\u051E\u0524\x03\x02\x02\x02\u051F\u0521\x07\u033B" +
		"\x02\x02\u0520\u0522\x07\u035B\x02\x02\u0521\u0520\x03\x02\x02\x02\u0521" +
		"\u0522\x03\x02\x02\x02\u0522\u0523\x03\x02\x02\x02\u0523\u0525\x07\u0374" +
		"\x02\x02\u0524\u051F\x03\x02\x02\x02\u0524\u0525\x03\x02\x02\x02\u0525" +
		"+\x03\x02\x02\x02\u0526\u0528\x07$\x02\x02\u0527\u0529\x07\xB6\x02\x02" +
		"\u0528\u0527\x03\x02\x02\x02\u0528\u0529\x03\x02\x02\x02\u0529\u052A\x03" +
		"\x02\x02\x02\u052A\u052B\x07\u0294\x02\x02\u052B\u052C\x05\u029C\u014F" +
		"\x02\u052C\u052D\x07\b\x02\x02\u052D\u052E\x07\u016B\x02\x02\u052E\u052F" +
		"\x07\u0374\x02\x02\u052F\u0530\x07\xBD\x02\x02\u0530\u0531\x07\u01C5\x02" +
		"\x02\u0531\u0532\x07L\x02\x02\u0532\u0538\x05\u02C6\u0164\x02\u0533\u0535" +
		"\x07\u018B\x02\x02\u0534\u0536\x07\u035B\x02\x02\u0535\u0534\x03\x02\x02" +
		"\x02\u0535\u0536\x03\x02\x02\x02\u0536\u0537\x03\x02\x02\x02\u0537\u0539" +
		"\x05\u02CE\u0168\x02\u0538\u0533\x03\x02\x02\x02\u0538\u0539\x03\x02\x02" +
		"\x02\u0539\u053F\x03\x02\x02\x02\u053A\u053C\x07\u01AE\x02\x02\u053B\u053D" +
		"\x07\u035B\x02\x02\u053C\u053B\x03\x02\x02\x02\u053C\u053D\x03\x02\x02" +
		"\x02\u053D\u053E\x03\x02\x02\x02\u053E\u0540\x05\u02CE\u0168\x02\u053F" +
		"\u053A\x03\x02\x02\x02\u053F\u0540\x03\x02\x02\x02\u0540\u0546\x03\x02" +
		"\x02\x02\u0541\u0543\x07\u013C\x02\x02\u0542\u0544\x07\u035B\x02\x02\u0543" +
		"\u0542\x03\x02\x02\x02\u0543\u0544\x03\x02\x02\x02\u0544\u0545\x03\x02" +
		"\x02\x02\u0545\u0547\x05\u02CE\u0168\x02\u0546\u0541\x03\x02\x02\x02\u0546" +
		"\u0547\x03\x02\x02\x02\u0547\u054D\x03\x02\x02\x02\u0548\u054A\x07\u01E3" +
		"\x02\x02\u0549\u054B\x07\u035B\x02\x02\u054A\u0549\x03\x02\x02\x02\u054A" +
		"\u054B\x03\x02\x02\x02\u054B\u054C\x03\x02\x02\x02\u054C\u054E\x05\u02CE" +
		"\u0168\x02\u054D\u0548\x03\x02\x02\x02\u054D\u054E\x03\x02\x02\x02\u054E" +
		"\u0554\x03\x02\x02\x02\u054F\u0551\x07\u01FA\x02\x02\u0550\u0552\x07\u035B" +
		"\x02\x02\u0551\u0550\x03\x02\x02\x02\u0551\u0552\x03\x02\x02\x02\u0552" +
		"\u0553\x03\x02\x02\x02\u0553\u0555\x05\u02C6\u0164\x02\u0554\u054F\x03" +
		"\x02\x02\x02\u0554\u0555\x03\x02\x02\x02\u0555\u0557\x03\x02\x02\x02\u0556" +
		"\u0558\x07\u02B1\x02\x02\u0557\u0556\x03\x02\x02\x02\u0557\u0558\x03\x02" +
		"\x02\x02\u0558\u055E\x03\x02\x02\x02\u0559\u055B\x07\u0156\x02\x02\u055A" +
		"\u055C\x07\u035B\x02\x02\u055B\u055A\x03\x02\x02\x02\u055B\u055C\x03\x02" +
		"\x02\x02\u055C\u055D\x03\x02\x02\x02\u055D\u055F\x07\u0374\x02\x02\u055E" +
		"\u0559\x03\x02\x02\x02\u055E\u055F\x03\x02\x02\x02\u055F\u0560\x03\x02" +
		"\x02\x02\u0560\u0562\x07\u017E\x02\x02\u0561\u0563\x07\u035B\x02\x02\u0562" +
		"\u0561\x03\x02\x02\x02\u0562\u0563\x03\x02\x02\x02\u0563\u0564\x03\x02" +
		"\x02\x02\u0564\u0565\x05\u02B8\u015D\x02\u0565-\x03\x02\x02\x02\u0566" +
		"\u0568\x07$\x02\x02\u0567\u0569\x05<\x1F\x02\u0568\u0567\x03\x02\x02\x02" +
		"\u0568\u0569\x03\x02\x02\x02\u0569\u056A\x03\x02\x02\x02\u056A\u056C\x07" +
		"\xB4\x02\x02\u056B\u056D\x05\u02FC\u017F\x02\u056C\u056B\x03\x02\x02\x02" +
		"\u056C\u056D\x03\x02\x02\x02\u056D\u056E\x03\x02\x02\x02\u056E\u056F\x05" +
		"\u02C2\u0162\x02\u056F\u0570\t\t\x02\x02\u0570\u0571\t\n\x02\x02\u0571" +
		"\u0572\x07y\x02\x02\u0572\u0573\x05\u0290\u0149\x02\u0573\u0574\x07C\x02" +
		"\x02\u0574\u0575\x076\x02\x02\u0575\u0578\x07\u024C\x02\x02\u0576\u0577" +
		"\t\v\x02\x02\u0577\u0579\x05\u02C2\u0162\x02\u0578\u0576\x03\x02\x02\x02" +
		"\u0578\u0579\x03\x02\x02\x02\u0579\u057A\x03\x02\x02\x02\u057A\u057B\x05" +
		"\u01A8\xD5\x02\u057B/\x03\x02\x02\x02\u057C\u057E\x07\xC4\x02\x02\u057D" +
		"\u057F\x07\u022A\x02\x02\u057E\u057D\x03\x02\x02\x02\u057E\u057F\x03\x02" +
		"\x02\x02\u057F\u0580\x03\x02\x02\x02\u0580\u0581\x052\x1A\x02\u05811\x03" +
		"\x02\x02\x02\u0582\u058E\x05\u02C6\u0164\x02\u0583\u0584\x07\u0364\x02" +
		"\x02\u0584\u0589\x05\u02C6\u0164\x02\u0585\u0586\x07\u0366\x02\x02\u0586" +
		"\u0588\x05\u02C6\u0164\x02\u0587\u0585\x03\x02\x02\x02\u0588\u058B\x03" +
		"\x02\x02\x02\u0589\u0587\x03\x02\x02\x02\u0589\u058A\x03\x02\x02\x02\u058A" +
		"\u058C\x03\x02\x02\x02\u058B\u0589\x03\x02\x02\x02\u058C\u058D\x07\u0365" +
		"\x02\x02\u058D\u058F\x03\x02\x02\x02\u058E\u0583\x03\x02\x02\x02\u058E" +
		"\u058F\x03\x02\x02\x02\u058F\u0590\x03\x02\x02\x02\u0590\u0591\x07\x0F" +
		"\x02\x02\u0591\u0592\x07\u0364\x02\x02\u0592\u0593\x05\f\x07\x02\u0593" +
		"\u0596\x07\u0365\x02\x02\u0594\u0595\x07\u0366\x02\x02\u0595\u0597\x05" +
		"2\x1A\x02\u0596\u0594\x03\x02\x02\x02\u0596\u0597\x03\x02\x02\x02\u0597" +
		"3\x03\x02\x02\x02\u0598\u059A\x07$\x02\x02\u0599\u059B\x05\u02FE\u0180" +
		"\x02\u059A\u0599\x03\x02\x02\x02\u059A\u059B\x03\x02\x02\x02\u059B\u059F" +
		"\x03\x02\x02\x02\u059C\u059D\x07\u0136\x02\x02\u059D\u059E\x07\u035B\x02" +
		"\x02\u059E\u05A0\t\f\x02\x02\u059F\u059C\x03\x02\x02\x02\u059F\u05A0\x03" +
		"\x02\x02\x02\u05A0\u05A2\x03\x02\x02\x02\u05A1\u05A3\x05<\x1F\x02\u05A2" +
		"\u05A1\x03\x02\x02\x02\u05A2\u05A3\x03\x02\x02\x02\u05A3\u05A7\x03\x02" +
		"\x02\x02\u05A4\u05A5\x07\xA4\x02\x02\u05A5\u05A6\x07\u0251\x02\x02\u05A6" +
		"\u05A8\t\r\x02\x02\u05A7\u05A4\x03\x02\x02\x02\u05A7\u05A8\x03\x02\x02" +
		"\x02\u05A8\u05A9\x03\x02\x02\x02\u05A9\u05AA\x07\u02AE\x02\x02\u05AA\u05AF" +
		"\x05\u027E\u0140\x02\u05AB\u05AC\x07\u0364\x02\x02\u05AC\u05AD\x05\u0298" +
		"\u014D\x02\u05AD\u05AE\x07\u0365\x02\x02\u05AE\u05B0\x03\x02\x02\x02\u05AF" +
		"\u05AB\x03\x02\x02\x02\u05AF\u05B0\x03\x02\x02\x02\u05B0\u05B1\x03\x02" +
		"\x02\x02\u05B1\u05C5\x07\x0F\x02\x02\u05B2\u05B4\x07\u0364\x02\x02\u05B3" +
		"\u05B5\x050\x19\x02\u05B4\u05B3\x03\x02\x02\x02\u05B4\u05B5\x03\x02\x02" +
		"\x02\u05B5\u05B6\x03\x02\x02\x02\u05B6\u05B7\x05\xCEh\x02\u05B7\u05B8" +
		"\x07\u0365\x02\x02\u05B8\u05C6\x03\x02\x02\x02\u05B9\u05BB\x050\x19\x02" +
		"\u05BA\u05B9\x03\x02\x02\x02\u05BA\u05BB\x03\x02\x02\x02\u05BB\u05BC\x03" +
		"\x02\x02\x02\u05BC\u05C3\x05\xCEh\x02\u05BD\u05BF\x07\xC4\x02\x02\u05BE" +
		"\u05C0\t\x0E\x02\x02\u05BF\u05BE\x03\x02\x02\x02\u05BF\u05C0\x03\x02\x02" +
		"\x02\u05C0\u05C1\x03\x02\x02\x02\u05C1\u05C2\x07\x1D\x02\x02\u05C2\u05C4" +
		"\x07{\x02\x02\u05C3\u05BD\x03\x02\x02\x02\u05C3\u05C4\x03\x02\x02\x02" +
		"\u05C4\u05C6\x03\x02\x02\x02\u05C5\u05B2\x03\x02\x02\x02\u05C5\u05BA\x03" +
		"\x02\x02\x02\u05C65\x03\x02\x02\x02\u05C7\u05C9\x07,\x02\x02\u05C8\u05C7" +
		"\x03\x02\x02\x02\u05C8\u05C9\x03\x02\x02\x02\u05C9\u05CA\x03\x02\x02\x02" +
		"\u05CA\u05CC\x058\x1D\x02\u05CB\u05CD\x07\u035B\x02\x02\u05CC\u05CB\x03" +
		"\x02\x02\x02\u05CC\u05CD\x03\x02\x02\x02\u05CD\u05D0\x03\x02\x02\x02\u05CE" +
		"\u05D1\x05\u02B4\u015B\x02\u05CF\u05D1\x07,\x02\x02\u05D0\u05CE\x03\x02" +
		"\x02\x02\u05D0\u05CF\x03\x02\x02\x02\u05D1\u05E9\x03\x02\x02\x02\u05D2" +
		"\u05D4\x07,\x02\x02\u05D3\u05D2\x03\x02\x02\x02\u05D3\u05D4\x03\x02\x02" +
		"\x02\u05D4\u05D5\x03\x02\x02\x02\u05D5\u05D7\x07\x1E\x02\x02\u05D6\u05D8" +
		"\x07\u035B\x02\x02\u05D7\u05D6\x03\x02\x02\x02\u05D7\u05D8\x03\x02\x02" +
		"\x02\u05D8\u05D9\x03\x02\x02\x02\u05D9\u05E9\x05\u02B6\u015C\x02\u05DA" +
		"\u05DC\x07,\x02\x02\u05DB\u05DA\x03\x02\x02\x02\u05DB\u05DC\x03\x02\x02" +
		"\x02\u05DC\u05DD\x03\x02\x02\x02\u05DD\u05DF\x07\u017A\x02\x02\u05DE\u05E0" +
		"\x07\u035B\x02\x02\u05DF\u05DE\x03\x02\x02\x02\u05DF\u05E0\x03\x02\x02" +
		"\x02\u05E0\u05E1\x03\x02\x02\x02\u05E1\u05E9\x07\u0374\x02\x02\u05E2\u05E3" +
		"\x07\x89\x02\x02\u05E3\u05E5\x07\u0205\x02\x02\u05E4\u05E6\x07\u035B\x02" +
		"\x02\u05E5\u05E4\x03\x02\x02\x02\u05E5\u05E6\x03\x02\x02\x02\u05E6\u05E7" +
		"\x03\x02\x02\x02\u05E7\u05E9\t\x0F\x02\x02\u05E8\u05C8\x03\x02\x02\x02" +
		"\u05E8\u05D3\x03\x02\x02\x02\u05E8\u05DB\x03\x02\x02\x02\u05E8\u05E2\x03" +
		"\x02\x02\x02\u05E97\x03\x02\x02\x02\u05EA\u05EB\x07\x1C\x02\x02\u05EB" +
		"\u05F0\x07\x9D\x02\x02\u05EC\u05F0\x07\u0339\x02\x02\u05ED\u05EE\x07\xE2" +
		"\x02\x02\u05EE\u05F0\x07\x9D\x02\x02\u05EF\u05EA\x03\x02\x02\x02\u05EF" +
		"\u05EC\x03\x02\x02\x02\u05EF\u05ED\x03\x02\x02\x02\u05F09\x03\x02\x02" +
		"\x02\u05F1\u05F4\t\x10\x02\x02\u05F2\u05F3\x07\u0364\x02\x02\u05F3\u05F5" +
		"\x07\u0365\x02\x02\u05F4\u05F2\x03\x02\x02\x02\u05F4\u05F5\x03\x02\x02" +
		"\x02\u05F5;\x03\x02\x02\x02\u05F6\u05F7\x07\u016E\x02\x02\u05F7\u05FA" +
		"\x07\u035B\x02\x02\u05F8\u05FB\x05\u02B0\u0159\x02\u05F9\u05FB\x05:\x1E" +
		"\x02\u05FA\u05F8\x03\x02\x02\x02\u05FA\u05F9\x03\x02\x02\x02\u05FB=\x03" +
		"\x02\x02\x02\u05FC\u05FD\x07\u0139\x02\x02\u05FD\u0601\x05@!\x02\u05FE" +
		"\u0600\x05B\"\x02\u05FF\u05FE\x03\x02\x02\x02\u0600\u0603\x03\x02\x02" +
		"\x02\u0601\u05FF\x03\x02\x02\x02\u0601\u0602\x03\x02\x02\x02\u0602\u061F" +
		"\x03\x02\x02\x02\u0603\u0601\x03\x02\x02\x02\u0604\u0607\x07\u0185\x02" +
		"\x02\u0605\u0608\x05\u02CC\u0167\x02\u0606\u0608\x05\u0328\u0195\x02\u0607" +
		"\u0605\x03\x02\x02\x02\u0607\u0606\x03\x02\x02\x02\u0608\u0609\x03\x02" +
		"\x02\x02\u0609\u0612\x05D#\x02\u060A\u060B\x07\u0283\x02\x02\u060B\u060F" +
		"\x05@!\x02\u060C\u060E\x05B\"\x02\u060D\u060C\x03\x02\x02\x02\u060E\u0611" +
		"\x03\x02\x02\x02\u060F\u060D\x03\x02\x02\x02\u060F\u0610\x03\x02\x02\x02" +
		"\u0610\u0613\x03\x02\x02\x02\u0611\u060F\x03\x02\x02\x02\u0612\u060A\x03" +
		"\x02\x02\x02\u0612\u0613\x03\x02\x02\x02\u0613\u061C\x03\x02\x02\x02\u0614" +
		"\u0615\x07\u017D\x02\x02\u0615\u0619\x05@!\x02\u0616\u0618\x05B\"\x02" +
		"\u0617\u0616\x03\x02\x02\x02\u0618\u061B\x03\x02\x02\x02\u0619\u0617\x03" +
		"\x02\x02\x02\u0619\u061A\x03\x02\x02\x02\u061A\u061D\x03\x02\x02\x02\u061B" +
		"\u0619\x03\x02\x02\x02\u061C\u0614\x03\x02\x02\x02\u061C\u061D\x03\x02" +
		"\x02\x02\u061D\u061F\x03\x02\x02\x02\u061E\u05FC\x03\x02\x02\x02\u061E" +
		"\u0604\x03\x02\x02\x02\u061F?\x03\x02\x02\x02\u0620\u0625\x07\u0121\x02" +
		"\x02\u0621\u0625\x05\u02D0\u0169\x02\u0622\u0625\x05\u02CC\u0167\x02\u0623" +
		"\u0625\x05\u0328\u0195\x02\u0624\u0620\x03\x02\x02\x02\u0624\u0621\x03" +
		"\x02\x02\x02\u0624\u0622\x03\x02\x02\x02\u0624\u0623\x03\x02\x02\x02\u0625" +
		"A\x03\x02\x02\x02\u0626\u0627\x07\u0357\x02\x02\u0627\u062A\x07Y\x02\x02" +
		"\u0628\u062B\x05\u02CC\u0167\x02\u0629\u062B\x05\u0328\u0195\x02\u062A" +
		"\u0628\x03\x02\x02\x02\u062A\u0629\x03\x02\x02\x02\u062B\u062C\x03\x02" +
		"\x02\x02\u062C\u062D\x05D#\x02\u062DC\x03\x02\x02\x02\u062E\u063C\x05" +
		"\u0342\u01A2\x02\u062F\u063C\x07\xE1\x02\x02\u0630\u063C\x07\xF4\x02\x02" +
		"\u0631\u063C\x07\xF5\x02\x02\u0632\u063C\x07\xF6\x02\x02\u0633\u063C\x07" +
		"\xF7\x02\x02\u0634\u063C\x07\xF8\x02\x02\u0635\u063C\x07\xF9\x02\x02\u0636" +
		"\u063C\x07\xFA\x02\x02\u0637\u063C\x07\xFB\x02\x02\u0638\u063C\x07\xFC" +
		"\x02\x02\u0639\u063C\x07\xFD\x02\x02\u063A\u063C\x07\xFE\x02\x02\u063B" +
		"\u062E\x03\x02\x02\x02\u063B\u062F\x03\x02\x02\x02\u063B\u0630\x03\x02" +
		"\x02\x02\u063B\u0631\x03\x02\x02\x02\u063B\u0632\x03\x02\x02\x02\u063B" +
		"\u0633\x03\x02\x02\x02\u063B\u0634\x03\x02\x02\x02\u063B\u0635\x03\x02" +
		"\x02\x02\u063B\u0636\x03\x02\x02\x02\u063B\u0637\x03\x02\x02\x02\u063B" +
		"\u0638\x03\x02\x02\x02\u063B\u0639\x03\x02\x02\x02\u063B\u063A\x03\x02" +
		"\x02\x02\u063CE\x03\x02\x02\x02\u063D\u0643\x07\u0179\x02\x02\u063E\u0643" +
		"\x07\u0172\x02\x02\u063F\u0640\x07\u0172\x02\x02\u0640\u0641\x07y\x02" +
		"\x02\u0641\u0643\x07\u0258\x02\x02\u0642\u063D\x03\x02\x02\x02\u0642\u063E" +
		"\x03\x02\x02\x02\u0642\u063F\x03\x02\x02\x02\u0643G\x03\x02\x02\x02\u0644" +
		"\u0645\x07\xBE\x02\x02\u0645\u0646\t\x11\x02\x02\u0646I\x03\x02\x02\x02" +
		"\u0647\u0649\x07\u01BD\x02\x02\u0648\u064A\x07\u035B\x02\x02\u0649\u0648" +
		"\x03\x02\x02\x02\u0649\u064A\x03\x02\x02\x02\u064A\u064B\x03\x02\x02\x02" +
		"\u064B\u065E\x05\u02CE\u0168\x02\u064C\u065E\x05H%\x02\u064D\u064E\x07" +
		"\xC4\x02\x02\u064E\u064F\x07\u020F\x02\x02\u064F\u065E\x05\u02C6\u0164" +
		"\x02\u0650\u0651\x07\u0156\x02\x02\u0651\u065E\x07\u0374\x02\x02\u0652" +
		"\u065E\t\x12\x02\x02\u0653\u0655\x07\u033B\x02\x02\u0654\u0656\x07\u035B" +
		"\x02\x02\u0655\u0654\x03\x02\x02\x02\u0655\u0656\x03\x02\x02\x02\u0656" +
		"\u0657\x03\x02\x02\x02\u0657\u065E\x07\u0374\x02\x02\u0658\u065A\x07\u0343" +
		"\x02\x02\u0659\u065B\x07\u035B\x02\x02\u065A\u0659\x03\x02\x02\x02\u065A" +
		"\u065B\x03\x02\x02\x02\u065B\u065C\x03\x02\x02\x02\u065C\u065E\x07\u0374" +
		"\x02\x02\u065D\u0647\x03\x02\x02\x02\u065D\u064C\x03\x02\x02\x02\u065D" +
		"\u064D\x03\x02\x02\x02\u065D\u0650\x03\x02\x02\x02\u065D\u0652\x03\x02" +
		"\x02\x02\u065D\u0653\x03\x02\x02\x02\u065D\u0658\x03\x02\x02\x02\u065E" +
		"K\x03\x02\x02\x02\u065F\u0661\t\x13\x02\x02\u0660\u065F\x03\x02\x02\x02" +
		"\u0660\u0661\x03\x02\x02\x02\u0661\u0662\x03\x02\x02\x02\u0662\u0663\x05" +
		"\u02C6\u0164\x02\u0663\u0664\x05\u02DA\u016E\x02\u0664M\x03\x02\x02\x02" +
		"\u0665\u0666\x07\u0156\x02\x02\u0666\u067D\x07\u0374\x02\x02\u0667\u0668" +
		"\x07\u01BE\x02\x02\u0668\u067D\x07\xA4\x02\x02\u0669\u066B\x07t\x02\x02" +
		"\u066A\u0669\x03\x02\x02\x02\u066A\u066B\x03\x02\x02\x02\u066B\u066C\x03" +
		"\x02\x02\x02\u066C\u067D\x071\x02\x02\u066D\u066E\x07\u0164\x02\x02\u066E" +
		"\u0678\x07\xA4\x02\x02\u066F\u0670\x07\u01F8\x02\x02\u0670\u0678\x07\xA4" +
		"\x02\x02\u0671\u0672\x07\x8A\x02\x02\u0672\u0673\x07\xA4\x02\x02\u0673" +
		"\u0678\x07\u016A\x02\x02\u0674\u0675\x07r\x02\x02\u0675\u0676\x07\xA4" +
		"\x02\x02\u0676\u0678\x07\u016A\x02\x02\u0677\u066D\x03\x02\x02\x02\u0677" +
		"\u066F\x03\x02\x02\x02\u0677\u0671\x03\x02\x02\x02\u0677\u0674\x03\x02" +
		"\x02\x02\u0678\u067D\x03\x02\x02\x02\u0679\u067A\x07\xA4\x02\x02\u067A" +
		"\u067B\x07\u0251\x02\x02\u067B\u067D\t\r\x02\x02\u067C\u0665\x03\x02\x02" +
		"\x02\u067C\u0667\x03\x02\x02\x02\u067C\u066A\x03\x02\x02\x02\u067C\u0677" +
		"\x03\x02\x02\x02\u067C\u0679\x03\x02\x02\x02\u067DO\x03\x02\x02\x02\u067E" +
		"\u067F\x07\u01A7\x02\x02\u067F\u068D\x07\u0374\x02\x02\u0680\u0681\x07" +
		")\x02\x02\u0681\u068D\x07\u0374\x02\x02\u0682\u0683\x07\u02A8\x02\x02" +
		"\u0683\u068D\x07\u0374\x02\x02\u0684\u0685\x07\u0213\x02\x02\u0685\u068D" +
		"\x07\u0374\x02\x02\u0686\u0687\x07\u025B\x02\x02\u0687\u068D\x07\u0374" +
		"\x02\x02\u0688\u0689\x07\u0209\x02\x02\u0689\u068D\x07\u0374\x02\x02\u068A" +
		"\u068B\x07\u021B\x02\x02\u068B\u068D\x05\u02CC\u0167\x02\u068C\u067E\x03" +
		"\x02\x02\x02\u068C\u0680\x03\x02\x02\x02\u068C\u0682\x03\x02\x02\x02\u068C" +
		"\u0684\x03\x02\x02\x02\u068C\u0686\x03\x02\x02\x02\u068C\u0688\x03\x02" +
		"\x02\x02\u068C\u068A\x03\x02\x02\x02\u068DQ\x03\x02\x02\x02\u068E\u068F" +
		"\x07\u0364\x02\x02\u068F\u0694\x05T+\x02\u0690\u0691\x07\u0366\x02\x02" +
		"\u0691\u0693\x05T+\x02\u0692\u0690\x03\x02\x02\x02\u0693\u0696\x03\x02" +
		"\x02\x02\u0694\u0692\x03\x02\x02\x02\u0694\u0695\x03\x02\x02\x02\u0695" +
		"\u0697\x03\x02\x02\x02\u0696\u0694\x03\x02\x02\x02\u0697\u0698\x07\u0365" +
		"\x02\x02\u0698S\x03\x02\x02\x02\u0699\u069A\x05\u029A\u014E\x02\u069A" +
		"\u069B\x05Z.\x02\u069B\u06ED\x03\x02\x02\x02\u069C\u069E\t\x14\x02\x02" +
		"\u069D\u069F\x05\u0286\u0144\x02\u069E\u069D\x03\x02\x02\x02\u069E\u069F" +
		"\x03\x02\x02\x02\u069F\u06A1\x03\x02\x02\x02\u06A0\u06A2\x05H%\x02\u06A1" +
		"\u06A0\x03\x02\x02\x02\u06A1\u06A2\x03\x02\x02\x02\u06A2\u06A3\x03\x02" +
		"\x02\x02\u06A3\u06A7\x05\u02E6\u0174\x02\u06A4\u06A6\x05J&\x02\u06A5\u06A4" +
		"\x03\x02\x02\x02\u06A6\u06A9\x03\x02\x02\x02\u06A7\u06A5\x03\x02\x02\x02" +
		"\u06A7\u06A8\x03\x02\x02\x02\u06A8\u06ED\x03\x02\x02\x02\u06A9\u06A7\x03" +
		"\x02\x02\x02\u06AA\u06AC\t\x15\x02\x02\u06AB\u06AD\t\x14\x02\x02\u06AC" +
		"\u06AB\x03\x02\x02\x02\u06AC\u06AD\x03\x02\x02\x02\u06AD\u06AF\x03\x02" +
		"\x02\x02\u06AE\u06B0\x05\u0286\u0144\x02\u06AF\u06AE\x03\x02\x02\x02\u06AF" +
		"\u06B0\x03\x02\x02\x02\u06B0\u06B1\x03\x02\x02\x02\u06B1\u06B5\x05\u02E6" +
		"\u0174\x02\u06B2\u06B4\x05J&\x02\u06B3\u06B2\x03\x02\x02\x02\u06B4\u06B7" +
		"\x03\x02\x02\x02\u06B5\u06B3\x03\x02\x02\x02\u06B5\u06B6\x03\x02\x02\x02" +
		"\u06B6\u06ED\x03\x02\x02\x02\u06B7\u06B5\x03\x02\x02\x02\u06B8\u06BA\x05" +
		"X-\x02\u06B9\u06B8\x03\x02\x02\x02\u06B9\u06BA\x03\x02\x02\x02\u06BA\u06BB" +
		"\x03\x02\x02\x02\u06BB\u06BC\x07\x85\x02\x02\u06BC\u06BE\x07^\x02\x02" +
		"\u06BD\u06BF\x05H%\x02\u06BE\u06BD\x03\x02\x02\x02\u06BE\u06BF\x03\x02" +
		"\x02\x02\u06BF\u06C0\x03\x02\x02\x02\u06C0\u06C4\x05\u02E6\u0174\x02\u06C1" +
		"\u06C3\x05J&\x02\u06C2\u06C1\x03\x02\x02\x02\u06C3\u06C6\x03\x02\x02\x02" +
		"\u06C4\u06C2\x03\x02\x02\x02\u06C4\u06C5\x03\x02\x02\x02\u06C5\u06ED\x03" +
		"\x02\x02\x02\u06C6\u06C4\x03\x02\x02\x02\u06C7\u06C9\x05X-\x02\u06C8\u06C7" +
		"\x03\x02\x02\x02\u06C8\u06C9\x03\x02\x02\x02\u06C9\u06CA\x03\x02\x02\x02" +
		"\u06CA\u06CC\x07\xB8\x02\x02\u06CB\u06CD\t\x14\x02\x02\u06CC\u06CB\x03" +
		"\x02\x02\x02\u06CC\u06CD\x03\x02\x02\x02\u06CD\u06CF\x03\x02\x02\x02\u06CE" +
		"\u06D0\x05\u0286\u0144\x02\u06CF\u06CE\x03\x02\x02\x02\u06CF\u06D0\x03" +
		"\x02\x02\x02\u06D0\u06D2\x03\x02\x02\x02\u06D1\u06D3\x05H%\x02\u06D2\u06D1" +
		"\x03\x02\x02\x02\u06D2\u06D3\x03\x02\x02\x02\u06D3\u06D4\x03\x02\x02\x02" +
		"\u06D4\u06D8\x05\u02E6\u0174\x02\u06D5\u06D7\x05J&\x02\u06D6\u06D5\x03" +
		"\x02\x02\x02\u06D7\u06DA\x03\x02\x02\x02\u06D8\u06D6\x03\x02\x02\x02\u06D8" +
		"\u06D9\x03\x02\x02\x02\u06D9\u06ED\x03\x02\x02\x02\u06DA\u06D8\x03\x02" +
		"\x02\x02\u06DB\u06DD\x05X-\x02\u06DC\u06DB\x03\x02\x02\x02\u06DC\u06DD" +
		"\x03\x02\x02\x02\u06DD\u06DE\x03\x02\x02\x02\u06DE\u06DF\x07E\x02\x02" +
		"\u06DF\u06E1\x07^\x02\x02\u06E0\u06E2\x05\u0286\u0144\x02\u06E1\u06E0" +
		"\x03\x02\x02\x02\u06E1\u06E2\x03\x02\x02\x02\u06E2\u06E3\x03\x02\x02\x02" +
		"\u06E3\u06E4\x05\u02E6\u0174\x02\u06E4\u06E5\x05^0\x02\u06E5\u06ED\x03" +
		"\x02\x02\x02\u06E6\u06E7\x07\x1D\x02\x02\u06E7\u06E8\x07\u0364\x02\x02" +
		"\u06E8\u06E9\x05\u0328\u0195\x02\u06E9\u06EA\x07\u0365\x02\x02\u06EA\u06ED" +
		"\x03\x02\x02\x02\u06EB\u06ED\x05V,\x02\u06EC\u0699\x03\x02\x02\x02\u06EC" +
		"\u069C\x03\x02\x02\x02\u06EC\u06AA\x03\x02\x02\x02\u06EC\u06B9\x03\x02" +
		"\x02\x02\u06EC\u06C8\x03\x02\x02\x02\u06EC\u06DC\x03\x02\x02\x02\u06EC" +
		"\u06E6\x03\x02\x02\x02\u06EC\u06EB\x03\x02\x02\x02\u06EDU\x03\x02\x02" +
		"\x02\u06EE\u06F0\x05X-\x02\u06EF\u06EE\x03\x02\x02\x02\u06EF\u06F0\x03" +
		"\x02\x02\x02\u06F0\u06F1\x03\x02\x02\x02\u06F1\u06F2\x07\x1D\x02\x02\u06F2" +
		"\u06F3\x07\u0364\x02\x02\u06F3\u06F4\x05\u0328\u0195\x02\u06F4\u06F9\x07" +
		"\u0365\x02\x02\u06F5\u06F7\x07t\x02\x02\u06F6\u06F5\x03\x02\x02\x02\u06F6" +
		"\u06F7\x03\x02\x02\x02\u06F7\u06F8\x03\x02\x02\x02\u06F8\u06FA\x07;\x02" +
		"\x02\u06F9\u06F6\x03\x02\x02\x02\u06F9\u06FA\x03\x02\x02\x02\u06FAW\x03" +
		"\x02\x02\x02\u06FB\u06FD\x07!\x02\x02\u06FC\u06FE\x05\u02C6\u0164\x02" +
		"\u06FD\u06FC\x03\x02\x02\x02\u06FD\u06FE\x03\x02\x02\x02\u06FEY\x03\x02" +
		"\x02\x02\u06FF\u0703\x05\u02DA\u016E\x02\u0700\u0702\x05\\/\x02\u0701" +
		"\u0700\x03\x02\x02\x02\u0702\u0705\x03\x02\x02\x02\u0703\u0701\x03\x02" +
		"\x02\x02\u0703\u0704\x03\x02\x02\x02\u0704[\x03\x02\x02\x02\u0705\u0703" +
		"\x03\x02\x02\x02\u0706\u0732\x05\u02D6\u016C\x02\u0707\u0708\x07,\x02" +
		"\x02\u0708\u0732\x05\u02F6\u017C\x02";
	private static readonly _serializedATNSegment6: string =
		"\u0709\u0732\x07\u02B0\x02\x02\u070A\u0732\x07\u01B5\x02\x02\u070B\u0710" +
		"\x07\u013D\x02\x02\u070C\u070D\x07y\x02\x02\u070D\u070E\x07\xBB\x02\x02" +
		"\u070E\u0710\x05\u02F8\u017D\x02\u070F\u070B\x03\x02\x02\x02\u070F\u070C" +
		"\x03\x02\x02\x02\u0710\u0732\x03\x02\x02\x02\u0711\u0713\x07\x85\x02\x02" +
		"\u0712\u0711\x03\x02\x02\x02\u0712\u0713\x03\x02\x02\x02\u0713\u0714\x03" +
		"\x02\x02\x02\u0714\u0732\x07^\x02\x02\u0715\u0717\x07\xB8\x02\x02\u0716" +
		"\u0718\x07^\x02\x02\u0717\u0716\x03\x02\x02\x02\u0717\u0718\x03\x02\x02" +
		"\x02\u0718\u0732\x03\x02\x02\x02\u0719\u071A\x07\u0156\x02\x02\u071A\u0732" +
		"\x07\u0374\x02\x02\u071B\u071C\x07\u0154\x02\x02\u071C\u0732\t\x16\x02" +
		"\x02\u071D\u071E\x07\u0289\x02\x02\u071E\u0732\t\x17\x02\x02\u071F\u0732" +
		"\x05^0\x02\u0720\u0721\x07\x1E\x02\x02\u0721\u0732\x05\u02B6\u015C\x02" +
		"\u0722\u0723\x07I\x02\x02\u0723\u0725\x07\v\x02\x02\u0724\u0722\x03\x02" +
		"\x02\x02\u0724\u0725\x03\x02\x02\x02\u0725\u0726\x03\x02\x02\x02\u0726" +
		"\u0727\x07\x0F\x02\x02\u0727\u0728\x07\u0364\x02\x02\u0728\u0729\x05\u0328" +
		"\u0195\x02\u0729\u072B\x07\u0365\x02\x02\u072A\u072C\t\x18\x02\x02\u072B" +
		"\u072A\x03\x02\x02\x02\u072B\u072C\x03\x02\x02\x02\u072C\u0732\x03\x02" +
		"\x02\x02\u072D\u072E\x07\xF3\x02\x02\u072E\u072F\x07,\x02\x02\u072F\u0732" +
		"\x07\u02AC\x02\x02\u0730\u0732\x05V,\x02\u0731\u0706\x03\x02\x02\x02\u0731" +
		"\u0707\x03\x02\x02\x02\u0731\u0709\x03\x02\x02\x02\u0731\u070A\x03\x02" +
		"\x02\x02\u0731\u070F\x03\x02\x02\x02\u0731\u0712\x03\x02\x02\x02\u0731" +
		"\u0715\x03\x02\x02\x02\u0731\u0719\x03\x02\x02\x02\u0731\u071B\x03\x02" +
		"\x02\x02\u0731\u071D\x03\x02\x02\x02\u0731\u071F\x03\x02\x02\x02\u0731" +
		"\u0720\x03\x02\x02\x02\u0731\u0724\x03\x02\x02\x02\u0731\u072D\x03\x02" +
		"\x02\x02\u0731\u0730\x03\x02\x02\x02\u0732]\x03\x02\x02\x02\u0733\u0734" +
		"\x07\x8C\x02\x02\u0734\u0736\x05\u0290\u0149\x02\u0735\u0737\x05\u02E6" +
		"\u0174\x02\u0736\u0735\x03\x02\x02\x02\u0736\u0737\x03\x02\x02\x02\u0737" +
		"\u073A\x03\x02\x02\x02\u0738\u0739\x07p\x02\x02\u0739\u073B\t\x19\x02" +
		"\x02\u073A\u0738\x03\x02\x02\x02\u073A\u073B\x03\x02\x02\x02\u073B\u073D" +
		"\x03\x02\x02\x02\u073C\u073E\x05`1\x02\u073D\u073C\x03\x02\x02\x02\u073D" +
		"\u073E\x03\x02\x02\x02\u073E_\x03\x02\x02\x02\u073F\u0740\x07y\x02\x02" +
		"\u0740\u0741\x07.\x02\x02\u0741\u0745\x05b2\x02\u0742\u0743\x07y\x02\x02" +
		"\u0743\u0744\x07\xBB\x02\x02\u0744\u0746\x05b2\x02\u0745\u0742\x03\x02" +
		"\x02\x02\u0745\u0746\x03\x02\x02\x02\u0746\u0750\x03\x02\x02\x02\u0747" +
		"\u0748\x07y\x02\x02\u0748\u0749\x07\xBB\x02\x02\u0749\u074D\x05b2\x02" +
		"\u074A\u074B\x07y\x02\x02\u074B\u074C\x07.\x02\x02\u074C\u074E\x05b2\x02" +
		"\u074D\u074A\x03\x02\x02\x02\u074D\u074E\x03\x02\x02\x02\u074E\u0750\x03" +
		"\x02\x02\x02\u074F\u073F\x03\x02\x02\x02\u074F\u0747\x03\x02\x02\x02\u0750" +
		"a\x03\x02\x02\x02\u0751\u075A\x07\x94\x02\x02\u0752\u075A\x07\x18\x02" +
		"\x02\u0753\u0754\x07\x9D\x02\x02\u0754\u075A\x07v\x02\x02\u0755\u0756" +
		"\x07\u01F8\x02\x02\u0756\u075A\x07\u0133\x02\x02\u0757\u0758\x07\x9D\x02" +
		"\x02\u0758\u075A\x07,\x02\x02\u0759\u0751\x03\x02\x02\x02\u0759\u0752" +
		"\x03\x02\x02\x02\u0759\u0753\x03\x02\x02\x02\u0759\u0755\x03\x02\x02\x02" +
		"\u0759\u0757\x03\x02\x02\x02\u075Ac\x03\x02\x02\x02\u075B\u075D\x07\u017E" +
		"\x02\x02\u075C\u075E\x07\u035B\x02\x02\u075D\u075C\x03\x02\x02\x02\u075D" +
		"\u075E\x03\x02\x02\x02\u075E\u0760\x03\x02\x02\x02\u075F\u0761\x05\u02B8" +
		"\u015D\x02\u0760\u075F\x03\x02\x02\x02\u0760\u0761\x03\x02\x02\x02\u0761" +
		"\u0815\x03\x02\x02\x02\u0762\u0764\x07\u033B\x02\x02\u0763\u0765\x07\u035B" +
		"\x02\x02\u0764\u0763\x03\x02\x02\x02\u0764\u0765\x03\x02\x02\x02\u0765" +
		"\u0766\x03\x02\x02\x02\u0766\u0815\x07\u0374\x02\x02\u0767\u0769\x07\u013C" +
		"\x02\x02\u0768\u076A\x07\u035B\x02\x02\u0769\u0768\x03\x02\x02\x02\u0769" +
		"\u076A\x03\x02\x02\x02\u076A\u076B\x03\x02\x02\x02\u076B\u0815\x05\u02CC" +
		"\u0167\x02\u076C\u076E\x07\u013D\x02\x02\u076D\u076F\x07\u035B\x02\x02" +
		"\u076E\u076D\x03\x02\x02\x02\u076E\u076F\x03\x02\x02\x02\u076F\u0770\x03" +
		"\x02\x02\x02\u0770\u0815\x05\u02CC\u0167\x02\u0771\u0773\x07\u013E\x02" +
		"\x02\u0772\u0774\x07\u035B\x02\x02\u0773\u0772\x03\x02\x02\x02\u0773\u0774" +
		"\x03\x02\x02\x02\u0774\u0775\x03\x02\x02\x02\u0775\u0815\x05\u02CC\u0167" +
		"\x02\u0776\u0778\x07,\x02\x02\u0777\u0776\x03\x02\x02\x02\u0777\u0778" +
		"\x03\x02\x02\x02\u0778\u0779\x03\x02\x02\x02\u0779\u077B\x058\x1D\x02" +
		"\u077A\u077C\x07\u035B\x02\x02\u077B\u077A\x03\x02\x02\x02\u077B\u077C" +
		"\x03\x02\x02\x02\u077C\u077F\x03\x02\x02\x02\u077D\u0780\x05\u02B4\u015B" +
		"\x02\u077E\u0780\x07,\x02\x02\u077F\u077D\x03\x02\x02\x02\u077F\u077E" +
		"\x03\x02\x02\x02\u0780\u0815\x03\x02\x02\x02\u0781\u0783\t\x1A\x02\x02" +
		"\u0782\u0784\x07\u035B\x02\x02\u0783\u0782\x03\x02\x02\x02\u0783\u0784" +
		"\x03\x02\x02\x02\u0784\u0785\x03\x02\x02\x02\u0785\u0815\t\x1B\x02\x02" +
		"\u0786\u0788\x07,\x02\x02\u0787\u0786\x03\x02\x02\x02\u0787\u0788\x03" +
		"\x02\x02\x02\u0788\u0789\x03\x02\x02\x02\u0789\u078B\x07\x1E\x02\x02\u078A" +
		"\u078C\x07\u035B\x02\x02\u078B\u078A\x03\x02\x02\x02\u078B\u078C\x03\x02" +
		"\x02\x02\u078C\u078D\x03\x02\x02\x02\u078D\u0815\x05\u02B6\u015C\x02\u078E" +
		"\u0790\x07\u0156\x02\x02\u078F\u0791\x07\u035B\x02\x02\u0790\u078F\x03" +
		"\x02\x02\x02\u0790\u0791\x03\x02\x02\x02\u0791\u0792\x03\x02\x02\x02\u0792" +
		"\u0815\x07\u0374\x02\x02\u0793\u0795\x07\u015C\x02\x02\u0794\u0796\x07" +
		"\u035B\x02\x02\u0795\u0794\x03\x02\x02\x02\u0795\u0796\x03\x02\x02\x02" +
		"\u0796\u0797\x03\x02\x02\x02\u0797\u0815\t\x1C\x02\x02\u0798\u079A\x07" +
		"\u015F\x02\x02\u0799\u079B\x07\u035B\x02\x02\u079A\u0799\x03\x02\x02\x02" +
		"\u079A\u079B\x03\x02\x02\x02\u079B\u079C\x03\x02\x02\x02\u079C\u0815\x07" +
		"\u0374\x02\x02\u079D\u079E\t\x1D\x02\x02\u079E\u07A0\x07\u0171\x02\x02" +
		"\u079F\u07A1\x07\u035B\x02\x02\u07A0\u079F\x03\x02\x02\x02\u07A0\u07A1" +
		"\x03\x02\x02\x02\u07A1\u07A2\x03\x02\x02\x02\u07A2\u0815\x07\u0374\x02" +
		"\x02\u07A3\u07A5\x07\u016F\x02\x02\u07A4\u07A6\x07\u035B\x02\x02\u07A5" +
		"\u07A4\x03\x02\x02\x02\u07A5\u07A6\x03\x02\x02\x02\u07A6\u07A7\x03\x02" +
		"\x02\x02\u07A7\u0815\t\x1B\x02\x02\u07A8\u07AA\x07\u017A\x02\x02\u07A9" +
		"\u07AB\x07\u035B\x02\x02\u07AA\u07A9\x03\x02\x02\x02\u07AA\u07AB\x03\x02" +
		"\x02\x02\u07AB\u07AC\x03\x02\x02\x02\u07AC\u0815\x07\u0374\x02\x02\u07AD" +
		"\u07AF\t\x1E\x02\x02\u07AE\u07B0\x07\u035B\x02\x02\u07AF\u07AE\x03\x02" +
		"\x02\x02\u07AF\u07B0\x03\x02\x02\x02\u07B0\u07B1\x03\x02\x02\x02\u07B1" +
		"\u0815\t\x1B\x02\x02\u07B2\u07B4\t\x1F\x02\x02\u07B3\u07B5\x07\u035B\x02" +
		"\x02\u07B4\u07B3\x03\x02\x02\x02\u07B4\u07B5\x03\x02\x02\x02\u07B5\u07B6" +
		"\x03\x02\x02\x02\u07B6\u0815\x05\u02CC\u0167\x02\u07B7\u07B9\x07\u017B" +
		"\x02\x02\u07B8\u07BA\x07\u035B\x02\x02\u07B9\u07B8\x03\x02\x02\x02\u07B9" +
		"\u07BA\x03\x02\x02\x02\u07BA\u07BB\x03\x02\x02\x02\u07BB\u0815\x05\u02CC" +
		"\u0167\x02\u07BC\u07BD\x07T\x02\x02\u07BD\u07BF\x07\u0171\x02\x02\u07BE" +
		"\u07C0\x07\u035B\x02\x02\u07BF\u07BE\x03\x02\x02\x02\u07BF\u07C0\x03\x02" +
		"\x02\x02\u07C0\u07C1\x03\x02\x02\x02\u07C1\u0815\x07\u0374\x02\x02\u07C2" +
		"\u07C4\x07\u01B1\x02\x02\u07C3\u07C5\x07\u035B\x02\x02\u07C4\u07C3\x03" +
		"\x02\x02\x02\u07C4\u07C5\x03\x02\x02\x02\u07C5\u07C6\x03\x02\x02\x02\u07C6" +
		"\u0815\t \x02\x02\u07C7\u07C9\x07\u01BD\x02\x02\u07C8\u07CA\x07\u035B" +
		"\x02\x02\u07C9\u07C8\x03\x02\x02\x02\u07C9\u07CA\x03\x02\x02\x02\u07CA" +
		"\u07CB\x03\x02\x02\x02\u07CB\u0815\x05\u02CE\u0168\x02\u07CC\u07CE\x07" +
		"\u01E2\x02\x02\u07CD\u07CF\x07\u035B\x02\x02\u07CE\u07CD\x03\x02\x02\x02" +
		"\u07CE\u07CF\x03\x02\x02\x02\u07CF\u07D0\x03\x02\x02\x02\u07D0\u0815\x05" +
		"\u02CC\u0167\x02\u07D1\u07D3\x07\u01EC\x02\x02\u07D2\u07D4\x07\u035B\x02" +
		"\x02\u07D3\u07D2\x03\x02\x02\x02\u07D3\u07D4\x03\x02\x02\x02\u07D4\u07D5" +
		"\x03\x02\x02\x02\u07D5\u0815\x05\u02CC\u0167\x02\u07D6\u07D8\x07\u020A" +
		"\x02\x02\u07D7\u07D9\x07\u035B\x02\x02\u07D8\u07D7\x03\x02\x02\x02\u07D8" +
		"\u07D9\x03\x02\x02\x02\u07D9\u07DA\x03\x02\x02\x02\u07DA\u0815\t\x0F\x02" +
		"\x02\u07DB\u07DD\x07\u0213\x02\x02\u07DC\u07DE\x07\u035B\x02\x02\u07DD" +
		"\u07DC\x03\x02\x02\x02\u07DD\u07DE\x03\x02\x02\x02\u07DE\u07DF\x03\x02" +
		"\x02\x02\u07DF\u0815\x07\u0374\x02\x02\u07E0\u07E2\x07\u024E\x02\x02\u07E1" +
		"\u07E3\x07\u035B\x02\x02\u07E2\u07E1\x03\x02\x02\x02\u07E2\u07E3\x03\x02" +
		"\x02\x02\u07E3\u07E4\x03\x02\x02\x02\u07E4\u0815\t!\x02\x02\u07E5\u07E6" +
		"\x07\u0282\x02\x02\u07E6\u0815\x07\u029A\x02\x02\u07E7\u07E9\x07\u0343" +
		"\x02\x02\u07E8\u07EA\x07\u035B\x02\x02\u07E9\u07E8\x03\x02\x02\x02\u07E9" +
		"\u07EA\x03\x02\x02\x02\u07EA\u07EB\x03\x02\x02\x02\u07EB\u0815\x07\u0374" +
		"\x02\x02\u07EC\u07EE\x07\u0284\x02\x02\u07ED\u07EF\x07\u035B\x02\x02\u07EE" +
		"\u07ED\x03\x02\x02\x02\u07EE\u07EF\x03\x02\x02\x02\u07EF\u07F0\x03\x02" +
		"\x02\x02\u07F0\u0815\t\x0F\x02\x02\u07F1\u07F3\x07\u0285\x02\x02\u07F2" +
		"\u07F4\x07\u035B\x02\x02\u07F3\u07F2\x03\x02\x02\x02\u07F3\u07F4\x03\x02" +
		"\x02\x02\u07F4\u07F5\x03\x02\x02\x02\u07F5\u0815\t\x0F\x02\x02\u07F6\u07F8" +
		"\x07\u0286\x02\x02\u07F7\u07F9\x07\u035B\x02\x02\u07F8\u07F7\x03\x02\x02" +
		"\x02\u07F8\u07F9\x03\x02\x02\x02\u07F9\u07FC\x03\x02\x02\x02\u07FA\u07FD" +
		"\x07,\x02\x02\u07FB\u07FD\x05\u02CC\u0167\x02\u07FC\u07FA\x03\x02\x02" +
		"\x02\u07FC\u07FB\x03\x02\x02\x02\u07FD\u0815\x03\x02\x02\x02\u07FE\u07FF" +
		"\x07\u0294\x02\x02\u07FF\u0801\x05\u029E\u0150\x02\u0800\u0802\x05h5\x02" +
		"\u0801\u0800\x03\x02\x02\x02\u0801\u0802\x03\x02\x02\x02\u0802\u0815\x03" +
		"\x02\x02\x02\u0803\u0804\x07\u0295\x02\x02\u0804\u0805\x07\u035B\x02\x02" +
		"\u0805\u0815\x05f4\x02\u0806\u0815\x05h5\x02\u0807\u0809\x07\u029B\x02" +
		"\x02\u0808\u080A\x07\u035B\x02\x02\u0809\u0808\x03\x02\x02\x02\u0809\u080A" +
		"\x03\x02\x02\x02\u080A\u080B\x03\x02\x02\x02\u080B\u0815\t\x1B\x02\x02" +
		"\u080C\u080E\x07\xB7\x02\x02\u080D\u080F\x07\u035B\x02\x02\u080E\u080D" +
		"\x03\x02\x02\x02\u080E\u080F\x03\x02\x02\x02\u080F\u0810\x03\x02\x02\x02" +
		"\u0810\u0811\x07\u0364\x02\x02\u0811\u0812\x05\u028E\u0148\x02\u0812\u0813" +
		"\x07\u0365\x02\x02\u0813\u0815\x03\x02\x02\x02\u0814\u075B\x03\x02\x02" +
		"\x02\u0814\u0762\x03\x02\x02\x02\u0814\u0767\x03\x02\x02\x02\u0814\u076C" +
		"\x03\x02\x02\x02\u0814\u0771\x03\x02\x02\x02\u0814\u0777\x03\x02\x02\x02" +
		"\u0814\u0781\x03\x02\x02\x02\u0814\u0787\x03\x02\x02\x02\u0814\u078E\x03" +
		"\x02\x02\x02\u0814\u0793\x03\x02\x02\x02\u0814\u0798\x03\x02\x02\x02\u0814" +
		"\u079D\x03\x02\x02\x02\u0814\u07A3\x03\x02\x02\x02\u0814\u07A8\x03\x02" +
		"\x02\x02\u0814\u07AD\x03\x02\x02\x02\u0814\u07B2\x03\x02\x02\x02\u0814" +
		"\u07B7\x03\x02\x02\x02\u0814\u07BC\x03\x02\x02\x02\u0814\u07C2\x03\x02" +
		"\x02\x02\u0814\u07C7\x03\x02\x02\x02\u0814\u07CC\x03\x02\x02\x02\u0814" +
		"\u07D1\x03\x02\x02\x02\u0814\u07D6\x03\x02\x02\x02\u0814\u07DB\x03\x02" +
		"\x02\x02\u0814\u07E0\x03\x02\x02\x02\u0814\u07E5\x03\x02\x02\x02\u0814" +
		"\u07E7\x03\x02\x02\x02\u0814\u07EC\x03\x02\x02\x02\u0814\u07F1\x03\x02" +
		"\x02\x02\u0814\u07F6\x03\x02\x02\x02\u0814\u07FE\x03\x02\x02\x02\u0814" +
		"\u0803\x03\x02\x02\x02\u0814\u0806\x03\x02\x02\x02\u0814\u0807\x03\x02" +
		"\x02\x02\u0814\u080C\x03\x02\x02\x02\u0815e\x03\x02\x02\x02\u0816\u0817" +
		"\t\"\x02\x02\u0817g\x03\x02\x02\x02\u0818\u0819\x07\u0289\x02\x02\u0819" +
		"\u081A\t\x17\x02\x02\u081Ai\x03\x02\x02\x02\u081B\u081C\x07\x84\x02\x02" +
		"\u081C\u081D\x07\x16\x02\x02\u081D\u0820\x05l7\x02\u081E\u081F\x07\u0212" +
		"\x02\x02\u081F\u0821\x05\u02CC\u0167\x02\u0820\u081E\x03\x02\x02\x02\u0820" +
		"\u0821\x03\x02\x02\x02\u0821\u0829\x03\x02\x02\x02\u0822\u0823\x07\u028E" +
		"\x02\x02\u0823\u0824\x07\x16\x02\x02\u0824\u0827\x05n8\x02\u0825\u0826" +
		"\x07\u028F\x02\x02\u0826\u0828\x05\u02CC\u0167\x02\u0827\u0825\x03\x02" +
		"\x02\x02\u0827\u0828\x03\x02\x02\x02\u0828\u082A\x03\x02\x02\x02\u0829" +
		"\u0822\x03\x02\x02\x02\u0829\u082A\x03\x02\x02\x02\u082A\u0836\x03\x02" +
		"\x02\x02\u082B\u082C\x07\u0364\x02\x02\u082C\u0831\x05p9\x02\u082D\u082E" +
		"\x07\u0366\x02\x02\u082E\u0830\x05p9\x02\u082F\u082D\x03\x02\x02\x02\u0830" +
		"\u0833\x03\x02\x02\x02\u0831\u082F\x03\x02\x02\x02\u0831\u0832\x03\x02" +
		"\x02\x02\u0832\u0834\x03\x02\x02\x02\u0833\u0831\x03\x02\x02\x02\u0834" +
		"\u0835\x07\u0365\x02\x02\u0835\u0837\x03\x02\x02\x02\u0836\u082B\x03\x02" +
		"\x02\x02\u0836\u0837\x03\x02\x02\x02\u0837k\x03\x02\x02\x02\u0838\u083A" +
		"\x07g\x02\x02\u0839\u0838\x03\x02\x02\x02\u0839\u083A\x03\x02\x02\x02" +
		"\u083A\u083B\x03\x02\x02\x02\u083B\u083C\x07\u01A4\x02\x02\u083C\u083D" +
		"\x07\u0364\x02\x02\u083D\u083E\x05\u0328\u0195\x02\u083E\u083F\x07\u0365" +
		"\x02\x02\u083F\u0867\x03\x02\x02\x02\u0840\u0842\x07g\x02\x02\u0841\u0840" +
		"\x03\x02\x02\x02\u0841\u0842\x03\x02\x02\x02\u0842\u0843\x03\x02\x02\x02" +
		"\u0843\u0847\x07^\x02\x02\u0844\u0845\x07\u0136\x02\x02\u0845\u0846\x07" +
		"\u035B\x02\x02\u0846\u0848\t#\x02\x02\u0847\u0844\x03\x02\x02\x02\u0847" +
		"\u0848\x03\x02\x02\x02\u0848\u0849\x03\x02\x02\x02\u0849\u084B\x07\u0364" +
		"\x02\x02\u084A\u084C\x05\u0298\u014D\x02\u084B\u084A\x03\x02\x02\x02\u084B" +
		"\u084C\x03\x02\x02\x02\u084C\u084D\x03\x02\x02\x02\u084D\u0867\x07\u0365" +
		"\x02\x02\u084E\u0858\x07\x88\x02\x02\u084F\u0850\x07\u0364\x02\x02\u0850" +
		"\u0851\x05\u0328\u0195\x02\u0851\u0852\x07\u0365\x02\x02\u0852\u0859\x03" +
		"\x02\x02\x02\u0853\u0854\x07\u0153\x02\x02\u0854\u0855\x07\u0364\x02\x02" +
		"\u0855\u0856\x05\u0298\u014D\x02\u0856\u0857\x07\u0365\x02\x02\u0857\u0859" +
		"\x03\x02\x02\x02\u0858\u084F\x03\x02\x02\x02\u0858\u0853\x03\x02\x02\x02" +
		"\u0859\u0867\x03\x02\x02\x02\u085A\u0864\x07\u01C3\x02\x02\u085B\u085C" +
		"\x07\u0364\x02\x02\u085C\u085D\x05\u0328\u0195\x02\u085D\u085E\x07\u0365" +
		"\x02\x02\u085E\u0865\x03\x02\x02\x02\u085F\u0860\x07\u0153\x02\x02\u0860" +
		"\u0861\x07\u0364\x02\x02\u0861\u0862\x05\u0298\u014D\x02\u0862\u0863\x07" +
		"\u0365\x02\x02\u0863\u0865\x03\x02\x02\x02\u0864\u085B\x03\x02\x02\x02" +
		"\u0864\u085F\x03\x02\x02\x02\u0865\u0867\x03\x02\x02\x02\u0866\u0839\x03" +
		"\x02\x02\x02\u0866\u0841\x03\x02\x02\x02\u0866\u084E\x03\x02\x02\x02\u0866" +
		"\u085A\x03\x02\x02\x02\u0867m\x03\x02\x02\x02\u0868\u086A\x07g\x02\x02" +
		"\u0869\u0868\x03\x02\x02\x02\u0869\u086A\x03\x02\x02\x02\u086A\u086B\x03" +
		"\x02\x02\x02\u086B\u086C\x07\u01A4\x02\x02\u086C\u086D\x07\u0364\x02\x02" +
		"\u086D\u086E\x05\u0328\u0195\x02\u086E\u086F\x07\u0365\x02\x02\u086F\u087E" +
		"\x03\x02\x02\x02\u0870\u0872\x07g\x02\x02\u0871\u0870\x03\x02\x02\x02" +
		"\u0871\u0872\x03\x02\x02\x02\u0872\u0873\x03\x02\x02\x02\u0873\u0877\x07" +
		"^\x02\x02\u0874\u0875\x07\u0136\x02\x02\u0875\u0876\x07\u035B\x02\x02" +
		"\u0876\u0878\t#\x02\x02\u0877\u0874\x03\x02\x02\x02\u0877\u0878\x03\x02" +
		"\x02\x02\u0878\u0879\x03\x02\x02\x02\u0879\u087A\x07\u0364\x02\x02\u087A" +
		"\u087B\x05\u0298\u014D\x02\u087B\u087C\x07\u0365\x02\x02\u087C\u087E\x03" +
		"\x02\x02\x02\u087D\u0869\x03\x02\x02\x02\u087D\u0871\x03\x02\x02\x02\u087E" +
		"o\x03\x02\x02\x02\u087F\u0880\x07\x84\x02\x02\u0880\u0881\x05\u02A4\u0153" +
		"\x02\u0881\u0882\x07\xBF\x02\x02\u0882\u0883\x07\u01C1\x02\x02\u0883\u0884" +
		"\x07\u0298\x02\x02\u0884\u0885\x07\u0364\x02\x02\u0885\u088A\x05r:\x02" +
		"\u0886\u0887\x07\u0366\x02\x02\u0887\u0889\x05r:\x02\u0888\u0886\x03\x02" +
		"\x02\x02\u0889\u088C\x03\x02\x02\x02\u088A\u0888\x03\x02\x02\x02\u088A" +
		"\u088B\x03\x02\x02\x02\u088B\u088D\x03\x02\x02\x02\u088C\u088A\x03\x02" +
		"\x02\x02\u088D\u0891\x07\u0365\x02\x02\u088E\u0890\x05x=\x02\u088F\u088E" +
		"\x03\x02\x02\x02\u0890\u0893\x03\x02\x02\x02\u0891\u088F\x03\x02\x02\x02" +
		"\u0891\u0892\x03\x02\x02\x02\u0892\u089F\x03\x02\x02\x02\u0893\u0891\x03" +
		"\x02\x02\x02\u0894\u0895\x07\u0364\x02\x02\u0895\u089A\x05v<\x02\u0896" +
		"\u0897\x07\u0366\x02\x02\u0897\u0899\x05v<\x02\u0898\u0896\x03\x02\x02" +
		"\x02\u0899\u089C\x03\x02\x02\x02\u089A\u0898\x03\x02\x02\x02\u089A\u089B" +
		"\x03\x02\x02\x02\u089B\u089D\x03\x02\x02\x02\u089C\u089A\x03\x02\x02\x02" +
		"\u089D\u089E\x07\u0365\x02\x02\u089E\u08A0\x03\x02\x02\x02\u089F\u0894" +
		"\x03\x02\x02\x02\u089F\u08A0\x03\x02\x02\x02\u08A0\u0912\x03\x02\x02\x02" +
		"\u08A1\u08A2\x07\x84\x02\x02\u08A2\u08A3\x05\u02A4\u0153\x02\u08A3\u08A4" +
		"\x07\xBF\x02\x02\u08A4\u08A5\x07\u01C1\x02\x02\u08A5\u08A6\x07\u0298\x02" +
		"\x02\u08A6\u08AA\x05r:\x02\u08A7\u08A9\x05x=\x02\u08A8\u08A7\x03\x02\x02" +
		"\x02\u08A9\u08AC\x03\x02\x02\x02\u08AA\u08A8\x03\x02\x02\x02\u08AA\u08AB" +
		"\x03\x02\x02\x02\u08AB\u08B8\x03\x02\x02\x02\u08AC\u08AA\x03\x02\x02\x02" +
		"\u08AD\u08AE\x07\u0364\x02\x02\u08AE\u08B3\x05v<\x02\u08AF\u08B0\x07\u0366" +
		"\x02\x02\u08B0\u08B2\x05v<\x02\u08B1\u08AF\x03\x02\x02\x02\u08B2\u08B5" +
		"\x03\x02\x02\x02\u08B3\u08B1\x03\x02\x02\x02\u08B3\u08B4\x03\x02\x02\x02" +
		"\u08B4\u08B6\x03\x02\x02\x02\u08B5\u08B3\x03\x02\x02\x02\u08B6\u08B7\x07" +
		"\u0365\x02\x02\u08B7\u08B9\x03\x02\x02\x02\u08B8\u08AD\x03\x02\x02\x02" +
		"\u08B8\u08B9\x03\x02\x02\x02\u08B9\u0912\x03\x02\x02\x02\u08BA\u08BB\x07" +
		"\x84\x02\x02\u08BB\u08BC\x05\u02A4\u0153\x02\u08BC\u08BD\x07\xBF\x02\x02" +
		"\u08BD\u08BE\x07R\x02\x02\u08BE\u08BF\x07\u0364\x02\x02\u08BF\u08C4\x05" +
		"r:\x02\u08C0\u08C1\x07\u0366\x02\x02\u08C1\u08C3\x05r:\x02\u08C2\u08C0" +
		"\x03\x02\x02\x02\u08C3\u08C6\x03\x02\x02\x02\u08C4\u08C2\x03\x02\x02\x02" +
		"\u08C4\u08C5\x03\x02\x02\x02\u08C5\u08C7\x03\x02\x02\x02\u08C6\u08C4\x03" +
		"\x02\x02\x02\u08C7\u08CB\x07\u0365\x02\x02\u08C8\u08CA\x05x=\x02\u08C9" +
		"\u08C8\x03\x02\x02\x02\u08CA\u08CD\x03\x02\x02\x02\u08CB\u08C9\x03\x02" +
		"\x02\x02\u08CB\u08CC\x03\x02\x02\x02\u08CC\u08D9\x03\x02\x02\x02\u08CD" +
		"\u08CB\x03\x02\x02\x02\u08CE\u08CF\x07\u0364\x02\x02\u08CF\u08D4\x05v" +
		"<\x02\u08D0\u08D1\x07\u0366\x02\x02\u08D1\u08D3\x05v<\x02\u08D2\u08D0" +
		"\x03\x02\x02\x02\u08D3\u08D6\x03\x02\x02\x02\u08D4\u08D2\x03\x02\x02\x02" +
		"\u08D4\u08D5\x03\x02\x02\x02\u08D5\u08D7\x03\x02\x02\x02\u08D6\u08D4\x03" +
		"\x02\x02\x02\u08D7\u08D8\x07\u0365\x02\x02\u08D8\u08DA\x03\x02\x02\x02" +
		"\u08D9\u08CE\x03\x02\x02\x02\u08D9\u08DA\x03\x02\x02\x02\u08DA\u0912\x03" +
		"\x02\x02\x02\u08DB\u08DC\x07\x84\x02\x02\u08DC\u08DD\x05\u02A4\u0153\x02" +
		"\u08DD\u08DE\x07\xBF\x02\x02\u08DE\u08DF\x07R\x02\x02\u08DF\u08E0\x07" +
		"\u0364\x02\x02\u08E0\u08E5\x05t;\x02\u08E1\u08E2\x07\u0366\x02\x02\u08E2" +
		"\u08E4\x05t;\x02\u08E3\u08E1\x03\x02\x02\x02\u08E4\u08E7\x03\x02\x02\x02" +
		"\u08E5\u08E3\x03\x02\x02\x02\u08E5\u08E6\x03\x02\x02\x02\u08E6\u08E8\x03" +
		"\x02\x02\x02\u08E7\u08E5\x03\x02\x02\x02\u08E8\u08EC\x07\u0365\x02\x02" +
		"\u08E9\u08EB\x05x=\x02\u08EA\u08E9\x03\x02\x02\x02\u08EB\u08EE\x03\x02" +
		"\x02\x02\u08EC\u08EA\x03\x02\x02\x02\u08EC\u08ED\x03\x02\x02\x02\u08ED" +
		"\u08FA\x03\x02\x02\x02\u08EE\u08EC\x03\x02\x02\x02\u08EF\u08F0\x07\u0364" +
		"\x02\x02\u08F0\u08F5\x05v<\x02\u08F1\u08F2\x07\u0366\x02\x02\u08F2\u08F4" +
		"\x05v<\x02\u08F3\u08F1\x03\x02\x02\x02\u08F4\u08F7\x03\x02\x02\x02\u08F5" +
		"\u08F3\x03\x02\x02\x02\u08F5\u08F6\x03\x02\x02\x02\u08F6\u08F8\x03\x02" +
		"\x02\x02\u08F7\u08F5\x03\x02\x02\x02\u08F8\u08F9\x07\u0365\x02\x02\u08F9" +
		"\u08FB\x03\x02\x02\x02\u08FA\u08EF\x03\x02\x02\x02\u08FA\u08FB\x03\x02" +
		"\x02\x02\u08FB\u0912\x03\x02\x02\x02\u08FC\u08FD\x07\x84\x02\x02\u08FD" +
		"\u0901\x05\u02A4\u0153\x02\u08FE\u0900\x05x=\x02\u08FF\u08FE\x03\x02\x02" +
		"\x02\u0900\u0903\x03\x02\x02\x02\u0901\u08FF\x03\x02\x02\x02\u0901\u0902" +
		"\x03\x02\x02\x02\u0902\u090F\x03\x02\x02\x02\u0903\u0901\x03\x02\x02\x02" +
		"\u0904\u0905\x07\u0364\x02\x02\u0905\u090A\x05v<\x02\u0906\u0907\x07\u0366" +
		"\x02\x02\u0907\u0909\x05v<\x02\u0908\u0906\x03\x02\x02\x02\u0909\u090C" +
		"\x03\x02\x02\x02\u090A\u0908\x03\x02\x02\x02\u090A\u090B\x03\x02\x02\x02" +
		"\u090B\u090D\x03\x02\x02\x02\u090C\u090A\x03\x02\x02\x02\u090D\u090E\x07" +
		"\u0365\x02\x02\u090E\u0910\x03\x02\x02\x02\u090F\u0904\x03\x02\x02\x02" +
		"\u090F\u0910\x03\x02\x02\x02\u0910\u0912\x03\x02\x02\x02\u0911\u087F\x03" +
		"\x02\x02\x02\u0911\u08A1\x03\x02\x02\x02\u0911\u08BA\x03\x02\x02\x02\u0911" +
		"\u08DB\x03\x02\x02\x02\u0911\u08FC\x03\x02\x02\x02\u0912q\x03\x02\x02" +
		"\x02\u0913\u0917\x05\u02D8\u016D\x02\u0914\u0917\x05\u0328\u0195\x02\u0915" +
		"\u0917\x07q\x02\x02\u0916\u0913\x03\x02\x02\x02\u0916\u0914\x03\x02\x02" +
		"\x02\u0916\u0915\x03\x02\x02\x02\u0917s\x03\x02\x02\x02\u0918\u0919\x07" +
		"\u0364\x02\x02\u0919\u091C\x05r:\x02\u091A\u091B\x07\u0366\x02\x02\u091B" +
		"\u091D\x05r:\x02\u091C\u091A\x03\x02\x02\x02\u091D\u091E\x03\x02\x02\x02" +
		"\u091E\u091C\x03\x02\x02\x02\u091E\u091F\x03\x02\x02\x02\u091F\u0920\x03" +
		"\x02\x02\x02\u0920\u0921\x07\u0365\x02\x02\u0921u\x03\x02\x02\x02\u0922" +
		"\u0923\x07\u028E\x02\x02\u0923\u0927\x05\u02C6\u0164\x02\u0924\u0926\x05" +
		"x=\x02\u0925\u0924\x03\x02\x02\x02\u0926\u0929\x03\x02\x02\x02\u0927\u0925" +
		"\x03\x02\x02\x02\u0927\u0928\x03\x02\x02\x02\u0928w\x03\x02\x02\x02\u0929" +
		"\u0927\x03\x02\x02\x02\u092A\u092C\x07,\x02\x02\u092B\u092A\x03\x02\x02" +
		"\x02\u092B\u092C\x03\x02\x02\x02\u092C\u092E\x03\x02\x02\x02\u092D\u092F" +
		"\x07\u0289\x02\x02\u092E\u092D\x03\x02\x02\x02\u092E\u092F\x03\x02\x02" +
		"\x02\u092F\u0930\x03\x02\x02\x02\u0930\u0932\x07\u017E\x02\x02\u0931\u0933" +
		"\x07\u035B\x02\x02\u0932\u0931\x03\x02\x02\x02\u0932\u0933\x03\x02\x02" +
		"\x02\u0933\u0934\x03\x02\x02\x02\u0934\u095B\x05\u02B8\u015D\x02\u0935" +
		"\u0937\x07\u0156\x02\x02\u0936\u0938\x07\u035B\x02\x02\u0937\u0936\x03" +
		"\x02\x02\x02\u0937\u0938\x03\x02\x02\x02\u0938\u0939\x03\x02\x02\x02\u0939" +
		"\u095B\x07\u0374\x02\x02\u093A\u093B\x07\u016A\x02\x02\u093B\u093D\x07" +
		"\u0171\x02\x02\u093C\u093E\x07\u035B\x02\x02\u093D\u093C\x03\x02\x02\x02" +
		"\u093D\u093E\x03\x02\x02\x02\u093E\u093F\x03\x02\x02\x02\u093F\u095B\x07" +
		"\u0374\x02\x02\u0940\u0941\x07T\x02\x02\u0941\u0943\x07\u0171\x02\x02" +
		"\u0942\u0944\x07\u035B\x02\x02\u0943\u0942\x03\x02\x02\x02\u0943\u0944" +
		"\x03\x02\x02\x02\u0944\u0945\x03\x02\x02\x02\u0945\u095B\x07\u0374\x02" +
		"\x02\u0946\u0948\x07\u01E2\x02\x02\u0947\u0949\x07\u035B\x02\x02\u0948" +
		"\u0947\x03\x02\x02\x02\u0948\u0949\x03\x02\x02\x02\u0949\u094A\x03\x02" +
		"\x02\x02\u094A\u095B\x05\u02CC\u0167\x02\u094B\u094D\x07\u01EC\x02\x02" +
		"\u094C\u094E\x07\u035B\x02\x02\u094D\u094C\x03\x02\x02\x02\u094D\u094E" +
		"\x03\x02\x02\x02\u094E\u094F\x03\x02\x02\x02\u094F\u095B\x05\u02CC\u0167" +
		"\x02\u0950\u0952\x07\u0294\x02\x02\u0951\u0953\x07\u035B\x02\x02\u0952" +
		"\u0951\x03\x02\x02\x02\u0952\u0953\x03\x02\x02\x02\u0953\u0954\x03\x02" +
		"\x02\x02\u0954\u095B\x05\u029E\u0150\x02\u0955\u0957\x07\u01FA\x02\x02" +
		"\u0956\u0958\x07\u035B\x02\x02\u0957\u0956\x03\x02\x02\x02\u0957\u0958" +
		"\x03\x02\x02\x02\u0958\u0959\x03\x02\x02\x02\u0959\u095B\x05\u02C6\u0164" +
		"\x02\u095A\u092B\x03\x02\x02\x02\u095A\u0935\x03\x02\x02\x02\u095A\u093A" +
		"\x03\x02\x02\x02\u095A\u0940\x03\x02\x02\x02\u095A\u0946\x03\x02\x02\x02" +
		"\u095A\u094B\x03\x02\x02\x02\u095A\u0950\x03\x02\x02\x02\u095A\u0955\x03" +
		"\x02\x02\x02\u095By\x03\x02\x02\x02\u095C\u095D\x07\n\x02\x02\u095D\u095F" +
		"\t\x02\x02\x02\u095E\u0960\x05\u0278\u013D\x02\u095F\u095E\x03\x02\x02" +
		"\x02\u095F\u0960\x03\x02\x02\x02\u0960\u0962\x03\x02\x02\x02\u0961\u0963" +
		"\x056\x1C\x02\u0962\u0961\x03\x02\x02\x02\u0963\u0964\x03\x02\x02\x02" +
		"\u0964\u0962\x03\x02\x02\x02\u0964\u0965\x03\x02\x02\x02\u0965\u096F\x03" +
		"\x02\x02\x02\u0966\u0967\x07\n\x02\x02\u0967\u0968\t\x02\x02\x02\u0968" +
		"\u0969\x05\u0278\u013D\x02\u0969\u096A\x07\u02A7\x02\x02\u096A\u096B\x07" +
		"\u016A\x02\x02\u096B\u096C\x07\u0171\x02\x02\u096C\u096D\x07\u01F2\x02" +
		"\x02\u096D\u096F\x03\x02\x02\x02\u096E\u095C\x03\x02\x02\x02\u096E\u0966" +
		"\x03\x02\x02\x02\u096F{\x03\x02\x02\x02\u0970\u0972\x07\n\x02\x02\u0971" +
		"\u0973\x05<\x1F\x02\u0972\u0971\x03\x02\x02\x02\u0972\u0973\x03\x02\x02" +
		"\x02\u0973\u0974\x03\x02\x02\x02\u0974\u0975\x07\u0183\x02\x02\u0975\u0979" +
		"\x05\u02C2\u0162\x02\u0976\u0977\x07y\x02\x02\u0977\u0978\x07\u0250\x02" +
		"\x02\u0978\u097A\x05> \x02\u0979\u0976\x03\x02\x02\x02\u0979\u097A\x03" +
		"\x02\x02\x02\u097A\u0981\x03\x02\x02\x02\u097B\u097C\x07y\x02\x02\u097C" +
		"\u097E\x07\u0159\x02\x02\u097D\u097F\x07t\x02\x02\u097E\u097D\x03\x02" +
		"\x02\x02\u097E\u097F\x03\x02\x02\x02\u097F\u0980\x03\x02\x02\x02\u0980" +
		"\u0982\x07\u021F\x02\x02\u0981\u097B\x03\x02\x02\x02\u0981\u0982\x03\x02" +
		"\x02\x02\u0982\u0986\x03\x02\x02\x02\u0983\u0984\x07\x8F\x02\x02\u0984" +
		"\u0985\x07\xB2\x02\x02\u0985\u0987\x05\u02C2\u0162\x02\u0986\u0983\x03" +
		"\x02\x02\x02\u0986\u0987\x03\x02\x02\x02\u0987\u0989\x03\x02\x02\x02\u0988" +
		"\u098A\x05F$\x02\u0989\u0988\x03\x02\x02\x02\u0989\u098A\x03\x02\x02\x02" +
		"\u098A\u098D\x03\x02\x02\x02\u098B\u098C\x07\u0156\x02\x02\u098C\u098E" +
		"\x07\u0374\x02\x02\u098D\u098B\x03\x02\x02\x02\u098D\u098E\x03\x02\x02" +
		"\x02\u098E\u0991\x03\x02\x02\x02\u098F\u0990\x07\u0175\x02\x02\u0990\u0992" +
		"\x05\u01A8\xD5\x02\u0991\u098F\x03\x02\x02\x02\u0991\u0992\x03\x02\x02" +
		"\x02\u0992}\x03\x02\x02\x02\u0993\u0994\x07\n\x02\x02\u0994\u0995\x07" +
		"\u019B\x02\x02\u0995\u0999\x05\u027C\u013F\x02\u0996\u0998\x05N(\x02\u0997" +
		"\u0996\x03\x02\x02\x02\u0998\u099B\x03\x02\x02\x02\u0999\u0997\x03\x02" +
		"\x02\x02\u0999\u099A\x03\x02\x02\x02\u099A\x7F\x03\x02\x02\x02\u099B\u0999" +
		"\x03\x02\x02\x02\u099C\u099D\x07\n\x02\x02\u099D\u099E";
	private static readonly _serializedATNSegment7: string =
		"\x07\u01B3\x02\x02\u099E\u099F\x07\u024B\x02\x02\u099F\u09A0\x07\u0323" +
		"\x02\x02\u09A0\u09A1\x07\u01C7\x02\x02\u09A1\u09A2\x07^\x02\x02\u09A2" +
		"\x81\x03\x02\x02\x02\u09A3\u09A4\x07\n\x02\x02\u09A4\u09A5\x07\u01C5\x02" +
		"\x02\u09A5\u09A6\x07L\x02\x02\u09A6\u09A7\x05\u02C6\u0164\x02\u09A7\u09A8" +
		"\x07\b\x02\x02\u09A8\u09A9\x07\u02A1\x02\x02\u09A9\u09AF\x07\u0374\x02" +
		"\x02\u09AA\u09AC\x07\u01AE\x02\x02\u09AB\u09AD\x07\u035B\x02\x02\u09AC" +
		"\u09AB\x03\x02\x02\x02\u09AC\u09AD\x03\x02\x02\x02\u09AD\u09AE\x03\x02" +
		"\x02\x02\u09AE\u09B0\x05\u02CE\u0168\x02\u09AF\u09AA\x03\x02\x02\x02\u09AF" +
		"\u09B0\x03\x02\x02\x02\u09B0\u09B2\x03\x02\x02\x02\u09B1\u09B3\x07\u02B1" +
		"\x02\x02\u09B2\u09B1\x03\x02\x02\x02\u09B2\u09B3\x03\x02\x02\x02\u09B3" +
		"\u09B4\x03\x02\x02\x02\u09B4\u09B6\x07\u017E\x02\x02\u09B5\u09B7\x07\u035B" +
		"\x02\x02\u09B6\u09B5\x03\x02\x02\x02\u09B6\u09B7\x03\x02\x02\x02\u09B7" +
		"\u09B8\x03\x02\x02\x02\u09B8\u09B9\x05\u02B8\u015D\x02\u09B9\x83\x03\x02" +
		"\x02\x02\u09BA\u09BB\x07\n\x02\x02\u09BB\u09BC\x07\x86\x02\x02\u09BC\u09C0" +
		"\x05\u02C2\u0162\x02\u09BD\u09BF\x05N(\x02\u09BE\u09BD\x03\x02\x02\x02" +
		"\u09BF\u09C2\x03\x02\x02\x02\u09C0\u09BE\x03\x02\x02\x02\u09C0\u09C1\x03" +
		"\x02\x02\x02\u09C1\x85\x03\x02\x02\x02\u09C2\u09C0\x03\x02\x02\x02\u09C3" +
		"\u09C4\x07\n\x02\x02\u09C4\u09C5\x07\u0252\x02\x02\u09C5\u09C6\x05\u02C6" +
		"\u0164\x02\u09C6\u09C7\x07\u0208\x02\x02\u09C7\u09C8\x07\u0364\x02\x02" +
		"\u09C8\u09CD\x05P)\x02\u09C9\u09CA\x07\u0366\x02\x02\u09CA\u09CC\x05P" +
		")\x02\u09CB\u09C9\x03\x02\x02\x02\u09CC\u09CF\x03\x02\x02\x02\u09CD\u09CB" +
		"\x03\x02\x02\x02\u09CD\u09CE\x03\x02\x02\x02\u09CE\u09D0\x03\x02\x02\x02" +
		"\u09CF\u09CD\x03\x02\x02\x02\u09D0\u09D1\x07\u0365\x02\x02\u09D1\x87\x03" +
		"\x02\x02\x02\u09D2\u09D3\x07\n\x02\x02\u09D3\u09D4\x07\xAF\x02\x02\u09D4" +
		"\u09DD\x05\u0290\u0149\x02\u09D5\u09DA\x05\x8EH\x02\u09D6\u09D7\x07\u0366" +
		"\x02\x02\u09D7\u09D9\x05\x8EH\x02\u09D8\u09D6\x03\x02\x02\x02\u09D9\u09DC" +
		"\x03\x02\x02\x02\u09DA\u09D8\x03\x02\x02\x02\u09DA\u09DB\x03\x02\x02\x02" +
		"\u09DB\u09DE\x03\x02\x02\x02\u09DC\u09DA\x03\x02\x02\x02\u09DD\u09D5\x03" +
		"\x02\x02\x02\u09DD\u09DE\x03\x02\x02\x02\u09DE\u09E6\x03\x02\x02\x02\u09DF" +
		"\u09E3\x05\x90I\x02\u09E0\u09E2\x05\x90I\x02\u09E1\u09E0\x03\x02\x02\x02" +
		"\u09E2\u09E5\x03\x02\x02\x02\u09E3\u09E1\x03\x02\x02\x02\u09E3\u09E4\x03" +
		"\x02\x02\x02\u09E4\u09E7\x03\x02\x02\x02\u09E5\u09E3\x03\x02\x02\x02\u09E6" +
		"\u09DF\x03\x02\x02\x02\u09E6\u09E7\x03\x02\x02\x02\u09E7\x89\x03\x02\x02" +
		"\x02\u09E8\u09EA\x07\n\x02\x02\u09E9\u09EB\x07\xB6\x02\x02\u09EA\u09E9" +
		"\x03\x02\x02\x02\u09EA\u09EB\x03\x02\x02\x02\u09EB\u09EC\x03\x02\x02\x02" +
		"\u09EC\u09ED\x07\u0294\x02\x02\u09ED\u09EE\x05\u029E\u0150\x02\u09EE\u09EF" +
		"\t$\x02\x02\u09EF\u09F0\x07\u016B\x02\x02\u09F0\u09F6\x07\u0374\x02\x02" +
		"\u09F1\u09F3\x07\u01AE\x02\x02\u09F2\u09F4\x07\u035B\x02\x02\u09F3\u09F2" +
		"\x03\x02\x02\x02\u09F3\u09F4\x03\x02\x02\x02\u09F4\u09F5\x03\x02\x02\x02" +
		"\u09F5\u09F7\x05\u02CE\u0168\x02\u09F6\u09F1\x03\x02\x02\x02\u09F6\u09F7" +
		"\x03\x02\x02\x02\u09F7\u09F9\x03\x02\x02\x02\u09F8\u09FA\x07\u02B1\x02" +
		"\x02\u09F9\u09F8\x03\x02\x02\x02\u09F9\u09FA\x03\x02\x02\x02\u09FA\u09FE" +
		"\x03\x02\x02\x02\u09FB\u09FC\x07\x8F\x02\x02\u09FC\u09FD\x07\xB2\x02\x02" +
		"\u09FD\u09FF\x05\u029C\u014F\x02\u09FE\u09FB\x03\x02\x02\x02\u09FE\u09FF" +
		"\x03\x02\x02\x02\u09FF\u0A05\x03\x02\x02\x02\u0A00\u0A02\x07\u013C\x02" +
		"\x02\u0A01\u0A03\x07\u035B\x02\x02\u0A02\u0A01\x03\x02\x02\x02\u0A02\u0A03" +
		"\x03\x02\x02\x02\u0A03\u0A04\x03\x02\x02\x02\u0A04\u0A06\x05\u02CE\u0168" +
		"\x02\u0A05\u0A00\x03\x02\x02\x02\u0A05\u0A06\x03\x02\x02\x02\u0A06\u0A09" +
		"\x03\x02\x02\x02\u0A07\u0A08\x07\x9D\x02\x02\u0A08\u0A0A\t%\x02\x02\u0A09" +
		"\u0A07\x03\x02\x02\x02\u0A09\u0A0A\x03\x02\x02\x02\u0A0A\u0A10\x03\x02" +
		"\x02\x02\u0A0B\u0A0D\x07\u017A\x02\x02\u0A0C\u0A0E\x07\u035B\x02\x02\u0A0D" +
		"\u0A0C\x03\x02\x02\x02\u0A0D\u0A0E\x03\x02\x02\x02\u0A0E\u0A0F\x03\x02" +
		"\x02\x02\u0A0F\u0A11\x07\u0374\x02\x02\u0A10\u0A0B\x03\x02\x02\x02\u0A10" +
		"\u0A11\x03\x02\x02\x02\u0A11\u0A17\x03\x02\x02\x02\u0A12\u0A14\x07\u017E" +
		"\x02\x02\u0A13\u0A15\x07\u035B\x02\x02\u0A14\u0A13\x03\x02\x02\x02\u0A14" +
		"\u0A15\x03\x02\x02\x02\u0A15\u0A16\x03\x02\x02\x02\u0A16\u0A18\x05\u02B8" +
		"\u015D\x02\u0A17\u0A12\x03\x02\x02\x02\u0A17\u0A18\x03\x02\x02\x02\u0A18" +
		"\u0A1E\x03\x02\x02\x02\u0A19\u0A1B\x07\u033B\x02\x02\u0A1A\u0A1C\x07\u035B" +
		"\x02\x02\u0A1B\u0A1A\x03\x02\x02\x02\u0A1B\u0A1C\x03\x02\x02\x02\u0A1C" +
		"\u0A1D\x03\x02\x02\x02\u0A1D\u0A1F\x07\u0374\x02\x02\u0A1E\u0A19\x03\x02" +
		"\x02\x02\u0A1E\u0A1F\x03\x02\x02\x02\u0A1F\x8B\x03\x02\x02\x02\u0A20\u0A24" +
		"\x07\n\x02\x02\u0A21\u0A22\x07\u0136\x02\x02\u0A22\u0A23\x07\u035B\x02" +
		"\x02\u0A23\u0A25\t\f\x02\x02\u0A24\u0A21\x03\x02\x02\x02\u0A24\u0A25\x03" +
		"\x02\x02\x02\u0A25\u0A27\x03\x02\x02\x02\u0A26\u0A28\x05<\x1F\x02\u0A27" +
		"\u0A26\x03\x02\x02\x02\u0A27\u0A28\x03\x02\x02\x02\u0A28\u0A2C\x03\x02" +
		"\x02\x02\u0A29\u0A2A\x07\xA4\x02\x02\u0A2A\u0A2B\x07\u0251\x02\x02\u0A2B" +
		"\u0A2D\t\r\x02\x02\u0A2C\u0A29\x03\x02\x02\x02\u0A2C\u0A2D\x03\x02\x02" +
		"\x02\u0A2D\u0A2E\x03\x02\x02\x02\u0A2E\u0A2F\x07\u02AE\x02\x02\u0A2F\u0A34" +
		"\x05\u0280\u0141\x02\u0A30\u0A31\x07\u0364\x02\x02\u0A31\u0A32\x05\u0298" +
		"\u014D\x02\u0A32\u0A33\x07\u0365\x02\x02\u0A33\u0A35\x03\x02\x02\x02\u0A34" +
		"\u0A30\x03\x02\x02\x02\u0A34\u0A35\x03\x02\x02\x02\u0A35\u0A36\x03\x02" +
		"\x02\x02\u0A36\u0A37\x07\x0F\x02\x02\u0A37\u0A3E\x05\xCEh\x02\u0A38\u0A3A" +
		"\x07\xC4\x02\x02\u0A39\u0A3B\t\x0E\x02\x02\u0A3A\u0A39\x03\x02\x02\x02" +
		"\u0A3A\u0A3B\x03\x02\x02\x02\u0A3B\u0A3C\x03\x02\x02\x02\u0A3C\u0A3D\x07" +
		"\x1D\x02\x02\u0A3D\u0A3F\x07{\x02\x02\u0A3E\u0A38\x03\x02\x02\x02\u0A3E" +
		"\u0A3F\x03\x02\x02\x02\u0A3F\x8D\x03\x02\x02\x02\u0A40\u0A47\x05d3\x02" +
		"\u0A41\u0A43\x07\u0366\x02\x02\u0A42\u0A41\x03\x02\x02\x02\u0A42\u0A43" +
		"\x03\x02\x02\x02\u0A43\u0A44\x03\x02\x02\x02\u0A44\u0A46\x05d3\x02\u0A45" +
		"\u0A42\x03\x02\x02\x02\u0A46\u0A49\x03\x02\x02\x02\u0A47\u0A45\x03\x02" +
		"\x02\x02\u0A47\u0A48\x03\x02\x02\x02\u0A48\u0B49\x03\x02\x02\x02\u0A49" +
		"\u0A47\x03\x02\x02\x02\u0A4A\u0A4C\x07\b\x02\x02\u0A4B\u0A4D\x07\x1F\x02" +
		"\x02\u0A4C\u0A4B\x03\x02\x02\x02\u0A4C\u0A4D\x03\x02\x02\x02\u0A4D\u0A4E" +
		"\x03\x02\x02\x02\u0A4E\u0A4F\x05\u029A\u014E\x02\u0A4F\u0A53\x05Z.\x02" +
		"\u0A50\u0A54\x07\u0194\x02\x02\u0A51\u0A52\x07\u0134\x02\x02\u0A52\u0A54" +
		"\x05\u029A\u014E\x02\u0A53\u0A50\x03\x02\x02\x02\u0A53\u0A51\x03\x02\x02" +
		"\x02\u0A53\u0A54\x03\x02\x02\x02\u0A54\u0B49\x03\x02\x02\x02\u0A55\u0A57" +
		"\x07\b\x02\x02\u0A56\u0A58\x07\x1F\x02\x02\u0A57\u0A56\x03\x02\x02\x02" +
		"\u0A57\u0A58\x03\x02\x02\x02\u0A58\u0A59\x03\x02\x02\x02\u0A59\u0A5A\x07" +
		"\u0364\x02\x02\u0A5A\u0A5B\x05\u029A\u014E\x02\u0A5B\u0A62\x05Z.\x02\u0A5C" +
		"\u0A5D\x07\u0366\x02\x02\u0A5D\u0A5E\x05\u029A\u014E\x02\u0A5E\u0A5F\x05" +
		"Z.\x02\u0A5F\u0A61\x03\x02\x02\x02\u0A60\u0A5C\x03\x02\x02\x02\u0A61\u0A64" +
		"\x03\x02\x02\x02\u0A62\u0A60\x03\x02\x02\x02\u0A62\u0A63\x03\x02\x02\x02" +
		"\u0A63\u0A65\x03\x02\x02\x02\u0A64\u0A62\x03\x02\x02\x02\u0A65\u0A66\x07" +
		"\u0365\x02\x02\u0A66\u0B49\x03\x02\x02\x02\u0A67\u0A68\x07\b\x02\x02\u0A68" +
		"\u0A6A\t\x14\x02\x02\u0A69\u0A6B\x05\u0286\u0144\x02\u0A6A\u0A69\x03\x02" +
		"\x02\x02\u0A6A\u0A6B\x03\x02\x02\x02\u0A6B\u0A6D\x03\x02\x02\x02\u0A6C" +
		"\u0A6E\x05H%\x02\u0A6D\u0A6C\x03\x02\x02\x02\u0A6D\u0A6E\x03\x02\x02\x02" +
		"\u0A6E\u0A6F\x03\x02\x02\x02\u0A6F\u0A73\x05\u02E6\u0174\x02\u0A70\u0A72" +
		"\x05J&\x02\u0A71\u0A70\x03\x02\x02\x02\u0A72\u0A75\x03\x02\x02\x02\u0A73" +
		"\u0A71\x03\x02\x02\x02\u0A73\u0A74\x03\x02\x02\x02\u0A74\u0B49\x03\x02" +
		"\x02\x02\u0A75\u0A73\x03\x02\x02\x02\u0A76\u0A77\x07\b\x02\x02\u0A77\u0A79" +
		"\t\x15\x02\x02\u0A78\u0A7A\t\x14\x02\x02\u0A79\u0A78\x03\x02\x02\x02\u0A79" +
		"\u0A7A\x03\x02\x02\x02\u0A7A\u0A7C\x03\x02\x02\x02\u0A7B\u0A7D\x05\u0286" +
		"\u0144\x02\u0A7C\u0A7B\x03\x02\x02\x02\u0A7C\u0A7D\x03\x02\x02\x02\u0A7D" +
		"\u0A7E\x03\x02\x02\x02\u0A7E\u0A82\x05\u02E6\u0174\x02\u0A7F\u0A81\x05" +
		"J&\x02\u0A80\u0A7F\x03\x02\x02\x02\u0A81\u0A84\x03\x02\x02\x02\u0A82\u0A80" +
		"\x03\x02\x02\x02\u0A82\u0A83\x03\x02\x02\x02\u0A83\u0B49\x03\x02\x02\x02" +
		"\u0A84\u0A82\x03\x02\x02\x02\u0A85\u0A8A\x07\b\x02\x02\u0A86\u0A88\x07" +
		"!\x02\x02\u0A87\u0A89\x05\u02C6\u0164\x02\u0A88\u0A87\x03\x02\x02\x02" +
		"\u0A88\u0A89\x03\x02\x02\x02\u0A89\u0A8B\x03\x02\x02\x02\u0A8A\u0A86\x03" +
		"\x02\x02\x02\u0A8A\u0A8B\x03\x02\x02\x02\u0A8B\u0A8C\x03\x02\x02\x02\u0A8C" +
		"\u0A8D\x07\x85\x02\x02\u0A8D\u0A8F\x07^\x02\x02\u0A8E\u0A90\x05H%\x02" +
		"\u0A8F\u0A8E\x03\x02\x02\x02\u0A8F\u0A90\x03\x02\x02\x02\u0A90\u0A91\x03" +
		"\x02\x02\x02\u0A91\u0A95\x05\u02E6\u0174\x02\u0A92\u0A94\x05J&\x02\u0A93" +
		"\u0A92\x03\x02\x02\x02\u0A94\u0A97\x03\x02\x02\x02\u0A95\u0A93\x03\x02" +
		"\x02\x02\u0A95\u0A96\x03\x02\x02\x02\u0A96\u0B49\x03\x02\x02\x02\u0A97" +
		"\u0A95\x03\x02\x02\x02\u0A98\u0A9D\x07\b\x02\x02\u0A99\u0A9B\x07!\x02" +
		"\x02\u0A9A\u0A9C\x05\u02C6\u0164\x02\u0A9B\u0A9A\x03\x02\x02\x02\u0A9B" +
		"\u0A9C\x03\x02\x02\x02\u0A9C\u0A9E\x03\x02\x02\x02\u0A9D\u0A99\x03\x02" +
		"\x02\x02\u0A9D\u0A9E\x03\x02\x02\x02\u0A9E\u0A9F\x03\x02\x02\x02\u0A9F" +
		"\u0AA1\x07\xB8\x02\x02\u0AA0\u0AA2\t\x14\x02\x02\u0AA1\u0AA0\x03\x02\x02" +
		"\x02\u0AA1\u0AA2\x03\x02\x02\x02\u0AA2\u0AA4\x03\x02\x02\x02\u0AA3\u0AA5" +
		"\x05\u0286\u0144\x02\u0AA4\u0AA3\x03\x02\x02\x02\u0AA4\u0AA5\x03\x02\x02" +
		"\x02\u0AA5\u0AA7\x03\x02\x02\x02\u0AA6\u0AA8\x05H%\x02\u0AA7\u0AA6\x03" +
		"\x02\x02\x02\u0AA7\u0AA8\x03\x02\x02\x02\u0AA8\u0AA9\x03\x02\x02\x02\u0AA9" +
		"\u0AAD\x05\u02E6\u0174\x02\u0AAA\u0AAC\x05J&\x02\u0AAB\u0AAA\x03\x02\x02" +
		"\x02\u0AAC\u0AAF\x03\x02\x02\x02\u0AAD\u0AAB\x03\x02\x02\x02\u0AAD\u0AAE" +
		"\x03\x02\x02\x02\u0AAE\u0B49\x03\x02\x02\x02\u0AAF\u0AAD\x03\x02\x02\x02" +
		"\u0AB0\u0AB5\x07\b\x02\x02\u0AB1\u0AB3\x07!\x02\x02\u0AB2\u0AB4\x05\u02C6" +
		"\u0164\x02\u0AB3\u0AB2\x03\x02\x02\x02\u0AB3\u0AB4\x03\x02\x02\x02\u0AB4" +
		"\u0AB6\x03\x02\x02\x02\u0AB5\u0AB1\x03\x02\x02\x02\u0AB5\u0AB6\x03\x02" +
		"\x02\x02\u0AB6\u0AB7\x03\x02\x02\x02\u0AB7\u0AB8\x07E\x02\x02\u0AB8\u0ABA" +
		"\x07^\x02\x02\u0AB9\u0ABB\x05\u0286\u0144\x02\u0ABA\u0AB9\x03\x02\x02" +
		"\x02\u0ABA\u0ABB\x03\x02\x02\x02\u0ABB\u0ABC\x03\x02\x02\x02\u0ABC\u0ABD" +
		"\x05\u02E6\u0174\x02\u0ABD\u0ABE\x05^0\x02\u0ABE\u0B49\x03\x02\x02\x02" +
		"\u0ABF\u0AC1\x07\b\x02\x02\u0AC0\u0AC2\x05V,\x02\u0AC1\u0AC0\x03\x02\x02" +
		"\x02\u0AC1\u0AC2\x03\x02\x02\x02\u0AC2\u0B49\x03\x02\x02\x02\u0AC3\u0AC4" +
		"\x075\x02\x02\u0AC4\u0AC5\t&\x02\x02\u0AC5\u0B49\x05\u02C6\u0164\x02\u0AC6" +
		"\u0AC7\x07\n\x02\x02\u0AC7\u0AC8\t&\x02\x02\u0AC8\u0ACA\x05\u02C6\u0164" +
		"\x02\u0AC9\u0ACB\x07t\x02\x02\u0ACA\u0AC9\x03\x02\x02\x02\u0ACA\u0ACB" +
		"\x03\x02\x02\x02\u0ACB\u0ACD\x03\x02\x02\x02\u0ACC\u0ACE\x07;\x02\x02" +
		"\u0ACD\u0ACC\x03\x02\x02\x02\u0ACD\u0ACE\x03\x02\x02\x02\u0ACE\u0B49\x03" +
		"\x02\x02\x02\u0ACF\u0AD1\x07\u0136\x02\x02\u0AD0\u0AD2\x07\u035B\x02\x02" +
		"\u0AD1\u0AD0\x03\x02\x02\x02\u0AD1\u0AD2\x03\x02\x02\x02\u0AD2\u0AD3\x03" +
		"\x02\x02\x02\u0AD3\u0B49\t\'\x02\x02\u0AD4\u0AD6\x07\n\x02\x02\u0AD5\u0AD7" +
		"\x07\x1F\x02\x02\u0AD6\u0AD5\x03\x02\x02\x02\u0AD6\u0AD7\x03\x02\x02\x02" +
		"\u0AD7\u0AD8\x03\x02\x02\x02\u0AD8\u0AE0\x05\u029A\u014E\x02\u0AD9\u0ADA" +
		"\x07\x9D\x02\x02\u0ADA\u0ADB\x07,\x02\x02\u0ADB\u0AE1\x05\u02F6\u017C" +
		"\x02\u0ADC\u0ADD\x07\x9D\x02\x02\u0ADD\u0AE1\t\x12\x02\x02\u0ADE\u0ADF" +
		"\x075\x02\x02\u0ADF\u0AE1\x07,\x02\x02\u0AE0\u0AD9\x03\x02\x02\x02\u0AE0" +
		"\u0ADC\x03\x02\x02\x02\u0AE0\u0ADE\x03\x02\x02\x02\u0AE1\u0B49\x03\x02" +
		"\x02\x02\u0AE2\u0AE3\x07\n\x02\x02\u0AE3\u0AE4\x07T\x02\x02\u0AE4\u0AE5" +
		"\x05\u0286\u0144\x02\u0AE5\u0AE6\t\x12\x02\x02\u0AE6\u0B49\x03\x02\x02" +
		"\x02\u0AE7\u0AE9\x07\x1B\x02\x02\u0AE8\u0AEA\x07\x1F\x02\x02\u0AE9\u0AE8" +
		"\x03\x02\x02\x02\u0AE9\u0AEA\x03\x02\x02\x02\u0AEA\u0AEB\x03\x02\x02\x02" +
		"\u0AEB\u0AEC\x05\u029A\u014E\x02\u0AEC\u0AED\x05\u0296\u014C\x02\u0AED" +
		"\u0AF1\x05Z.\x02\u0AEE\u0AF2\x07\u0194\x02\x02\u0AEF\u0AF0\x07\u0134\x02" +
		"\x02\u0AF0\u0AF2\x05\u029A\u014E\x02\u0AF1\u0AEE\x03\x02\x02\x02\u0AF1" +
		"\u0AEF\x03\x02\x02\x02\u0AF1\u0AF2\x03\x02\x02\x02\u0AF2\u0B49\x03\x02" +
		"\x02\x02\u0AF3\u0AF5\x07,\x02\x02\u0AF4\u0AF3\x03\x02\x02\x02\u0AF4\u0AF5" +
		"\x03\x02\x02\x02\u0AF5\u0AF6\x03\x02\x02\x02\u0AF6\u0AF7\x07\x1C\x02\x02" +
		"\u0AF7\u0AF8\x07\x9D\x02\x02\u0AF8\u0AF9\x07\u035B\x02\x02\u0AF9\u0AFF" +
		"\x05\u02B4\u015B\x02\u0AFA\u0AFC\x07\x1E\x02\x02\u0AFB\u0AFD\x07\u035B" +
		"\x02\x02\u0AFC\u0AFB\x03\x02\x02\x02\u0AFC\u0AFD\x03\x02\x02\x02\u0AFD" +
		"\u0AFE\x03\x02\x02\x02\u0AFE\u0B00\x05\u02B6\u015C\x02\u0AFF\u0AFA\x03" +
		"\x02\x02\x02\u0AFF\u0B00\x03\x02\x02\x02\u0B00\u0B49\x03\x02\x02\x02\u0B01" +
		"\u0B02\x07#\x02\x02\u0B02\u0B06\x07\xB2\x02\x02\u0B03\u0B07\x07\u0339" +
		"\x02\x02\u0B04\u0B05\x07\x1C\x02\x02\u0B05\u0B07\x07\x9D\x02\x02\u0B06" +
		"\u0B03\x03\x02\x02\x02\u0B06\u0B04\x03\x02\x02\x02\u0B07\u0B08\x03\x02" +
		"\x02\x02\u0B08\u0B0B\x05\u02B4\u015B\x02\u0B09\u0B0A\x07\x1E\x02\x02\u0B0A" +
		"\u0B0C\x05\u02B6\u015C\x02\u0B0B\u0B09\x03\x02\x02\x02\u0B0B\u0B0C\x03" +
		"\x02\x02\x02\u0B0C\u0B49\x03\x02\x02\x02\u0B0D\u0B0E\t(\x02\x02\u0B0E" +
		"\u0B49\x07_\x02\x02\u0B0F\u0B10\t)\x02\x02\u0B10\u0B49\x07\u0294\x02\x02" +
		"\u0B11\u0B13\x075\x02\x02\u0B12\u0B14\x07\x1F\x02\x02\u0B13\u0B12\x03" +
		"\x02\x02\x02\u0B13\u0B14\x03\x02\x02\x02\u0B14\u0B15\x03\x02\x02\x02\u0B15" +
		"\u0B49\x05\u029A\u014E\x02\u0B16\u0B17\x075\x02\x02\u0B17\u0B18\t\x14" +
		"\x02\x02\u0B18\u0B49\x05\u0286\u0144\x02\u0B19\u0B1A\x075\x02\x02\u0B1A" +
		"\u0B1B\x07\x85\x02\x02\u0B1B\u0B49\x07^\x02\x02\u0B1C\u0B1D\x075\x02\x02" +
		"\u0B1D\u0B1E\x07E\x02\x02\u0B1E\u0B1F\x07^\x02\x02\u0B1F\u0B49\x05\u02C6" +
		"\u0164\x02\u0B20\u0B49\x07D\x02\x02\u0B21\u0B23\x07j\x02\x02\u0B22\u0B24" +
		"\x07\u035B\x02\x02\u0B23\u0B22\x03\x02\x02\x02\u0B23\u0B24\x03\x02\x02" +
		"\x02\u0B24\u0B25\x03\x02\x02\x02\u0B25\u0B49\t\x06\x02\x02\u0B26\u0B28" +
		"\x07\u01EE\x02\x02\u0B27\u0B29\x07\x1F\x02\x02\u0B28\u0B27\x03\x02\x02" +
		"\x02\u0B28\u0B29\x03\x02\x02\x02\u0B29\u0B2A\x03\x02\x02\x02\u0B2A\u0B2B" +
		"\x05\u029A\u014E\x02\u0B2B\u0B2F\x05Z.\x02\u0B2C\u0B30\x07\u0194\x02\x02" +
		"\u0B2D\u0B2E\x07\u0134\x02\x02\u0B2E\u0B30\x05\u029A\u014E\x02\u0B2F\u0B2C" +
		"\x03\x02\x02\x02\u0B2F\u0B2D\x03\x02\x02\x02\u0B2F\u0B30\x03\x02\x02\x02" +
		"\u0B30\u0B49\x03\x02\x02\x02\u0B31\u0B32\x07\x7F\x02\x02\u0B32\u0B33\x07" +
		"\x16\x02\x02\u0B33\u0B49\x05\u0298\u014D\x02\u0B34\u0B35\x07\x8F\x02\x02" +
		"\u0B35\u0B36\x07\x1F\x02\x02\u0B36\u0B37\x05\u029A\u014E\x02\u0B37\u0B38" +
		"\x07\xB2\x02\x02\u0B38\u0B39\x05\u0296\u014C\x02\u0B39\u0B49\x03\x02\x02" +
		"\x02\u0B3A\u0B3B\x07\x8F\x02\x02\u0B3B\u0B3C\t\x14\x02\x02\u0B3C\u0B3D" +
		"\x05\u0286\u0144\x02\u0B3D\u0B3E\x07\xB2\x02\x02\u0B3E\u0B3F\x05\u0282" +
		"\u0142\x02\u0B3F\u0B49\x03\x02\x02\x02\u0B40\u0B42\x07\x8F\x02\x02\u0B41" +
		"\u0B43\t*\x02\x02\u0B42\u0B41\x03\x02\x02\x02\u0B42\u0B43\x03\x02\x02" +
		"\x02\u0B43\u0B44\x03\x02\x02\x02\u0B44\u0B49\x05\u028C\u0147\x02\u0B45" +
		"\u0B46\t+\x02\x02\u0B46\u0B49\x07\u02AB\x02\x02\u0B47\u0B49\x05\x90I\x02" +
		"\u0B48\u0A40\x03\x02\x02\x02\u0B48\u0A4A\x03\x02\x02\x02\u0B48\u0A55\x03" +
		"\x02\x02\x02\u0B48\u0A67\x03\x02\x02\x02\u0B48\u0A76\x03\x02\x02\x02\u0B48" +
		"\u0A85\x03\x02\x02\x02\u0B48\u0A98\x03\x02\x02\x02\u0B48\u0AB0\x03\x02" +
		"\x02\x02\u0B48\u0ABF\x03\x02\x02\x02\u0B48\u0AC3\x03\x02\x02\x02\u0B48" +
		"\u0AC6\x03\x02\x02\x02\u0B48\u0ACF\x03\x02\x02\x02\u0B48\u0AD4\x03\x02" +
		"\x02\x02\u0B48\u0AE2\x03\x02\x02\x02\u0B48\u0AE7\x03\x02\x02\x02\u0B48" +
		"\u0AF4\x03\x02\x02\x02\u0B48\u0B01\x03\x02\x02\x02\u0B48\u0B0D\x03\x02" +
		"\x02\x02\u0B48\u0B0F\x03\x02\x02\x02\u0B48\u0B11\x03\x02\x02\x02\u0B48" +
		"\u0B16\x03\x02\x02\x02\u0B48\u0B19\x03\x02\x02\x02\u0B48\u0B1C\x03\x02" +
		"\x02\x02\u0B48\u0B20\x03\x02\x02\x02\u0B48\u0B21\x03\x02\x02\x02\u0B48" +
		"\u0B26\x03\x02\x02\x02\u0B48\u0B31\x03\x02\x02\x02\u0B48\u0B34\x03\x02" +
		"\x02\x02\u0B48\u0B3A\x03\x02\x02\x02\u0B48\u0B40\x03\x02\x02\x02\u0B48" +
		"\u0B45\x03\x02\x02\x02\u0B48\u0B47\x03\x02\x02\x02\u0B49\x8F\x03\x02\x02" +
		"\x02\u0B4A\u0B4B\x07\b\x02\x02\u0B4B\u0B4C\x07\x84\x02\x02\u0B4C\u0B4D" +
		"\x07\u0364\x02\x02\u0B4D\u0B52\x05p9\x02\u0B4E\u0B4F\x07\u0366\x02\x02" +
		"\u0B4F\u0B51\x05p9\x02\u0B50\u0B4E\x03\x02\x02\x02\u0B51\u0B54\x03\x02" +
		"\x02\x02\u0B52\u0B50\x03\x02\x02\x02\u0B52\u0B53\x03\x02\x02\x02\u0B53" +
		"\u0B55\x03\x02\x02\x02\u0B54\u0B52\x03\x02\x02\x02\u0B55\u0B56\x07\u0365" +
		"\x02\x02\u0B56\u0BAD\x03\x02\x02\x02\u0B57\u0B58\x075\x02\x02\u0B58\u0B59" +
		"\x07\x84\x02\x02\u0B59\u0BAD\x05\u02A2\u0152\x02\u0B5A\u0B5B\x07\u0173" +
		"\x02\x02\u0B5B\u0B5E\x07\x84\x02\x02\u0B5C\u0B5F\x05\u02A2\u0152\x02\u0B5D" +
		"\u0B5F\x07\t\x02\x02\u0B5E\u0B5C\x03\x02\x02\x02\u0B5E\u0B5D\x03\x02\x02" +
		"\x02\u0B5F\u0B60\x03\x02\x02\x02\u0B60\u0BAD\x07\u0294\x02\x02\u0B61\u0B62" +
		"\x07\u01AB\x02\x02\u0B62\u0B65\x07\x84\x02\x02\u0B63\u0B66\x05\u02A2\u0152" +
		"\x02\u0B64\u0B66\x07\t\x02\x02\u0B65\u0B63\x03\x02\x02\x02\u0B65\u0B64" +
		"\x03\x02\x02\x02\u0B66\u0B67\x03\x02\x02\x02\u0B67\u0BAD\x07\u0294\x02" +
		"\x02\u0B68\u0B69\x07\u029E\x02\x02\u0B69\u0B6C\x07\x84\x02\x02\u0B6A\u0B6D" +
		"\x05\u02A2\u0152\x02\u0B6B\u0B6D\x07\t\x02\x02\u0B6C\u0B6A\x03\x02\x02" +
		"\x02\u0B6C\u0B6B\x03\x02\x02\x02\u0B6D\u0BAD\x03\x02\x02\x02\u0B6E\u0B6F" +
		"\x07\u0151\x02\x02\u0B6F\u0B70\x07\x84\x02\x02\u0B70\u0BAD\x05\u02CC\u0167" +
		"\x02\u0B71\u0B72\x07\u0233\x02\x02\u0B72\u0B73\x07\x84\x02\x02\u0B73\u0B74" +
		"\x05\u02A2\u0152\x02\u0B74\u0B75\x07Z\x02\x02\u0B75\u0B76\x07\u0364\x02" +
		"\x02\u0B76\u0B7B\x05p9\x02\u0B77\u0B78\x07\u0366\x02\x02\u0B78\u0B7A\x05" +
		"p9\x02\u0B79\u0B77\x03\x02\x02\x02\u0B7A\u0B7D\x03\x02\x02\x02\u0B7B\u0B79" +
		"\x03\x02\x02\x02\u0B7B\u0B7C\x03\x02\x02\x02\u0B7C\u0B7E\x03\x02\x02\x02" +
		"\u0B7D\u0B7B\x03\x02\x02\x02\u0B7E\u0B7F\x07\u0365\x02\x02\u0B7F\u0BAD" +
		"\x03\x02\x02\x02\u0B80\u0B81\x07\u0186\x02\x02\u0B81\u0B82\x07\x84\x02" +
		"\x02\u0B82\u0B83\x05\u02A4\u0153\x02\u0B83\u0B84\x07\xC4\x02\x02\u0B84" +
		"\u0B85\x07\xAF\x02\x02\u0B85\u0B88\x05\u0290\u0149\x02\u0B86\u0B87\t+" +
		"\x02\x02\u0B87\u0B89\x07\u02AB\x02\x02\u0B88\u0B86\x03\x02\x02\x02\u0B88" +
		"\u0B89\x03\x02\x02\x02\u0B89\u0BAD\x03\x02\x02\x02\u0B8A\u0B8B\x07\f\x02" +
		"\x02\u0B8B\u0B8E\x07\x84\x02\x02\u0B8C\u0B8F\x05\u02A2\u0152\x02\u0B8D" +
		"\u0B8F\x07\t\x02\x02\u0B8E\u0B8C\x03\x02\x02\x02\u0B8E\u0B8D\x03\x02\x02" +
		"\x02\u0B8F\u0BAD\x03\x02\x02\x02\u0B90\u0B91\x07\x1D\x02\x02\u0B91\u0B94" +
		"\x07\x84\x02\x02\u0B92\u0B95\x05\u02A2\u0152\x02\u0B93\u0B95\x07\t\x02" +
		"\x02\u0B94\u0B92\x03\x02\x02\x02\u0B94\u0B93\x03\x02\x02\x02\u0B95\u0BAD" +
		"\x03\x02\x02\x02\u0B96\u0B97\x07z\x02\x02\u0B97\u0B9A\x07\x84\x02\x02" +
		"\u0B98\u0B9B\x05\u02A2\u0152\x02\u0B99\u0B9B\x07\t\x02\x02\u0B9A\u0B98" +
		"\x03\x02\x02\x02\u0B9A\u0B99\x03\x02\x02\x02\u0B9B\u0BAD\x03\x02\x02\x02" +
		"\u0B9C\u0B9D\x07\u0228\x02\x02\u0B9D\u0BA0\x07\x84\x02\x02\u0B9E\u0BA1" +
		"\x05\u02A2\u0152\x02\u0B9F\u0BA1\x07\t\x02\x02\u0BA0\u0B9E\x03\x02\x02" +
		"\x02\u0BA0\u0B9F\x03\x02\x02\x02\u0BA1\u0BAD\x03\x02\x02\x02\u0BA2\u0BA3" +
		"\x07\u0234\x02\x02\u0BA3\u0BA6\x07\x84\x02\x02\u0BA4\u0BA7\x05\u02A2\u0152" +
		"\x02\u0BA5\u0BA7\x07\t\x02\x02\u0BA6\u0BA4\x03\x02\x02\x02\u0BA6\u0BA5" +
		"\x03\x02\x02\x02\u0BA7\u0BAD\x03\x02\x02\x02\u0BA8\u0BA9\x07\u0232\x02" +
		"\x02\u0BA9\u0BAD\x07\u0211\x02\x02\u0BAA\u0BAB\x07\u02A7\x02\x02\u0BAB" +
		"\u0BAD\x07\u0211\x02\x02\u0BAC\u0B4A\x03\x02\x02\x02\u0BAC\u0B57\x03\x02" +
		"\x02\x02\u0BAC\u0B5A\x03\x02\x02\x02\u0BAC\u0B61\x03\x02\x02\x02\u0BAC" +
		"\u0B68\x03\x02\x02\x02\u0BAC\u0B6E\x03\x02\x02\x02\u0BAC\u0B71\x03\x02" +
		"\x02\x02\u0BAC\u0B80\x03\x02\x02\x02\u0BAC\u0B8A\x03\x02\x02\x02\u0BAC" +
		"\u0B90\x03\x02\x02\x02\u0BAC\u0B96\x03\x02\x02\x02\u0BAC\u0B9C\x03\x02" +
		"\x02\x02\u0BAC\u0BA2\x03\x02\x02\x02\u0BAC\u0BA8\x03\x02\x02\x02\u0BAC" +
		"\u0BAA\x03\x02\x02\x02\u0BAD\x91\x03\x02\x02\x02\u0BAE\u0BAF\x075\x02" +
		"\x02\u0BAF\u0BB1\t\x02\x02\x02\u0BB0\u0BB2\x05\u02FA\u017E\x02\u0BB1\u0BB0" +
		"\x03\x02\x02\x02\u0BB1\u0BB2\x03\x02\x02\x02\u0BB2\u0BB3\x03\x02\x02\x02" +
		"\u0BB3\u0BB4\x05\u0278\u013D\x02\u0BB4\x93\x03\x02\x02\x02\u0BB5\u0BB6" +
		"\x075\x02\x02\u0BB6\u0BB8\x07\u0183\x02\x02\u0BB7\u0BB9\x05\u02FA\u017E" +
		"\x02\u0BB8\u0BB7\x03\x02\x02\x02\u0BB8\u0BB9\x03\x02\x02\x02\u0BB9\u0BBA" +
		"\x03\x02\x02\x02\u0BBA\u0BBB\x05\u02C2\u0162\x02\u0BBB\x95\x03\x02\x02" +
		"\x02\u0BBC\u0BBD\x075\x02\x02\u0BBD\u0BBF\x07T\x02\x02\u0BBE\u0BC0\t\x03" +
		"\x02\x02\u0BBF\u0BBE\x03\x02\x02\x02\u0BBF\u0BC0\x03\x02\x02\x02\u0BC0" +
		"\u0BC1\x03\x02\x02\x02\u0BC1\u0BC2\x05\u0286\u0144\x02\u0BC2\u0BC3\x07" +
		"y\x02\x02\u0BC3\u0BD0\x05\u0290\u0149\x02\u0BC4\u0BC6\x07\u0136\x02\x02" +
		"\u0BC5\u0BC7\x07\u035B\x02\x02\u0BC6\u0BC5\x03\x02\x02\x02\u0BC6\u0BC7" +
		"\x03\x02\x02\x02\u0BC7\u0BC8\x03\x02\x02\x02\u0BC8\u0BCF\t\x05\x02\x02" +
		"\u0BC9\u0BCB\x07j\x02\x02\u0BCA\u0BCC\x07\u035B\x02\x02\u0BCB\u0BCA\x03" +
		"\x02\x02\x02\u0BCB\u0BCC\x03\x02\x02\x02\u0BCC\u0BCD\x03\x02\x02\x02\u0BCD" +
		"\u0BCF\t\x06\x02\x02\u0BCE\u0BC4\x03\x02\x02\x02\u0BCE\u0BC9\x03\x02\x02" +
		"\x02\u0BCF\u0BD2\x03\x02\x02\x02\u0BD0\u0BCE\x03\x02\x02\x02\u0BD0\u0BD1" +
		"\x03\x02\x02\x02\u0BD1\x97\x03\x02\x02\x02\u0BD2\u0BD0\x03\x02\x02\x02" +
		"\u0BD3\u0BD4\x075\x02\x02\u0BD4\u0BD5\x07\u01C5\x02\x02\u0BD5\u0BD6\x07" +
		"L\x02\x02\u0BD6\u0BD7\x05\u02C6\u0164\x02\u0BD7\u0BD9\x07\u017E\x02\x02" +
		"\u0BD8\u0BDA\x07\u035B\x02\x02\u0BD9\u0BD8\x03\x02\x02\x02\u0BD9\u0BDA" +
		"\x03\x02\x02\x02\u0BDA\u0BDB\x03\x02\x02\x02\u0BDB\u0BDC\x05\u02B8\u015D" +
		"\x02\u0BDC\x99\x03\x02\x02\x02\u0BDD\u0BDE\x075\x02\x02\u0BDE\u0BE0\x07" +
		"\x86\x02\x02\u0BDF\u0BE1\x05\u02FA\u017E\x02\u0BE0\u0BDF\x03\x02\x02\x02" +
		"\u0BE0\u0BE1\x03\x02\x02\x02\u0BE1\u0BE2\x03\x02\x02\x02\u0BE2\u0BE3\x05" +
		"\u02C2\u0162\x02\u0BE3\x9B\x03\x02\x02\x02\u0BE4\u0BE5\x075\x02\x02\u0BE5" +
		"\u0BE7\x07\u019B\x02\x02\u0BE6\u0BE8\x05\u02FA\u017E\x02\u0BE7\u0BE6\x03" +
		"\x02\x02\x02\u0BE7\u0BE8\x03\x02\x02\x02\u0BE8\u0BE9\x03\x02\x02\x02\u0BE9" +
		"\u0BEA\x05\u027C\u013F\x02\u0BEA\x9D\x03\x02\x02\x02\u0BEB\u0BEC\x075" +
		"\x02\x02\u0BEC\u0BEE\x07\u0252\x02\x02\u0BED\u0BEF\x05\u02FA\u017E\x02" +
		"\u0BEE\u0BED\x03\x02\x02\x02\u0BEE\u0BEF\x03\x02\x02\x02\u0BEF\u0BF0\x03" +
		"\x02\x02\x02\u0BF0\u0BF1\x05\u02C6\u0164\x02\u0BF1\x9F\x03\x02\x02\x02" +
		"\u0BF2\u0BF3\x075\x02\x02\u0BF3\u0BF4\x07\xA3\x02\x02\u0BF4\u0BF5\x07" +
		"\x8B\x02\x02\u0BF5\u0BF7\x07\u0345\x02\x02\u0BF6\u0BF8\x05\u02FA\u017E" +
		"\x02\u0BF7\u0BF6\x03\x02\x02\x02\u0BF7\u0BF8\x03\x02\x02\x02\u0BF8\u0BF9" +
		"\x03\x02\x02\x02\u0BF9\u0BFA\x07\u0375\x02\x02\u0BFA\xA1\x03\x02\x02\x02" +
		"\u0BFB\u0BFD\x075\x02\x02\u0BFC\u0BFE\x07\u0296\x02\x02\u0BFD\u0BFC\x03" +
		"\x02\x02\x02\u0BFD\u0BFE\x03\x02\x02\x02\u0BFE\u0BFF\x03\x02\x02\x02\u0BFF" +
		"\u0C01\x07\xAF\x02\x02\u0C00\u0C02\x05\u02FA\u017E\x02\u0C01\u0C00\x03" +
		"\x02\x02\x02\u0C01\u0C02\x03\x02\x02\x02\u0C02\u0C03\x03\x02\x02\x02\u0C03" +
		"\u0C05\x05\u028E\u0148\x02\u0C04\u0C06\t,\x02\x02\u0C05\u0C04\x03\x02" +
		"\x02\x02\u0C05\u0C06\x03\x02\x02\x02\u0C06\xA3\x03\x02\x02\x02\u0C07\u0C09" +
		"\x075\x02\x02\u0C08\u0C0A\x07\xB6\x02\x02\u0C09\u0C08\x03\x02\x02\x02" +
		"\u0C09\u0C0A\x03\x02\x02\x02\u0C0A\u0C0B\x03\x02\x02\x02\u0C0B\u0C0C\x07" +
		"\u0294\x02\x02\u0C0C\u0C12\x05\u029E\u0150\x02\u0C0D\u0C0F\x07\u017E\x02" +
		"\x02\u0C0E\u0C10\x07\u035B\x02\x02\u0C0F\u0C0E\x03\x02\x02\x02\u0C0F\u0C10" +
		"\x03\x02\x02\x02\u0C10\u0C11\x03\x02\x02\x02\u0C11\u0C13\x05\u02B8\u015D" +
		"\x02\u0C12\u0C0D\x03\x02\x02\x02\u0C12\u0C13\x03\x02\x02\x02\u0C13\xA5" +
		"\x03\x02\x02\x02\u0C14\u0C15\x075\x02\x02\u0C15\u0C17\x07\xB4\x02\x02" +
		"\u0C16\u0C18\x05\u02FA\u017E\x02\u0C17\u0C16\x03\x02\x02\x02\u0C17\u0C18" +
		"\x03\x02\x02\x02\u0C18\u0C19\x03\x02\x02\x02\u0C19\u0C1A\x05\u02C2\u0162" +
		"\x02\u0C1A\xA7\x03\x02\x02\x02\u0C1B\u0C1C\x075\x02\x02\u0C1C\u0C1E\x07" +
		"\u02AE\x02\x02\u0C1D\u0C1F\x05\u02FA\u017E\x02\u0C1E\u0C1D\x03\x02\x02" +
		"\x02\u0C1E\u0C1F\x03\x02\x02\x02\u0C1F\u0C20\x03\x02\x02\x02\u0C20\u0C25" +
		"\x05\u0280\u0141\x02\u0C21\u0C22\x07\u0366\x02\x02\u0C22\u0C24\x05\u0280" +
		"\u0141\x02\u0C23\u0C21\x03\x02\x02\x02\u0C24\u0C27\x03\x02\x02\x02\u0C25" +
		"\u0C23\x03\x02\x02\x02\u0C25\u0C26\x03\x02\x02\x02\u0C26\u0C29\x03\x02" +
		"\x02\x02\u0C27\u0C25\x03\x02\x02\x02\u0C28\u0C2A\t,\x02\x02\u0C29\u0C28" +
		"\x03\x02\x02\x02\u0C29\u0C2A\x03\x02\x02\x02\u0C2A\xA9\x03\x02\x02\x02" +
		"\u0C2B\u0C2C\x075\x02\x02\u0C2C\u0C2E\x07\u0248\x02\x02\u0C2D\u0C2F\x05" +
		"\u02FA\u017E\x02\u0C2E\u0C2D\x03\x02\x02\x02\u0C2E\u0C2F\x03\x02\x02\x02" +
		"\u0C2F\u0C30\x03\x02\x02\x02\u0C30\u0C31\x05\u0292\u014A\x02\u0C31\xAB" +
		"\x03\x02\x02\x02\u0C32\u0C33\x07\x9D\x02\x02\u0C33\u0C34\x07,\x02\x02" +
		"\u0C34\u0C38\x07\u0248\x02\x02\u0C35\u0C39\x07\u01FB\x02\x02\u0C36\u0C39" +
		"\x07\t\x02\x02\u0C37\u0C39\x05\u0292\u014A\x02\u0C38\u0C35\x03\x02\x02" +
		"\x02\u0C38\u0C36\x03\x02\x02\x02\u0C38\u0C37\x03\x02\x02\x02\u0C39\u0C3A" +
		"\x03\x02\x02\x02\u0C3A\u0C3B\x07\xB2\x02\x02\u0C3B\u0C40\x05\u0294\u014B" +
		"\x02\u0C3C\u0C3D\x07\u0366\x02\x02\u0C3D\u0C3F\x05\u0294\u014B\x02\u0C3E" +
		"\u0C3C\x03\x02\x02\x02\u0C3F\u0C42\x03\x02\x02\x02\u0C40\u0C3E\x03\x02";
	private static readonly _serializedATNSegment8: string =
		"\x02\x02\u0C40\u0C41\x03\x02\x02\x02\u0C41\u0C47\x03\x02\x02\x02\u0C42" +
		"\u0C40\x03\x02\x02\x02\u0C43\u0C44\x07\x9D\x02\x02\u0C44\u0C45\x07\u0248" +
		"\x02\x02\u0C45\u0C47\x05\u01D6\xEC\x02\u0C46\u0C32\x03\x02\x02\x02\u0C46" +
		"\u0C43\x03\x02\x02\x02\u0C47\xAD\x03\x02\x02\x02\u0C48\u0C49\x07\x8F\x02" +
		"\x02\u0C49\u0C4A\x07\xAF\x02\x02\u0C4A\u0C4F\x05\xB0Y\x02\u0C4B\u0C4C" +
		"\x07\u0366\x02\x02\u0C4C\u0C4E\x05\xB0Y\x02\u0C4D\u0C4B\x03\x02\x02\x02" +
		"\u0C4E\u0C51\x03\x02\x02\x02\u0C4F\u0C4D\x03\x02\x02\x02\u0C4F\u0C50\x03" +
		"\x02\x02\x02\u0C50\xAF\x03\x02\x02\x02\u0C51\u0C4F\x03\x02\x02\x02\u0C52" +
		"\u0C53\x05\u0290\u0149\x02\u0C53\u0C54\x07\xB2\x02\x02\u0C54\u0C55\x05" +
		"\u028C\u0147\x02\u0C55\xB1\x03\x02\x02\x02\u0C56\u0C58\x07\u029E\x02\x02" +
		"\u0C57\u0C59\x07\xAF\x02\x02\u0C58\u0C57\x03\x02\x02\x02\u0C58\u0C59\x03" +
		"\x02\x02\x02\u0C59\u0C5A\x03\x02\x02\x02\u0C5A\u0C5B\x05\u0290\u0149\x02" +
		"\u0C5B\xB3\x03\x02\x02\x02\u0C5C\u0C5D\x07\x17\x02\x02\u0C5D\u0C64\x05" +
		"\u02C2\u0162\x02\u0C5E\u0C61\x07\u0364\x02\x02\u0C5F\u0C62\x05\u02F0\u0179" +
		"\x02\u0C60\u0C62\x05\u02E8\u0175\x02\u0C61\u0C5F\x03\x02\x02\x02\u0C61" +
		"\u0C60\x03\x02\x02\x02\u0C61\u0C62\x03\x02\x02\x02\u0C62\u0C63\x03\x02" +
		"\x02\x02\u0C63\u0C65\x07\u0365\x02\x02\u0C64\u0C5E\x03\x02\x02\x02\u0C64" +
		"\u0C65\x03\x02\x02\x02\u0C65\xB5\x03\x02\x02\x02\u0C66\u0C69\x05\xECw" +
		"\x02\u0C67\u0C69\x05\xEEx\x02\u0C68\u0C66\x03\x02\x02\x02\u0C68\u0C67" +
		"\x03\x02\x02\x02\u0C69\xB7\x03\x02\x02\x02\u0C6A\u0C6B\x07\u0175\x02\x02" +
		"\u0C6B\u0C6C\x05\u02E8\u0175\x02\u0C6C\xB9\x03\x02\x02\x02\u0C6D\u0C72" +
		"\x05\xF0y\x02\u0C6E\u0C72\x05\xF2z\x02\u0C6F\u0C72\x05\xF4{\x02\u0C70" +
		"\u0C72\x05\xF6|\x02\u0C71\u0C6D\x03\x02\x02\x02\u0C71\u0C6E\x03\x02\x02" +
		"\x02\u0C71\u0C6F\x03\x02\x02\x02\u0C71\u0C70\x03\x02\x02\x02\u0C72\xBB" +
		"\x03\x02\x02\x02\u0C73\u0C75\x07X\x02\x02\u0C74\u0C76\t-\x02\x02\u0C75" +
		"\u0C74\x03\x02\x02\x02\u0C75\u0C76\x03\x02\x02\x02\u0C76\u0C78\x03\x02" +
		"\x02\x02\u0C77\u0C79\x07Q\x02\x02\u0C78\u0C77\x03\x02\x02\x02\u0C78\u0C79" +
		"\x03\x02\x02\x02\u0C79\u0C7B\x03\x02\x02\x02\u0C7A\u0C7C\x07Z\x02\x02" +
		"\u0C7B\u0C7A\x03\x02\x02\x02\u0C7B\u0C7C\x03\x02\x02\x02\u0C7C\u0C7D\x03" +
		"\x02\x02\x02\u0C7D\u0C84\x05\u0290\u0149\x02\u0C7E\u0C7F\x07\x84\x02\x02" +
		"\u0C7F\u0C81\x07\u0364\x02\x02\u0C80\u0C82\x05\u02A2\u0152\x02\u0C81\u0C80" +
		"\x03\x02\x02\x02\u0C81\u0C82\x03\x02\x02\x02\u0C82\u0C83\x03\x02\x02\x02" +
		"\u0C83\u0C85\x07\u0365\x02\x02\u0C84\u0C7E\x03\x02\x02\x02\u0C84\u0C85" +
		"\x03\x02\x02\x02\u0C85\u0C91\x03\x02\x02\x02\u0C86\u0C88\x05\u0108\x85" +
		"\x02\u0C87\u0C86\x03\x02\x02\x02\u0C87\u0C88\x03\x02\x02\x02\u0C88\u0C8B" +
		"\x03\x02\x02\x02\u0C89\u0C8C\x05\u02EA\u0176\x02\u0C8A\u0C8C\x05\xC0a" +
		"\x02\u0C8B\u0C89\x03\x02\x02\x02\u0C8B\u0C8A\x03\x02\x02\x02\u0C8B\u0C8C" +
		"\x03\x02\x02\x02\u0C8C\u0C8E\x03\x02\x02\x02\u0C8D\u0C8F\x05\xBE`\x02" +
		"\u0C8E\u0C8D\x03\x02\x02\x02\u0C8E\u0C8F\x03\x02\x02\x02\u0C8F\u0C92\x03" +
		"\x02\x02\x02\u0C90\u0C92\x05\xE4s\x02\u0C91\u0C87\x03\x02\x02\x02\u0C91" +
		"\u0C90\x03\x02\x02\x02\u0C92\u0C94\x03\x02\x02\x02\u0C93\u0C95\x05\xBE" +
		"`\x02\u0C94\u0C93\x03\x02\x02\x02\u0C94\u0C95\x03\x02\x02\x02\u0C95\u0CA2" +
		"\x03\x02\x02\x02\u0C96\u0C97\x07y\x02\x02\u0C97\u0C98\x07\u0177\x02\x02" +
		"\u0C98\u0C99\x07^\x02\x02\u0C99\u0C9A\x07\xBB\x02\x02\u0C9A\u0C9F\x05" +
		"\xE6t\x02\u0C9B\u0C9C\x07\u0366\x02\x02\u0C9C\u0C9E\x05\xE6t\x02\u0C9D" +
		"\u0C9B\x03\x02\x02\x02\u0C9E\u0CA1\x03\x02\x02\x02\u0C9F\u0C9D\x03\x02" +
		"\x02\x02\u0C9F\u0CA0\x03\x02\x02\x02\u0CA0\u0CA3\x03\x02\x02\x02\u0CA1" +
		"\u0C9F\x03\x02\x02\x02\u0CA2\u0C96\x03\x02\x02\x02\u0CA2\u0CA3\x03\x02" +
		"\x02\x02\u0CA3\xBD\x03\x02\x02\x02\u0CA4\u0CA5\x07\x0F\x02\x02\u0CA5\u0CA7" +
		"\x05\u02C6\u0164\x02\u0CA6\u0CA8\x05\u0108\x85\x02\u0CA7\u0CA6\x03\x02" +
		"\x02\x02\u0CA7\u0CA8\x03\x02\x02\x02\u0CA8\xBF\x03\x02\x02\x02\u0CA9\u0CAE" +
		"\x05\xCEh\x02\u0CAA\u0CAB\x07\xAF\x02\x02\u0CAB\u0CAE\x05\u0290\u0149" +
		"\x02\u0CAC\u0CAE\x05\xE2r\x02\u0CAD\u0CA9\x03\x02\x02\x02\u0CAD\u0CAA" +
		"\x03\x02\x02\x02\u0CAD\u0CAC\x03\x02\x02\x02\u0CAE\xC1\x03\x02\x02\x02" +
		"\u0CAF\u0CB5\x05\xC4c\x02\u0CB0\u0CB2\x07\u033E\x02\x02\u0CB1\u0CB3\t" +
		".\x02\x02\u0CB2\u0CB1\x03\x02\x02\x02\u0CB2\u0CB3\x03\x02\x02\x02\u0CB3" +
		"\u0CB4\x03\x02\x02\x02\u0CB4\u0CB6\x05\xC4c\x02\u0CB5\u0CB0\x03\x02\x02" +
		"\x02\u0CB6\u0CB7\x03\x02\x02\x02\u0CB7\u0CB5\x03\x02\x02\x02\u0CB7\u0CB8" +
		"\x03\x02\x02\x02\u0CB8\xC3\x03\x02\x02\x02\u0CB9\u0CBB\x07\u0364\x02\x02" +
		"\u0CBA\u0CB9\x03\x02\x02\x02\u0CBA\u0CBB\x03\x02\x02\x02\u0CBB\u0CBC\x03" +
		"\x02\x02\x02\u0CBC\u0CBE\x05\u0116\x8C\x02\u0CBD\u0CBF\x07\u0365\x02\x02" +
		"\u0CBE\u0CBD\x03\x02\x02\x02\u0CBE\u0CBF\x03\x02\x02\x02\u0CBF\xC5\x03" +
		"\x02\x02\x02\u0CC0\u0CC1\x07i\x02\x02\u0CC1\u0CC3\x07\u016A\x02\x02\u0CC2" +
		"\u0CC4\t/\x02\x02\u0CC3\u0CC2\x03\x02\x02\x02\u0CC3\u0CC4\x03\x02\x02" +
		"\x02\u0CC4\u0CC6\x03\x02\x02\x02\u0CC5\u0CC7\x07\u01C4\x02\x02\u0CC6\u0CC5" +
		"\x03\x02\x02\x02\u0CC6\u0CC7\x03\x02\x02\x02\u0CC7\u0CC8\x03\x02\x02\x02" +
		"\u0CC8\u0CC9\x07U\x02\x02\u0CC9\u0CCB\x07\u0374\x02\x02\u0CCA\u0CCC\t" +
		"\b\x02\x02\u0CCB\u0CCA\x03\x02\x02\x02\u0CCB\u0CCC\x03\x02\x02\x02\u0CCC" +
		"\u0CCD\x03\x02\x02\x02\u0CCD\u0CCE\x07Z\x02\x02\u0CCE\u0CCF\x07\xAF\x02" +
		"\x02\u0CCF\u0CD5\x05\u0290\u0149\x02\u0CD0\u0CD1\x07\x84\x02\x02\u0CD1" +
		"\u0CD2\x07\u0364\x02\x02\u0CD2\u0CD3\x05\u02A2\u0152\x02\u0CD3\u0CD4\x07" +
		"\u0365\x02\x02\u0CD4\u0CD6\x03\x02\x02\x02\u0CD5\u0CD0\x03\x02\x02\x02" +
		"\u0CD5\u0CD6\x03\x02\x02\x02\u0CD6\u0CDA\x03\x02\x02\x02\u0CD7\u0CD8\x07" +
		"\x1C\x02\x02\u0CD8\u0CD9\x07\x9D\x02\x02\u0CD9\u0CDB\x05\u02B4\u015B\x02" +
		"\u0CDA\u0CD7\x03\x02\x02\x02\u0CDA\u0CDB\x03\x02\x02\x02\u0CDB\u0CE2\x03" +
		"\x02\x02\x02\u0CDC\u0CDE\t0\x02\x02\u0CDD\u0CDF\x05\u0132\x9A\x02\u0CDE" +
		"\u0CDD\x03\x02\x02\x02\u0CDF\u0CE0\x03\x02\x02\x02\u0CE0\u0CDE\x03\x02" +
		"\x02\x02\u0CE0\u0CE1\x03\x02\x02\x02\u0CE1\u0CE3\x03\x02\x02\x02\u0CE2" +
		"\u0CDC\x03\x02\x02\x02\u0CE2\u0CE3\x03\x02\x02\x02\u0CE3\u0CEA\x03\x02" +
		"\x02\x02\u0CE4\u0CE6\x07h\x02\x02\u0CE5\u0CE7\x05\u0134\x9B\x02\u0CE6" +
		"\u0CE5\x03\x02\x02\x02\u0CE7\u0CE8\x03\x02\x02\x02\u0CE8\u0CE6\x03\x02" +
		"\x02\x02\u0CE8\u0CE9\x03\x02\x02\x02\u0CE9\u0CEB\x03\x02\x02\x02\u0CEA" +
		"\u0CE4\x03\x02\x02\x02\u0CEA\u0CEB\x03\x02\x02\x02\u0CEB\u0CF0\x03\x02" +
		"\x02\x02\u0CEC\u0CED\x07Q\x02\x02\u0CED\u0CEE\x05\u02CC\u0167\x02\u0CEE" +
		"\u0CEF\t1\x02\x02\u0CEF\u0CF1\x03\x02\x02\x02\u0CF0\u0CEC\x03\x02\x02" +
		"\x02\u0CF0\u0CF1\x03\x02\x02\x02\u0CF1\u0CFD\x03\x02\x02\x02\u0CF2\u0CF3" +
		"\x07\u0364\x02\x02\u0CF3\u0CF8\x05\xE8u\x02\u0CF4\u0CF5\x07\u0366\x02" +
		"\x02\u0CF5\u0CF7\x05\xE8u\x02\u0CF6\u0CF4\x03\x02\x02\x02\u0CF7\u0CFA" +
		"\x03\x02\x02\x02\u0CF8\u0CF6\x03\x02\x02\x02\u0CF8\u0CF9\x03\x02\x02\x02" +
		"\u0CF9\u0CFB\x03\x02\x02\x02\u0CFA\u0CF8\x03\x02\x02\x02\u0CFB\u0CFC\x07" +
		"\u0365\x02\x02\u0CFC\u0CFE\x03\x02\x02\x02\u0CFD\u0CF2\x03\x02\x02\x02" +
		"\u0CFD\u0CFE\x03\x02\x02\x02\u0CFE\u0D08\x03\x02\x02\x02\u0CFF\u0D00\x07" +
		"\x9D\x02\x02\u0D00\u0D05\x05\xE6t\x02\u0D01\u0D02\x07\u0366\x02\x02\u0D02" +
		"\u0D04\x05\xE6t\x02\u0D03\u0D01\x03\x02\x02\x02\u0D04\u0D07\x03\x02\x02" +
		"\x02\u0D05\u0D03\x03\x02\x02\x02\u0D05\u0D06\x03\x02\x02\x02\u0D06\u0D09" +
		"\x03\x02\x02\x02\u0D07\u0D05\x03\x02\x02\x02\u0D08\u0CFF\x03\x02\x02\x02" +
		"\u0D08\u0D09\x03\x02\x02\x02\u0D09\xC7\x03\x02\x02\x02\u0D0A\u0D0B\x07" +
		"i\x02\x02\u0D0B\u0D0D\x07\u02B9\x02\x02\u0D0C\u0D0E\t/\x02\x02\u0D0D\u0D0C" +
		"\x03\x02\x02\x02\u0D0D\u0D0E\x03\x02\x02\x02\u0D0E\u0D10\x03\x02\x02\x02" +
		"\u0D0F\u0D11\x07\u01C4\x02\x02\u0D10\u0D0F\x03\x02\x02\x02\u0D10\u0D11" +
		"\x03\x02\x02\x02\u0D11\u0D12\x03\x02\x02\x02\u0D12\u0D13\x07U\x02\x02" +
		"\u0D13\u0D15\x07\u0374\x02\x02\u0D14\u0D16\t\b\x02\x02\u0D15\u0D14\x03" +
		"\x02\x02\x02\u0D15\u0D16\x03\x02\x02\x02\u0D16\u0D17\x03\x02\x02\x02\u0D17" +
		"\u0D18\x07Z\x02\x02\u0D18\u0D19\x07\xAF\x02\x02\u0D19\u0D1D\x05\u0290" +
		"\u0149\x02\u0D1A\u0D1B\x07\x1C\x02\x02\u0D1B\u0D1C\x07\x9D\x02\x02\u0D1C" +
		"\u0D1E\x05\u02B4\u015B\x02\u0D1D\u0D1A\x03\x02\x02\x02\u0D1D\u0D1E\x03" +
		"\x02\x02\x02\u0D1E\u0D29\x03\x02\x02\x02\u0D1F\u0D20\x07\u024D\x02\x02" +
		"\u0D20\u0D21\x07\u01A9\x02\x02\u0D21\u0D23\x07\x16\x02\x02\u0D22\u0D24" +
		"\x07\u035D\x02\x02\u0D23\u0D22\x03\x02\x02\x02\u0D23\u0D24\x03\x02\x02" +
		"\x02\u0D24\u0D25\x03\x02\x02\x02\u0D25\u0D27\x07\u0374\x02\x02\u0D26\u0D28" +
		"\x07\u035C\x02\x02\u0D27\u0D26\x03\x02\x02\x02\u0D27\u0D28\x03\x02\x02" +
		"\x02\u0D28\u0D2A\x03\x02\x02\x02\u0D29\u0D1F\x03\x02\x02\x02\u0D29\u0D2A" +
		"\x03\x02\x02\x02\u0D2A\u0D2F\x03\x02\x02\x02\u0D2B\u0D2C\x07Q\x02\x02" +
		"\u0D2C\u0D2D\x05\u02CC\u0167\x02\u0D2D\u0D2E\t1\x02\x02\u0D2E\u0D30\x03" +
		"\x02\x02\x02\u0D2F\u0D2B\x03\x02\x02\x02\u0D2F\u0D30\x03\x02\x02\x02\u0D30" +
		"\u0D3C\x03\x02\x02\x02\u0D31\u0D32\x07\u0364\x02\x02\u0D32\u0D37\x05\xE8" +
		"u\x02\u0D33\u0D34\x07\u0366\x02\x02\u0D34\u0D36\x05\xE8u\x02\u0D35\u0D33" +
		"\x03\x02\x02\x02\u0D36\u0D39\x03\x02\x02\x02\u0D37\u0D35\x03\x02\x02\x02" +
		"\u0D37\u0D38\x03\x02\x02\x02\u0D38\u0D3A\x03\x02\x02\x02\u0D39\u0D37\x03" +
		"\x02\x02\x02\u0D3A\u0D3B\x07\u0365\x02\x02\u0D3B\u0D3D\x03\x02\x02\x02" +
		"\u0D3C\u0D31\x03\x02\x02\x02\u0D3C\u0D3D\x03\x02\x02\x02\u0D3D\u0D47\x03" +
		"\x02\x02\x02\u0D3E\u0D3F\x07\x9D\x02\x02\u0D3F\u0D44\x05\xE6t\x02\u0D40" +
		"\u0D41\x07\u0366\x02\x02\u0D41\u0D43\x05\xE6t\x02\u0D42\u0D40\x03\x02" +
		"\x02\x02\u0D43\u0D46\x03\x02\x02\x02\u0D44\u0D42\x03\x02\x02\x02\u0D44" +
		"\u0D45\x03\x02\x02\x02\u0D45\u0D48\x03\x02\x02\x02\u0D46\u0D44\x03\x02" +
		"\x02\x02\u0D47\u0D3E\x03\x02\x02\x02\u0D47\u0D48\x03\x02\x02\x02\u0D48" +
		"\xC9\x03\x02\x02\x02\u0D49\u0D4A\x07\u0364\x02\x02\u0D4A\u0D4C\x05\xDC" +
		"o\x02\u0D4B\u0D4D\x05\xFE\x80\x02\u0D4C\u0D4B\x03\x02\x02\x02\u0D4C\u0D4D" +
		"\x03\x02\x02\x02\u0D4D\u0D4F\x03\x02\x02\x02\u0D4E\u0D50\x05\u0140\xA1" +
		"\x02\u0D4F\u0D4E\x03\x02\x02\x02\u0D4F\u0D50\x03\x02\x02\x02\u0D50\u0D51" +
		"\x03\x02\x02\x02\u0D51\u0D53\x07\u0365\x02\x02\u0D52\u0D54\x05\xFE\x80" +
		"\x02\u0D53\u0D52\x03\x02\x02\x02\u0D53\u0D54\x03\x02\x02\x02\u0D54\u0D56" +
		"\x03\x02\x02\x02\u0D55\u0D57\x05\u0140\xA1\x02\u0D56\u0D55\x03\x02\x02" +
		"\x02\u0D56\u0D57\x03\x02\x02\x02\u0D57\u0D59\x03\x02\x02\x02\u0D58\u0D5A" +
		"\x05\u0130\x99\x02\u0D59\u0D58\x03\x02\x02\x02\u0D59\u0D5A\x03\x02\x02" +
		"\x02\u0D5A\xCB\x03\x02\x02\x02\u0D5B\u0D5D\x07\x91\x02\x02\u0D5C\u0D5E" +
		"\t2\x02\x02\u0D5D\u0D5C\x03\x02\x02\x02\u0D5D\u0D5E\x03\x02\x02\x02\u0D5E" +
		"\u0D60\x03\x02\x02\x02\u0D5F\u0D61\x07Z\x02\x02\u0D60\u0D5F\x03\x02\x02" +
		"\x02\u0D60\u0D61\x03\x02\x02\x02\u0D61\u0D62\x03\x02\x02\x02\u0D62\u0D68" +
		"\x05\u0290\u0149\x02\u0D63\u0D64\x07\x84\x02\x02\u0D64\u0D65\x07\u0364" +
		"\x02\x02\u0D65\u0D66\x05\u02A2\u0152\x02\u0D66\u0D67\x07\u0365\x02\x02" +
		"\u0D67\u0D69\x03\x02\x02\x02\u0D68\u0D63\x03\x02\x02\x02\u0D68\u0D69\x03" +
		"\x02\x02\x02\u0D69\u0D72\x03\x02\x02\x02\u0D6A\u0D6B\x07\u0364\x02\x02" +
		"\u0D6B\u0D6C\x05\u0298\u014D\x02\u0D6C\u0D6D\x07\u0365\x02\x02\u0D6D\u0D6F" +
		"\x03\x02\x02\x02\u0D6E\u0D6A\x03\x02\x02\x02\u0D6E\u0D6F\x03\x02\x02\x02" +
		"\u0D6F\u0D70\x03\x02\x02\x02\u0D70\u0D73\x05\xE0q\x02\u0D71\u0D73\x05" +
		"\xE4s\x02\u0D72\u0D6E\x03\x02\x02\x02\u0D72\u0D71\x03\x02\x02\x02\u0D73" +
		"\xCD\x03\x02\x02\x02\u0D74\u0D76\x05\u0116\x8C\x02\u0D75\u0D77\x05\xEA" +
		"v\x02\u0D76\u0D75\x03\x02\x02\x02\u0D76\u0D77\x03\x02\x02\x02\u0D77\u0DBA" +
		"\x03\x02\x02\x02\u0D78\u0D7A\x05\u0118\x8D\x02\u0D79\u0D7B\x05\xEAv\x02" +
		"\u0D7A\u0D79\x03\x02\x02\x02\u0D7A\u0D7B\x03\x02\x02\x02\u0D7B\u0D7D\x03" +
		"\x02\x02\x02\u0D7C\u0D7E\x05\u0130\x99\x02\u0D7D\u0D7C\x03\x02\x02\x02" +
		"\u0D7D\u0D7E\x03\x02\x02\x02\u0D7E\u0DBA\x03\x02\x02\x02\u0D7F\u0D81\x05" +
		"\u0112\x8A\x02\u0D80\u0D82\x05\xEAv\x02\u0D81\u0D80\x03\x02\x02\x02\u0D81" +
		"\u0D82\x03\x02\x02\x02\u0D82\u0DBA\x03\x02\x02\x02\u0D83\u0D85\x05\u0118" +
		"\x8D\x02\u0D84\u0D86\x05\u011C\x8F\x02\u0D85\u0D84\x03\x02\x02\x02\u0D86" +
		"\u0D87\x03\x02\x02\x02\u0D87\u0D85\x03\x02\x02\x02\u0D87\u0D88\x03\x02" +
		"\x02\x02\u0D88\u0D91\x03\x02\x02\x02\u0D89\u0D8B\x07\xB7\x02\x02\u0D8A" +
		"\u0D8C\t.\x02\x02\u0D8B\u0D8A\x03\x02\x02\x02\u0D8B\u0D8C\x03\x02\x02" +
		"\x02\u0D8C\u0D8F\x03\x02\x02\x02\u0D8D\u0D90\x05\u0116\x8C\x02\u0D8E\u0D90" +
		"\x05\u0112\x8A\x02\u0D8F\u0D8D\x03\x02\x02\x02\u0D8F\u0D8E\x03\x02\x02" +
		"\x02\u0D90\u0D92\x03\x02\x02\x02\u0D91\u0D89\x03\x02\x02\x02\u0D91\u0D92" +
		"\x03\x02\x02\x02\u0D92\u0D94\x03\x02\x02\x02\u0D93\u0D95\x05\xFE\x80\x02" +
		"\u0D94\u0D93\x03\x02\x02\x02\u0D94\u0D95\x03\x02\x02\x02\u0D95\u0D97\x03" +
		"\x02\x02\x02\u0D96\u0D98\x05\u0140\xA1\x02\u0D97\u0D96\x03\x02\x02\x02" +
		"\u0D97\u0D98\x03\x02\x02\x02\u0D98\u0D9A\x03\x02\x02\x02\u0D99\u0D9B\x05" +
		"\xEAv\x02\u0D9A\u0D99\x03\x02\x02\x02\u0D9A\u0D9B\x03\x02\x02\x02\u0D9B" +
		"\u0DBA\x03\x02\x02\x02\u0D9C\u0D9E\x05\u0114\x8B\x02\u0D9D\u0D9F\x05\u011A" +
		"\x8E\x02\u0D9E\u0D9D\x03\x02\x02\x02\u0D9F\u0DA0\x03\x02\x02\x02\u0DA0" +
		"\u0D9E\x03\x02\x02\x02\u0DA0\u0DA1\x03\x02\x02\x02\u0DA1\u0DA7\x03\x02" +
		"\x02\x02\u0DA2\u0DA4\x07\xB7\x02\x02\u0DA3\u0DA5\t.\x02\x02\u0DA4\u0DA3" +
		"\x03\x02\x02\x02\u0DA4\u0DA5\x03\x02\x02\x02\u0DA5\u0DA6\x03\x02\x02\x02" +
		"\u0DA6\u0DA8\x05\u0112\x8A\x02\u0DA7\u0DA2\x03\x02\x02\x02\u0DA7\u0DA8" +
		"\x03\x02\x02\x02\u0DA8\u0DAA\x03\x02\x02\x02\u0DA9\u0DAB\x05\xFE\x80\x02" +
		"\u0DAA\u0DA9\x03\x02\x02\x02\u0DAA\u0DAB\x03\x02\x02\x02\u0DAB\u0DAD\x03" +
		"\x02\x02\x02\u0DAC\u0DAE\x05\u0140\xA1\x02\u0DAD\u0DAC\x03\x02\x02\x02" +
		"\u0DAD\u0DAE\x03\x02\x02\x02\u0DAE\u0DB0\x03\x02\x02\x02\u0DAF\u0DB1\x05" +
		"\xEAv\x02\u0DB0\u0DAF\x03\x02\x02\x02\u0DB0\u0DB1\x03\x02\x02\x02\u0DB1" +
		"\u0DBA\x03\x02\x02\x02\u0DB2\u0DB5\x05\u0118\x8D\x02\u0DB3\u0DB4\x07\u0366" +
		"\x02\x02\u0DB4\u0DB6\x05\u011E\x90\x02\u0DB5\u0DB3\x03\x02\x02\x02\u0DB6" +
		"\u0DB7\x03\x02\x02\x02\u0DB7\u0DB5\x03\x02\x02\x02\u0DB7\u0DB8\x03\x02" +
		"\x02\x02\u0DB8\u0DBA\x03\x02\x02\x02\u0DB9\u0D74\x03\x02\x02\x02\u0DB9" +
		"\u0D78\x03\x02\x02\x02\u0DB9\u0D7F\x03\x02\x02\x02\u0DB9\u0D83\x03\x02" +
		"\x02\x02\u0DB9\u0D9C\x03\x02\x02\x02\u0DB9\u0DB2\x03\x02\x02\x02\u0DBA" +
		"\xCF\x03\x02\x02\x02\u0DBB\u0DBD\x050\x19\x02\u0DBC\u0DBB\x03\x02\x02" +
		"\x02\u0DBC\u0DBD\x03\x02\x02\x02\u0DBD\u0DBE\x03\x02\x02\x02\u0DBE\u0DC0" +
		"\x05\xD2j\x02\u0DBF\u0DC1\x05\xFE\x80\x02\u0DC0\u0DBF\x03\x02\x02\x02" +
		"\u0DC0\u0DC1\x03\x02\x02\x02\u0DC1\u0DC3\x03\x02\x02\x02\u0DC2\u0DC4\x05" +
		"\u0140\xA1\x02\u0DC3\u0DC2\x03\x02\x02\x02\u0DC3\u0DC4\x03\x02\x02\x02" +
		"\u0DC4\u0DC6\x03\x02\x02\x02\u0DC5\u0DC7\x05\u0130\x99\x02\u0DC6\u0DC5" +
		"\x03\x02\x02\x02\u0DC6\u0DC7\x03\x02\x02\x02\u0DC7\xD1\x03\x02\x02\x02" +
		"\u0DC8\u0DC9\bj\x01\x02\u0DC9\u0DCA\x05\xD4k\x02\u0DCA\u0DD9\x03\x02\x02" +
		"\x02\u0DCB\u0DCC\f\x04\x02\x02\u0DCC\u0DCE\x07\xB7\x02\x02\u0DCD\u0DCF" +
		"\t.\x02\x02\u0DCE\u0DCD\x03\x02\x02\x02\u0DCE\u0DCF\x03\x02\x02\x02\u0DCF" +
		"\u0DD0\x03\x02\x02\x02\u0DD0\u0DD8\x05\xD4k\x02\u0DD1\u0DD2\f\x03\x02" +
		"\x02\u0DD2\u0DD4\x07=\x02\x02\u0DD3\u0DD5\t.\x02\x02\u0DD4\u0DD3\x03\x02" +
		"\x02\x02\u0DD4\u0DD5\x03\x02\x02\x02\u0DD5\u0DD6\x03\x02\x02\x02\u0DD6" +
		"\u0DD8\x05\xD4k\x02\u0DD7\u0DCB\x03\x02\x02\x02\u0DD7\u0DD1\x03\x02\x02" +
		"\x02\u0DD8\u0DDB\x03\x02\x02\x02\u0DD9\u0DD7\x03\x02\x02\x02\u0DD9\u0DDA" +
		"\x03\x02\x02\x02\u0DDA\xD3\x03\x02\x02\x02\u0DDB\u0DD9\x03\x02\x02\x02" +
		"\u0DDC\u0DDD\bk\x01\x02\u0DDD\u0DDE\x05\xD6l\x02\u0DDE\u0DE7\x03\x02\x02" +
		"\x02\u0DDF\u0DE0\f\x03\x02\x02\u0DE0\u0DE2\x07\u033E\x02\x02\u0DE1\u0DE3" +
		"\t.\x02\x02\u0DE2\u0DE1\x03\x02\x02\x02\u0DE2\u0DE3\x03\x02\x02\x02\u0DE3" +
		"\u0DE4\x03\x02\x02\x02\u0DE4\u0DE6\x05\xD6l\x02\u0DE5\u0DDF\x03\x02\x02" +
		"\x02\u0DE6\u0DE9\x03\x02\x02\x02\u0DE7\u0DE5\x03\x02\x02\x02\u0DE7\u0DE8" +
		"\x03\x02\x02\x02\u0DE8\xD5\x03\x02\x02\x02\u0DE9\u0DE7\x03\x02\x02\x02" +
		"\u0DEA\u0DF9\x05\xDEp\x02\u0DEB\u0DEC\x07\u0364\x02\x02\u0DEC\u0DEE\x05" +
		"\xD2j\x02\u0DED\u0DEF\x05\xFE\x80\x02\u0DEE\u0DED\x03\x02\x02\x02\u0DEE" +
		"\u0DEF\x03\x02\x02\x02\u0DEF\u0DF1\x03\x02\x02\x02\u0DF0\u0DF2\x05\u0140" +
		"\xA1\x02\u0DF1\u0DF0\x03\x02\x02\x02\u0DF1\u0DF2\x03\x02\x02\x02\u0DF2" +
		"\u0DF4\x03\x02\x02\x02\u0DF3\u0DF5\x05\u0130\x99\x02\u0DF4\u0DF3\x03\x02" +
		"\x02\x02\u0DF4\u0DF5\x03\x02\x02\x02\u0DF5\u0DF6\x03\x02\x02\x02\u0DF6" +
		"\u0DF7\x07\u0365\x02\x02\u0DF7\u0DF9\x03\x02\x02\x02\u0DF8\u0DEA\x03\x02" +
		"\x02\x02\u0DF8\u0DEB\x03\x02\x02\x02\u0DF9\xD7\x03\x02\x02\x02\u0DFA\u0DFD" +
		"\x05\xFA~\x02\u0DFB\u0DFD\x05\xFC\x7F\x02\u0DFC\u0DFA\x03\x02\x02\x02" +
		"\u0DFC\u0DFB\x03\x02\x02\x02\u0DFD\xD9\x03\x02\x02\x02\u0DFE\u0E02\x05" +
		"\xE2r\x02\u0DFF\u0E00\x07\x7F\x02\x02\u0E00\u0E01\x07\x16\x02\x02\u0E01" +
		"\u0E03\x05\u02A6\u0154\x02\u0E02\u0DFF\x03\x02\x02\x02\u0E02\u0E03\x03" +
		"\x02\x02\x02\u0E03\u0E06\x03\x02\x02\x02\u0E04\u0E05\x07f\x02\x02\u0E05" +
		"\u0E07\x05\u0142\xA2\x02\u0E06\u0E04\x03\x02\x02\x02\u0E06\u0E07\x03\x02" +
		"\x02\x02\u0E07\xDB\x03\x02\x02\x02\u0E08\u0E0D\x05\xDEp\x02\u0E09\u0E0A" +
		"\t3\x02\x02\u0E0A\u0E0C\x05\xDEp\x02\u0E0B\u0E09\x03\x02\x02\x02\u0E0C" +
		"\u0E0F\x03\x02\x02\x02\u0E0D\u0E0B\x03\x02\x02\x02\u0E0D\u0E0E\x03\x02" +
		"\x02\x02\u0E0E\u0E11\x03\x02\x02\x02\u0E0F\u0E0D\x03\x02\x02\x02\u0E10" +
		"\u0E12\x05\xFE\x80\x02\u0E11\u0E10\x03\x02\x02\x02\u0E11\u0E12\x03\x02" +
		"\x02\x02\u0E12\u0E14\x03\x02\x02\x02\u0E13\u0E15\x05\u0140\xA1\x02\u0E14" +
		"\u0E13\x03\x02\x02\x02\u0E14\u0E15\x03\x02\x02\x02\u0E15\u0E17\x03\x02" +
		"\x02\x02\u0E16\u0E18\x05\u0130\x99\x02\u0E17\u0E16\x03\x02\x02\x02\u0E17" +
		"\u0E18\x03\x02\x02\x02\u0E18\xDD\x03\x02\x02\x02\u0E19\u0E1D\x05\xCEh" +
		"\x02\u0E1A\u0E1D\x05\u026E\u0138\x02\u0E1B\u0E1D\x05\xDAn\x02\u0E1C\u0E19" +
		"\x03\x02\x02\x02\u0E1C\u0E1A\x03\x02\x02\x02\u0E1C\u0E1B\x03\x02\x02\x02" +
		"\u0E1D\xDF\x03\x02\x02\x02\u0E1E\u0E24\x05\xCEh\x02\u0E1F\u0E20\x07\xAF" +
		"\x02\x02\u0E20\u0E24\x05\u0290\u0149\x02\u0E21\u0E24\x05\u02EA\u0176\x02" +
		"\u0E22\u0E24\x05\xE2r\x02\u0E23\u0E1E\x03\x02\x02\x02\u0E23\u0E1F\x03" +
		"\x02\x02\x02\u0E23\u0E21\x03\x02\x02\x02\u0E23\u0E22\x03\x02\x02\x02\u0E24" +
		"\xE1\x03\x02\x02\x02\u0E25\u0E26\x07\xBF\x02\x02\u0E26\u0E27\x07\u024C" +
		"\x02\x02\u0E27\u0E2D\x05\u02EC\u0177\x02\u0E28\u0E29\x07\u0366\x02\x02" +
		"\u0E29\u0E2A\x07\u024C\x02\x02\u0E2A\u0E2C\x05\u02EC\u0177\x02\u0E2B\u0E28" +
		"\x03\x02\x02\x02\u0E2C\u0E2F\x03\x02\x02\x02\u0E2D\u0E2B\x03\x02\x02\x02" +
		"\u0E2D\u0E2E\x03\x02\x02\x02\u0E2E\xE3\x03\x02\x02\x02\u0E2F\u0E2D\x03" +
		"\x02\x02\x02\u0E30\u0E31\x07\x9D\x02\x02\u0E31\u0E36\x05\xE6t\x02\u0E32" +
		"\u0E33\x07\u0366\x02\x02\u0E33\u0E35\x05\xE6t\x02\u0E34\u0E32\x03\x02" +
		"\x02\x02\u0E35\u0E38\x03\x02\x02\x02\u0E36\u0E34\x03\x02\x02\x02\u0E36" +
		"\u0E37\x03\x02\x02\x02\u0E37\xE5\x03\x02\x02\x02\u0E38\u0E36\x03\x02\x02" +
		"\x02\u0E39\u0E3A\x05\u029A\u014E\x02\u0E3A\u0E3B\x07\u035B\x02\x02\u0E3B" +
		"\u0E3C\x05\u02EE\u0178\x02\u0E3C\xE7\x03\x02\x02\x02\u0E3D\u0E40\x05\u02C6" +
		"\u0164\x02\u0E3E\u0E40\x07\u037E\x02\x02\u0E3F\u0E3D\x03\x02\x02\x02\u0E3F" +
		"\u0E3E\x03\x02\x02\x02\u0E40\xE9\x03\x02\x02\x02\u0E41\u0E42\x07C\x02" +
		"\x02\u0E42\u0E4C\t4\x02\x02\u0E43\u0E44\x07\u0200\x02\x02\u0E44\u0E49" +
		"\x05\u0290\u0149\x02\u0E45\u0E46\x07\u0366\x02\x02\u0E46\u0E48\x05\u0290" +
		"\u0149\x02\u0E47\u0E45\x03\x02\x02\x02\u0E48\u0E4B\x03\x02\x02\x02\u0E49" +
		"\u0E47\x03\x02\x02\x02\u0E49\u0E4A\x03\x02\x02\x02\u0E4A\u0E4D\x03\x02" +
		"\x02\x02\u0E4B\u0E49\x03\x02\x02\x02\u0E4C\u0E43\x03\x02\x02\x02\u0E4C" +
		"\u0E4D\x03\x02\x02\x02\u0E4D\u0E50\x03\x02\x02\x02\u0E4E\u0E4F\t5\x02" +
		"\x02\u0E4F\u0E51\x07k\x02\x02\u0E50\u0E4E\x03\x02\x02\x02\u0E50\u0E51" +
		"\x03\x02\x02\x02\u0E51\u0E57\x03\x02\x02\x02\u0E52\u0E53\x07j\x02\x02" +
		"\u0E53\u0E54\x07R\x02\x02\u0E54\u0E55\x07\u0254\x02\x02\u0E55\u0E57\x07" +
		"\u01ED\x02\x02\u0E56\u0E41\x03\x02\x02\x02\u0E56\u0E52\x03\x02\x02\x02" +
		"\u0E57\xEB\x03\x02\x02\x02\u0E58\u0E5A\x07.\x02\x02\u0E59\u0E5B\x07m\x02" +
		"\x02\u0E5A\u0E59\x03\x02\x02\x02\u0E5A\u0E5B\x03\x02\x02\x02\u0E5B\u0E5D" +
		"\x03\x02\x02\x02\u0E5C\u0E5E\x07\u0227\x02\x02\u0E5D\u0E5C\x03\x02\x02" +
		"\x02\u0E5D\u0E5E\x03\x02\x02\x02\u0E5E\u0E60\x03\x02\x02\x02\u0E5F\u0E61" +
		"\x07Q\x02\x02\u0E60\u0E5F\x03\x02\x02\x02\u0E60\u0E61\x03\x02\x02\x02" +
		"\u0E61\u0E62\x03\x02\x02\x02\u0E62\u0E63\x07F\x02\x02\u0E63\u0E68\x05" +
		"\u0290\u0149\x02\u0E64\u0E66\x07\x0F\x02\x02\u0E65\u0E64\x03\x02\x02\x02" +
		"\u0E65\u0E66\x03\x02\x02\x02\u0E66\u0E67\x03\x02\x02\x02\u0E67\u0E69\x05" +
		"\u02C6\u0164\x02\u0E68\u0E65\x03\x02\x02\x02\u0E68\u0E69\x03\x02\x02\x02" +
		"\u0E69\u0E6F\x03\x02\x02\x02\u0E6A\u0E6B\x07\x84\x02\x02\u0E6B\u0E6C\x07" +
		"\u0364\x02\x02\u0E6C\u0E6D\x05\u02A2\u0152\x02\u0E6D\u0E6E\x07\u0365\x02" +
		"\x02\u0E6E\u0E70\x03\x02\x02\x02\u0E6F\u0E6A\x03\x02\x02\x02\u0E6F\u0E70" +
		"\x03\x02\x02\x02\u0E70\u0E73\x03\x02\x02\x02\u0E71\u0E72\x07\xC2\x02\x02" +
		"\u0E72\u0E74\x05\u0328\u0195\x02\u0E73\u0E71\x03\x02\x02\x02\u0E73\u0E74" +
		"\x03\x02\x02\x02\u0E74\u0E76\x03\x02\x02\x02\u0E75\u0E77\x05\xFE\x80\x02" +
		"\u0E76\u0E75\x03\x02\x02\x02\u0E76\u0E77\x03\x02\x02\x02\u0E77\u0E7A\x03" +
		"\x02\x02\x02\u0E78\u0E79\x07f\x02\x02\u0E79\u0E7B\x05\u0142\xA2\x02\u0E7A" +
		"\u0E78\x03\x02\x02\x02\u0E7A\u0E7B\x03\x02\x02\x02\u0E7B\xED\x03\x02\x02" +
		"\x02\u0E7C\u0E7E\x07.\x02\x02\u0E7D\u0E7F\x07m\x02\x02\u0E7E\u0E7D\x03" +
		"\x02\x02\x02\u0E7E\u0E7F\x03\x02\x02\x02\u0E7F\u0E81\x03\x02\x02\x02\u0E80" +
		"\u0E82\x07\u0227\x02\x02\u0E81\u0E80\x03\x02\x02\x02\u0E81\u0E82\x03\x02" +
		"\x02\x02\u0E82\u0E84\x03\x02\x02\x02\u0E83\u0E85\x07Q\x02\x02\u0E84\u0E83" +
		"\x03\x02\x02\x02\u0E84\u0E85\x03\x02\x02\x02\u0E85\u0EAD\x03\x02\x02\x02" +
		"\u0E86\u0E89\x05\u0290\u0149\x02\u0E87\u0E88\x07\u0363\x02\x02\u0E88\u0E8A" +
		"\x07\u0354\x02\x02\u0E89\u0E87\x03\x02\x02\x02\u0E89\u0E8A\x03\x02\x02" +
		"\x02\u0E8A\u0E93\x03\x02\x02\x02\u0E8B\u0E8C\x07\u0366\x02\x02\u0E8C\u0E8F" +
		"\x05\u0290\u0149\x02\u0E8D\u0E8E\x07\u0363\x02\x02\u0E8E\u0E90\x07\u0354" +
		"\x02\x02\u0E8F\u0E8D\x03\x02\x02\x02\u0E8F\u0E90\x03\x02\x02\x02\u0E90" +
		"\u0E92\x03\x02\x02\x02\u0E91\u0E8B\x03\x02\x02\x02\u0E92\u0E95\x03\x02" +
		"\x02\x02\u0E93\u0E91\x03\x02\x02\x02\u0E93\u0E94\x03\x02\x02\x02\u0E94" +
		"\u0E96\x03\x02\x02\x02\u0E95\u0E93\x03\x02\x02\x02\u0E96\u0E97\x07F\x02" +
		"\x02\u0E97\u0E98\x05\u0102\x82\x02\u0E98\u0EAE\x03\x02\x02\x02\u0E99\u0E9A" +
		"\x07F\x02\x02\u0E9A\u0E9D\x05\u0290\u0149\x02\u0E9B\u0E9C\x07\u0363\x02" +
		"\x02\u0E9C\u0E9E\x07\u0354\x02\x02\u0E9D\u0E9B\x03\x02\x02\x02\u0E9D\u0E9E" +
		"\x03\x02\x02\x02\u0E9E\u0EA7\x03\x02\x02\x02\u0E9F\u0EA0\x07\u0366\x02" +
		"\x02\u0EA0\u0EA3\x05\u0290\u0149\x02\u0EA1\u0EA2\x07\u0363\x02\x02\u0EA2" +
		"\u0EA4\x07\u0354\x02\x02\u0EA3\u0EA1\x03\x02\x02\x02\u0EA3\u0EA4\x03\x02" +
		"\x02\x02\u0EA4\u0EA6\x03\x02\x02\x02\u0EA5\u0E9F\x03\x02\x02\x02\u0EA6" +
		"\u0EA9\x03\x02\x02\x02\u0EA7\u0EA5\x03\x02\x02\x02\u0EA7\u0EA8\x03\x02" +
		"\x02\x02\u0EA8\u0EAA\x03\x02\x02\x02\u0EA9\u0EA7\x03\x02\x02\x02\u0EAA" +
		"\u0EAB\x07\xBE\x02\x02\u0EAB\u0EAC\x05\u0102\x82\x02\u0EAC\u0EAE\x03\x02" +
		"\x02\x02\u0EAD\u0E86\x03\x02\x02\x02\u0EAD\u0E99\x03\x02\x02\x02\u0EAE" +
		"\u0EB1\x03\x02\x02\x02\u0EAF\u0EB0\x07\xC2\x02\x02\u0EB0\u0EB2\x05\u0328" +
		"\u0195\x02\u0EB1\u0EAF\x03\x02\x02\x02\u0EB1\u0EB2\x03\x02\x02\x02\u0EB2" +
		"\xEF\x03\x02\x02\x02\u0EB3\u0EB4\x07\u01A3\x02\x02\u0EB4\u0EB5\x05\u0290" +
		"\u0149\x02\u0EB5\u0EBA\x07\u0206\x02\x02\u0EB6\u0EB8\x07\x0F\x02\x02\u0EB7" +
		"\u0EB6\x03\x02\x02\x02\u0EB7\u0EB8\x03\x02\x02\x02\u0EB8\u0EB9\x03\x02" +
		"\x02\x02\u0EB9\u0EBB\x05\u02C6\u0164\x02\u0EBA\u0EB7\x03\x02\x02\x02\u0EBA" +
		"\u0EBB\x03\x02\x02\x02\u0EBB\xF1\x03\x02\x02\x02\u0EBC\u0EBD\x07\u01A3" +
		"\x02\x02\u0EBD\u0EBE\x05\u0290\u0149\x02\u0EBE\u0EBF\x07\x89\x02\x02\u0EBF" +
		"\u0EC6\x05\u0286\u0144\x02\u0EC0\u0EC1\x05\u0332\u019A\x02\u0EC1\u0EC2" +
		"\x07\u0364\x02\x02\u0EC2\u0EC3\x05\u02F0\u0179\x02\u0EC3\u0EC4\x07\u0365" +
		"\x02\x02\u0EC4\u0EC7\x03\x02\x02\x02\u0EC5\u0EC7\t6\x02\x02\u0EC6\u0EC0" +
		"\x03\x02\x02\x02\u0EC6\u0EC5\x03\x02\x02\x02\u0EC7\u0ECA\x03\x02\x02\x02" +
		"\u0EC8\u0EC9\x07\xC2\x02\x02\u0EC9\u0ECB\x05\u0328\u0195\x02\u0ECA\u0EC8" +
		"\x03\x02\x02\x02\u0ECA\u0ECB\x03\x02\x02\x02\u0ECB\u0ECE\x03\x02\x02\x02" +
		"\u0ECC\u0ECD\x07f\x02\x02\u0ECD\u0ECF\x05\u0142\xA2\x02\u0ECE\u0ECC\x03" +
		"\x02\x02\x02\u0ECE\u0ECF\x03\x02\x02\x02\u0ECF\xF3\x03\x02\x02\x02\u0ED0" +
		"\u0ED1\x07\u01A3\x02\x02\u0ED1\u0ED2\x05\u0290\u0149\x02\u0ED2\u0ED3\x07" +
		"\x89\x02\x02\u0ED3\u0ED6\t7\x02\x02\u0ED4\u0ED5\x07\xC2\x02\x02\u0ED5" +
		"\u0ED7\x05\u0328\u0195\x02\u0ED6\u0ED4\x03\x02\x02\x02\u0ED6\u0ED7\x03" +
		"\x02\x02\x02\u0ED7\u0EDA\x03\x02\x02\x02\u0ED8\u0ED9\x07f\x02\x02\u0ED9" +
		"\u0EDB\x05\u0142\xA2\x02\u0EDA\u0ED8\x03\x02\x02\x02\u0EDA\u0EDB\x03\x02" +
		"\x02\x02\u0EDB\xF5\x03\x02\x02\x02\u0EDC\u0EDD\x07\u01A3\x02\x02\u0EDD" +
		"\u0EDE\x05\u0290\u0149\x02\u0EDE\u0EDF\x07\u0150\x02\x02\u0EDF\xF7\x03" +
		"\x02\x02\x02\u0EE0\u0EE1\x07\u01AB\x02\x02\u0EE1\u0EE2\x07\xAF\x02\x02" +
		"\u0EE2\u0EE3\x07F\x02\x02\u0EE3\u0EE8\x05\u02D0\u0169\x02\u0EE4\u0EE5" +
		"\x07\u0366\x02\x02\u0EE5\u0EE7\x05\u02D0\u0169\x02\u0EE6\u0EE4\x03\x02" +
		"\x02\x02\u0EE7\u0EEA\x03\x02\x02\x02\u0EE8\u0EE6\x03\x02\x02\x02\u0EE8" +
		"\u0EE9\x03\x02\x02\x02\u0EE9\xF9\x03\x02\x02\x02\u0EEA\u0EE8\x03\x02\x02" +
		"\x02";
	private static readonly _serializedATNSegment9: string =
		"\u0EEB\u0EED\x07\xBB\x02\x02\u0EEC\u0EEE\x07m\x02\x02\u0EED\u0EEC\x03" +
		"\x02\x02\x02\u0EED\u0EEE\x03\x02\x02\x02\u0EEE\u0EF0\x03\x02\x02\x02\u0EEF" +
		"\u0EF1\x07Q\x02\x02\u0EF0\u0EEF\x03\x02\x02\x02\u0EF0\u0EF1\x03\x02\x02" +
		"\x02\u0EF1\u0EF2\x03\x02\x02\x02\u0EF2\u0EF7\x05\u0290\u0149\x02\u0EF3" +
		"\u0EF5\x07\x0F\x02\x02\u0EF4\u0EF3\x03\x02\x02\x02\u0EF4\u0EF5\x03\x02" +
		"\x02\x02\u0EF5\u0EF6\x03\x02\x02\x02\u0EF6\u0EF8\x05\u02C6\u0164\x02\u0EF7" +
		"\u0EF4\x03\x02\x02\x02\u0EF7\u0EF8\x03\x02\x02\x02\u0EF8\u0EF9\x03\x02" +
		"\x02\x02\u0EF9\u0EFA\x07\x9D\x02\x02\u0EFA\u0EFF\x05\xE6t\x02\u0EFB\u0EFC" +
		"\x07\u0366\x02\x02\u0EFC\u0EFE\x05\xE6t\x02\u0EFD\u0EFB\x03\x02\x02\x02" +
		"\u0EFE\u0F01\x03\x02\x02\x02\u0EFF\u0EFD\x03\x02\x02\x02\u0EFF\u0F00\x03" +
		"\x02\x02\x02\u0F00\u0F04\x03\x02\x02\x02\u0F01\u0EFF\x03\x02\x02\x02\u0F02" +
		"\u0F03\x07\xC2\x02\x02\u0F03\u0F05\x05\u0328\u0195\x02\u0F04\u0F02\x03" +
		"\x02\x02\x02\u0F04\u0F05\x03\x02\x02\x02\u0F05\u0F07\x03\x02\x02\x02\u0F06" +
		"\u0F08\x05\xFE\x80\x02\u0F07\u0F06\x03\x02\x02\x02\u0F07\u0F08\x03\x02" +
		"\x02\x02\u0F08\u0F0A\x03\x02\x02\x02\u0F09\u0F0B\x05\u0140\xA1\x02\u0F0A" +
		"\u0F09\x03\x02\x02\x02\u0F0A\u0F0B\x03\x02\x02\x02\u0F0B\xFB\x03\x02\x02" +
		"\x02\u0F0C\u0F0E\x07\xBB\x02\x02\u0F0D\u0F0F\x07m\x02\x02\u0F0E\u0F0D" +
		"\x03\x02\x02\x02\u0F0E\u0F0F\x03\x02\x02\x02\u0F0F\u0F11\x03\x02\x02\x02" +
		"\u0F10\u0F12\x07Q\x02\x02\u0F11\u0F10\x03\x02\x02\x02\u0F11\u0F12\x03" +
		"\x02\x02\x02\u0F12\u0F13\x03\x02\x02\x02\u0F13\u0F14\x05\u0102\x82\x02" +
		"\u0F14\u0F15\x07\x9D\x02\x02\u0F15\u0F1A\x05\xE6t\x02\u0F16\u0F17\x07" +
		"\u0366\x02\x02\u0F17\u0F19\x05\xE6t\x02\u0F18\u0F16\x03\x02\x02\x02\u0F19" +
		"\u0F1C\x03\x02\x02\x02\u0F1A\u0F18\x03\x02\x02\x02\u0F1A\u0F1B\x03\x02" +
		"\x02\x02\u0F1B\u0F1F\x03\x02\x02\x02\u0F1C\u0F1A\x03\x02\x02\x02\u0F1D" +
		"\u0F1E\x07\xC2\x02\x02\u0F1E\u0F20\x05\u0328\u0195\x02\u0F1F\u0F1D\x03" +
		"\x02\x02\x02\u0F1F\u0F20\x03\x02\x02\x02\u0F20\xFD\x03\x02\x02\x02\u0F21" +
		"\u0F22\x07\x7F\x02\x02\u0F22\u0F23\x07\x16\x02\x02\u0F23\u0F28\x05\u0100" +
		"\x81\x02\u0F24\u0F25\x07\u0366\x02\x02\u0F25\u0F27\x05\u0100\x81\x02\u0F26" +
		"\u0F24\x03\x02\x02\x02\u0F27\u0F2A\x03\x02\x02\x02\u0F28\u0F26\x03\x02" +
		"\x02\x02\u0F28\u0F29\x03\x02\x02\x02\u0F29\xFF\x03\x02\x02\x02\u0F2A\u0F28" +
		"\x03\x02\x02\x02\u0F2B\u0F2D\x05\u0328\u0195\x02\u0F2C\u0F2E\t8\x02\x02" +
		"\u0F2D\u0F2C\x03\x02\x02\x02\u0F2D\u0F2E\x03\x02\x02\x02\u0F2E\u0101\x03" +
		"\x02\x02\x02\u0F2F\u0F34\x05\u0104\x83\x02\u0F30\u0F31\x07\u0366\x02\x02" +
		"\u0F31\u0F33\x05\u0104\x83\x02\u0F32\u0F30\x03\x02\x02\x02\u0F33\u0F36" +
		"\x03\x02\x02\x02\u0F34\u0F32\x03\x02\x02\x02\u0F34\u0F35\x03\x02\x02\x02" +
		"\u0F35\u0103\x03\x02\x02\x02\u0F36\u0F34\x03\x02\x02\x02\u0F37\u0F3B\x05" +
		"\u0106\x84\x02\u0F38\u0F3A\x05\u010E\x88\x02\u0F39\u0F38\x03\x02\x02\x02" +
		"\u0F3A\u0F3D\x03\x02\x02\x02\u0F3B\u0F39\x03\x02\x02\x02\u0F3B\u0F3C\x03" +
		"\x02\x02\x02\u0F3C\u0F4A\x03\x02\x02\x02\u0F3D\u0F3B\x03\x02\x02\x02\u0F3E" +
		"\u0F3F\x07\u0364\x02\x02\u0F3F\u0F43\x05\u0106\x84\x02\u0F40\u0F42\x05" +
		"\u010E\x88\x02\u0F41\u0F40\x03\x02\x02\x02\u0F42\u0F45\x03\x02\x02\x02" +
		"\u0F43\u0F41\x03\x02\x02\x02\u0F43\u0F44\x03\x02\x02\x02\u0F44\u0F46\x03" +
		"\x02\x02\x02\u0F45\u0F43\x03\x02\x02\x02\u0F46\u0F47\x07\u0365\x02\x02" +
		"\u0F47\u0F4A\x03\x02\x02\x02\u0F48\u0F4A\x05\u0120\x91\x02\u0F49\u0F37" +
		"\x03\x02\x02\x02\u0F49\u0F3E\x03\x02\x02\x02\u0F49\u0F48\x03\x02\x02\x02" +
		"\u0F4A\u0105\x03\x02\x02\x02\u0F4B\u0F51\x05\u0290\u0149\x02\u0F4C\u0F4D" +
		"\x07\x84\x02\x02\u0F4D\u0F4E\x07\u0364\x02\x02\u0F4E\u0F4F\x05\u02A2\u0152" +
		"\x02\u0F4F\u0F50\x07\u0365\x02\x02\u0F50\u0F52\x03\x02\x02\x02\u0F51\u0F4C" +
		"\x03\x02\x02\x02\u0F51\u0F52\x03\x02\x02\x02\u0F52\u0F57\x03\x02\x02\x02" +
		"\u0F53\u0F55\x07\x0F\x02\x02\u0F54\u0F53\x03\x02\x02\x02\u0F54\u0F55\x03" +
		"\x02\x02\x02\u0F55\u0F56\x03\x02\x02\x02\u0F56\u0F58\x05\u02C6\u0164\x02" +
		"\u0F57\u0F54\x03\x02\x02\x02\u0F57\u0F58\x03\x02\x02\x02\u0F58\u0F61\x03" +
		"\x02\x02\x02\u0F59\u0F5E\x05\u010A\x86\x02\u0F5A\u0F5B\x07\u0366\x02\x02" +
		"\u0F5B\u0F5D\x05\u010A\x86\x02\u0F5C\u0F5A\x03\x02\x02\x02\u0F5D\u0F60" +
		"\x03\x02\x02\x02\u0F5E\u0F5C\x03\x02\x02\x02\u0F5E\u0F5F\x03\x02\x02\x02" +
		"\u0F5F\u0F62\x03\x02\x02\x02\u0F60\u0F5E\x03\x02\x02\x02\u0F61\u0F59\x03" +
		"\x02\x02\x02\u0F61\u0F62\x03\x02\x02\x02\u0F62\u0F79\x03\x02\x02\x02\u0F63" +
		"\u0F65\x07a\x02\x02\u0F64\u0F63\x03\x02\x02\x02\u0F64\u0F65\x03\x02\x02" +
		"\x02\u0F65\u0F6B\x03\x02\x02\x02\u0F66\u0F6C\x05\xCEh\x02\u0F67\u0F68" +
		"\x07\u0364\x02\x02\u0F68\u0F69\x05\xCEh\x02\u0F69\u0F6A\x07\u0365\x02" +
		"\x02\u0F6A\u0F6C\x03\x02\x02\x02\u0F6B\u0F66\x03\x02\x02\x02\u0F6B\u0F67" +
		"\x03\x02\x02\x02\u0F6C\u0F6E\x03\x02\x02\x02\u0F6D\u0F6F\x07\x0F\x02\x02" +
		"\u0F6E\u0F6D\x03\x02\x02\x02\u0F6E\u0F6F\x03\x02\x02\x02\u0F6F\u0F70\x03" +
		"\x02\x02\x02\u0F70\u0F72\x05\u02C6\u0164\x02\u0F71\u0F73\x05\u0108\x85" +
		"\x02\u0F72\u0F71\x03\x02\x02\x02\u0F72\u0F73\x03\x02\x02\x02\u0F73\u0F79" +
		"\x03\x02\x02\x02\u0F74\u0F75\x07\u0364\x02\x02\u0F75\u0F76\x05\u0102\x82" +
		"\x02\u0F76\u0F77\x07\u0365\x02\x02\u0F77\u0F79\x03\x02\x02\x02\u0F78\u0F4B" +
		"\x03\x02\x02\x02\u0F78\u0F64\x03\x02\x02\x02\u0F78\u0F74\x03\x02\x02\x02" +
		"\u0F79\u0107\x03\x02\x02\x02\u0F7A\u0F7B\x07\u0364\x02\x02\u0F7B\u0F7C" +
		"\x05\u0298\u014D\x02\u0F7C\u0F7D\x07\u0365\x02\x02\u0F7D\u0109\x03\x02" +
		"\x02\x02\u0F7E\u0F7F\t9\x02\x02\u0F7F\u0F82\t\x14\x02\x02\u0F80\u0F81" +
		"\x07C\x02\x02\u0F81\u0F83\x05\u010C\x87\x02\u0F82\u0F80\x03\x02\x02\x02" +
		"\u0F82\u0F83\x03\x02\x02\x02\u0F83\u0F84\x03\x02\x02\x02\u0F84\u0F86\x07" +
		"\u0364\x02\x02\u0F85\u0F87\x05\u0284\u0143\x02\u0F86\u0F85\x03\x02\x02" +
		"\x02\u0F86\u0F87\x03\x02\x02\x02\u0F87\u0F88\x03\x02\x02\x02\u0F88\u0F89" +
		"\x07\u0365\x02\x02\u0F89\u010B\x03\x02\x02\x02\u0F8A\u0F90\x07]\x02\x02" +
		"\u0F8B\u0F8C\x07\x7F\x02\x02\u0F8C\u0F90\x07\x16\x02\x02\u0F8D\u0F8E\x07" +
		"L\x02\x02\u0F8E\u0F90\x07\x16\x02\x02\u0F8F\u0F8A\x03\x02\x02\x02\u0F8F" +
		"\u0F8B\x03\x02\x02\x02\u0F8F\u0F8D\x03\x02\x02\x02\u0F90\u010D\x03\x02" +
		"\x02\x02\u0F91\u0F93\t:\x02\x02\u0F92\u0F91\x03\x02\x02\x02\u0F92\u0F93" +
		"\x03\x02\x02\x02\u0F93\u0F94\x03\x02\x02\x02\u0F94\u0F96\x07]\x02\x02" +
		"\u0F95\u0F97\x07a\x02\x02\u0F96\u0F95\x03\x02\x02\x02\u0F96\u0F97\x03" +
		"\x02\x02\x02\u0F97\u0F98\x03\x02\x02\x02\u0F98\u0F9C\x05\u0106\x84\x02" +
		"\u0F99\u0F9B\x05\u0110\x89\x02\u0F9A\u0F99\x03\x02\x02\x02\u0F9B\u0F9E" +
		"\x03\x02\x02\x02\u0F9C\u0F9A\x03\x02\x02\x02\u0F9C\u0F9D\x03\x02\x02\x02" +
		"\u0F9D\u0FC3\x03\x02\x02\x02\u0F9E\u0F9C\x03\x02\x02\x02\u0F9F\u0FA0\x07" +
		"\xAE\x02\x02\u0FA0\u0FA4\x05\u0106\x84\x02\u0FA1\u0FA3\x05\u0110\x89\x02" +
		"\u0FA2\u0FA1\x03\x02\x02\x02\u0FA3\u0FA6\x03\x02\x02\x02\u0FA4\u0FA2\x03" +
		"\x02\x02\x02\u0FA4\u0FA5\x03\x02\x02\x02\u0FA5\u0FC3\x03\x02\x02\x02\u0FA6" +
		"\u0FA4\x03\x02\x02\x02\u0FA7\u0FA9\t;\x02\x02\u0FA8\u0FAA\x07\x81\x02" +
		"\x02\u0FA9\u0FA8\x03\x02\x02\x02\u0FA9\u0FAA\x03\x02\x02\x02\u0FAA\u0FAB" +
		"\x03\x02\x02\x02\u0FAB\u0FAD\x07]\x02\x02\u0FAC\u0FAE\x07a\x02\x02\u0FAD" +
		"\u0FAC\x03\x02\x02\x02\u0FAD\u0FAE\x03\x02\x02\x02\u0FAE\u0FAF\x03\x02" +
		"\x02\x02\u0FAF\u0FB3\x05\u0106\x84\x02\u0FB0\u0FB2\x05\u0110\x89\x02\u0FB1" +
		"\u0FB0\x03\x02\x02\x02\u0FB2\u0FB5\x03\x02\x02\x02\u0FB3\u0FB1\x03\x02" +
		"\x02\x02\u0FB3\u0FB4\x03\x02\x02\x02\u0FB4\u0FC3\x03\x02\x02\x02\u0FB5" +
		"\u0FB3\x03\x02\x02\x02\u0FB6\u0FBE\x07s\x02\x02\u0FB7\u0FBA\x07V\x02\x02" +
		"\u0FB8\u0FBA\t;\x02\x02\u0FB9\u0FB7\x03\x02\x02\x02\u0FB9\u0FB8\x03\x02" +
		"\x02\x02\u0FBA\u0FBC\x03\x02\x02\x02\u0FBB\u0FBD\x07\x81\x02\x02\u0FBC" +
		"\u0FBB\x03\x02\x02\x02\u0FBC\u0FBD\x03\x02\x02\x02\u0FBD\u0FBF\x03\x02" +
		"\x02\x02\u0FBE\u0FB9\x03\x02\x02\x02\u0FBE\u0FBF\x03\x02\x02\x02\u0FBF" +
		"\u0FC0\x03\x02\x02\x02\u0FC0\u0FC1\x07]\x02\x02\u0FC1\u0FC3\x05\u0106" +
		"\x84\x02\u0FC2\u0F92\x03\x02\x02\x02\u0FC2\u0F9F\x03\x02\x02\x02\u0FC2" +
		"\u0FA7\x03\x02\x02\x02\u0FC2\u0FB6\x03\x02\x02\x02\u0FC3\u010F\x03\x02" +
		"\x02\x02\u0FC4\u0FC5\x07y\x02\x02\u0FC5\u0FCC\x05\u0328\u0195\x02\u0FC6" +
		"\u0FC7\x07\xBE\x02\x02\u0FC7\u0FC8\x07\u0364\x02\x02\u0FC8\u0FC9\x05\u0298" +
		"\u014D\x02\u0FC9\u0FCA\x07\u0365\x02\x02\u0FCA\u0FCC\x03\x02\x02\x02\u0FCB" +
		"\u0FC4\x03\x02\x02\x02\u0FCB\u0FC6\x03\x02\x02\x02\u0FCC\u0111\x03\x02" +
		"\x02\x02\u0FCD\u0FCE\x07\u0364\x02\x02\u0FCE\u0FCF\x05\u0116\x8C\x02\u0FCF" +
		"\u0FD0\x07\u0365\x02\x02\u0FD0\u0FD6\x03\x02\x02\x02\u0FD1\u0FD2\x07\u0364" +
		"\x02\x02\u0FD2\u0FD3\x05\u0112\x8A\x02\u0FD3\u0FD4\x07\u0365\x02\x02\u0FD4" +
		"\u0FD6\x03\x02\x02\x02\u0FD5\u0FCD\x03\x02\x02\x02\u0FD5\u0FD1\x03\x02" +
		"\x02\x02\u0FD6\u0113\x03\x02\x02\x02\u0FD7\u0FD8\x07\u0364\x02\x02\u0FD8" +
		"\u0FD9\x05\u0118\x8D\x02\u0FD9\u0FDA\x07\u0365\x02\x02\u0FDA\u0FE0\x03" +
		"\x02\x02\x02\u0FDB\u0FDC\x07\u0364\x02\x02\u0FDC\u0FDD\x05\u0114\x8B\x02" +
		"\u0FDD\u0FDE\x07\u0365\x02\x02\u0FDE\u0FE0\x03\x02\x02\x02\u0FDF\u0FD7" +
		"\x03\x02\x02\x02\u0FDF\u0FDB\x03\x02\x02\x02\u0FE0\u0115\x03\x02\x02\x02" +
		"\u0FE1\u0FE5\x07\x9C\x02\x02\u0FE2\u0FE4\x05\u012A\x96\x02\u0FE3\u0FE2" +
		"\x03\x02\x02\x02\u0FE4\u0FE7\x03\x02\x02\x02\u0FE5\u0FE3\x03\x02\x02\x02" +
		"\u0FE5\u0FE6\x03\x02\x02\x02\u0FE6\u0FE8\x03\x02\x02\x02\u0FE7\u0FE5\x03" +
		"\x02\x02\x02\u0FE8\u0FEA\x05\u012C\x97\x02\u0FE9\u0FEB\x05\u0130\x99\x02" +
		"\u0FEA\u0FE9\x03\x02\x02\x02\u0FEA\u0FEB\x03\x02\x02\x02\u0FEB\u0FEC\x03" +
		"\x02\x02\x02\u0FEC\u0FEE\x05\u0136\x9C\x02\u0FED\u0FEF\x05\u0138\x9D\x02" +
		"\u0FEE\u0FED\x03\x02\x02\x02\u0FEE\u0FEF\x03\x02\x02\x02\u0FEF\u0FF1\x03" +
		"\x02\x02\x02\u0FF0\u0FF2\x05\u013A\x9E\x02\u0FF1\u0FF0\x03\x02\x02\x02" +
		"\u0FF1\u0FF2\x03\x02\x02\x02\u0FF2\u0FF4\x03\x02\x02\x02\u0FF3\u0FF5\x05" +
		"\u013C\x9F\x02\u0FF4\u0FF3\x03\x02\x02\x02\u0FF4\u0FF5\x03\x02\x02\x02" +
		"\u0FF5\u0FF7\x03\x02\x02\x02\u0FF6\u0FF8\x05\xFE\x80\x02\u0FF7\u0FF6\x03" +
		"\x02\x02\x02\u0FF7\u0FF8\x03\x02\x02\x02\u0FF8\u0FFA\x03\x02\x02\x02\u0FF9" +
		"\u0FFB\x05\u0140\xA1\x02\u0FFA\u0FF9\x03\x02\x02\x02\u0FFA\u0FFB\x03\x02" +
		"\x02\x02\u0FFB\u1018\x03\x02\x02\x02\u0FFC\u1000\x07\x9C\x02\x02\u0FFD" +
		"\u0FFF\x05\u012A\x96\x02\u0FFE\u0FFD\x03\x02\x02\x02\u0FFF\u1002\x03\x02" +
		"\x02\x02\u1000\u0FFE\x03\x02\x02\x02\u1000\u1001\x03\x02\x02\x02\u1001" +
		"\u1003\x03\x02\x02\x02\u1002\u1000\x03\x02\x02\x02\u1003\u1004\x05\u012C" +
		"\x97\x02\u1004\u1006\x05\u0136\x9C\x02\u1005\u1007\x05\u0138\x9D\x02\u1006" +
		"\u1005\x03\x02\x02\x02\u1006\u1007\x03\x02\x02\x02\u1007\u1009\x03\x02" +
		"\x02\x02\u1008\u100A\x05\u013A\x9E\x02\u1009\u1008\x03\x02\x02\x02\u1009" +
		"\u100A\x03\x02\x02\x02\u100A\u100C\x03\x02\x02\x02\u100B\u100D\x05\u013C" +
		"\x9F\x02\u100C\u100B\x03\x02\x02\x02\u100C\u100D\x03\x02\x02\x02\u100D" +
		"\u100F\x03\x02\x02\x02\u100E\u1010\x05\xFE\x80\x02\u100F\u100E\x03\x02" +
		"\x02\x02\u100F\u1010\x03\x02\x02\x02\u1010\u1012\x03\x02\x02\x02\u1011" +
		"\u1013\x05\u0140\xA1\x02\u1012\u1011\x03\x02\x02\x02\u1012\u1013\x03\x02" +
		"\x02\x02\u1013\u1015\x03\x02\x02\x02\u1014\u1016\x05\u0130\x99\x02\u1015" +
		"\u1014\x03\x02\x02\x02\u1015\u1016\x03\x02\x02\x02\u1016\u1018\x03\x02" +
		"\x02\x02\u1017\u0FE1\x03\x02\x02\x02\u1017\u0FFC\x03\x02\x02\x02\u1018" +
		"\u0117\x03\x02\x02\x02\u1019\u101D\x07\x9C\x02\x02\u101A\u101C\x05\u012A" +
		"\x96\x02\u101B\u101A\x03\x02\x02\x02\u101C\u101F\x03\x02\x02\x02\u101D" +
		"\u101B\x03\x02\x02\x02\u101D\u101E\x03\x02\x02\x02\u101E\u1020\x03\x02" +
		"\x02\x02\u101F\u101D\x03\x02\x02\x02\u1020\u1021\x05\u012C\x97\x02\u1021" +
		"\u1023\x05\u0136\x9C\x02\u1022\u1024\x05\u0138\x9D\x02\u1023\u1022\x03" +
		"\x02\x02\x02\u1023\u1024\x03\x02\x02\x02\u1024\u1026\x03\x02\x02\x02\u1025" +
		"\u1027\x05\u013A\x9E\x02\u1026\u1025\x03\x02\x02\x02\u1026\u1027\x03\x02" +
		"\x02\x02\u1027\u1029\x03\x02\x02\x02\u1028\u102A\x05\u013C\x9F\x02\u1029" +
		"\u1028\x03\x02\x02\x02\u1029\u102A\x03\x02\x02\x02\u102A\u102C\x03\x02" +
		"\x02\x02\u102B\u102D\x05\xFE\x80\x02\u102C\u102B\x03\x02\x02\x02\u102C" +
		"\u102D\x03\x02\x02\x02\u102D\u102F\x03\x02\x02\x02\u102E\u1030\x05\u0140" +
		"\xA1\x02\u102F\u102E\x03\x02\x02\x02\u102F\u1030\x03\x02\x02\x02\u1030" +
		"\u0119\x03\x02\x02\x02\u1031\u1033\x07\xB7\x02\x02\u1032\u1034\t.\x02" +
		"\x02\u1033\u1032\x03\x02\x02\x02\u1033\u1034\x03\x02\x02\x02\u1034\u1035" +
		"\x03\x02\x02\x02\u1035\u1036\x05\u0114\x8B\x02\u1036\u011B\x03\x02\x02" +
		"\x02\u1037\u1039\x07\xB7\x02\x02\u1038\u103A\t.\x02\x02\u1039\u1038\x03" +
		"\x02\x02\x02\u1039\u103A\x03\x02\x02\x02\u103A\u103D\x03\x02\x02\x02\u103B" +
		"\u103E\x05\u0118\x8D\x02\u103C\u103E\x05\u0114\x8B\x02\u103D\u103B\x03" +
		"\x02\x02\x02\u103D\u103C\x03\x02\x02\x02\u103E\u011D\x03\x02\x02\x02\u103F" +
		"\u104E\x07a\x02\x02\u1040\u104F\x05\u0118\x8D\x02\u1041\u104F\x05\u0114" +
		"\x8B\x02\u1042\u1045\x07\u0364\x02\x02\u1043\u1046\x05\u0118\x8D\x02\u1044" +
		"\u1046\x05\u0114\x8B\x02\u1045\u1043\x03\x02\x02\x02\u1045\u1044\x03\x02" +
		"\x02\x02\u1046\u1047\x03\x02\x02\x02\u1047\u104C\x07\u0365\x02\x02\u1048" +
		"\u104A\x07\x0F\x02\x02\u1049\u1048\x03\x02\x02\x02\u1049\u104A\x03\x02" +
		"\x02\x02\u104A\u104B\x03\x02\x02\x02\u104B\u104D\x05\u02C6\u0164\x02\u104C" +
		"\u1049\x03\x02\x02\x02\u104C\u104D\x03\x02\x02\x02\u104D\u104F\x03\x02" +
		"\x02\x02\u104E\u1040\x03\x02\x02\x02\u104E\u1041\x03\x02\x02\x02\u104E" +
		"\u1042\x03\x02\x02\x02\u104F\u011F\x03\x02\x02\x02\u1050\u1051\x07\xFF" +
		"\x02\x02\u1051\u1052\x07\u0364\x02\x02\u1052\u1053\x07\u0374\x02\x02\u1053" +
		"\u1054\x07\u0366\x02\x02\u1054\u1055\x07\u0374\x02\x02\u1055\u1056\x07" +
		"\u0153\x02\x02\u1056\u1057\x07\u0364\x02\x02\u1057\u1058\x05\u0122\x92" +
		"\x02\u1058\u1059\x07\u0365\x02\x02\u1059\u105E\x07\u0365\x02\x02\u105A" +
		"\u105C\x07\x0F\x02\x02\u105B\u105A\x03\x02\x02\x02\u105B\u105C\x03\x02" +
		"\x02\x02\u105C\u105D\x03\x02\x02\x02\u105D\u105F\x05\u02C6\u0164\x02\u105E" +
		"\u105B\x03\x02\x02\x02\u105E\u105F\x03\x02\x02\x02\u105F\u0121\x03\x02" +
		"\x02\x02\u1060\u1065\x05\u0124\x93\x02\u1061\u1062\x07\u0366\x02\x02\u1062" +
		"\u1064\x05\u0124\x93\x02\u1063\u1061\x03\x02\x02\x02\u1064\u1067\x03\x02" +
		"\x02\x02\u1065\u1063\x03\x02\x02\x02\u1065\u1066\x03\x02\x02\x02\u1066" +
		"\u0123\x03\x02\x02\x02\u1067\u1065\x03\x02\x02\x02\u1068\u1079\x05\u029A" +
		"\u014E\x02\u1069\u106A\x07C\x02\x02\u106A\u107A\x07\u0102\x02\x02\u106B" +
		"\u1077\x05\u02DA\u016E\x02\u106C\u106D\x07\u0103\x02\x02\u106D\u106F\x07" +
		"\u0374\x02\x02\u106E\u1070\x05\u0126\x94\x02\u106F\u106E\x03\x02\x02\x02" +
		"\u106F\u1070\x03\x02\x02\x02\u1070\u1072\x03\x02\x02\x02\u1071\u1073\x05" +
		"\u0128\x95\x02\u1072\u1071\x03\x02\x02\x02\u1072\u1073\x03\x02\x02\x02" +
		"\u1073\u1078\x03\x02\x02\x02\u1074\u1075\x07>\x02\x02\u1075\u1076\x07" +
		"\u0103\x02\x02\u1076\u1078\x07\u0374\x02\x02\u1077\u106C\x03\x02\x02\x02" +
		"\u1077\u1074\x03\x02\x02\x02\u1078\u107A\x03\x02\x02\x02\u1079\u1069\x03" +
		"\x02\x02\x02\u1079\u106B\x03\x02\x02\x02\u107A\u1086\x03\x02\x02\x02\u107B" +
		"\u107D\x07\u0101\x02\x02\u107C\u107E\x07\u0103\x02\x02\u107D\u107C\x03" +
		"\x02\x02\x02\u107D\u107E\x03\x02\x02\x02\u107E\u107F\x03\x02\x02\x02\u107F" +
		"\u1080\x07\u0374\x02\x02\u1080\u1081\x07\u0153\x02\x02\u1081\u1082\x07" +
		"\u0364\x02\x02\u1082\u1083\x05\u0122\x92\x02\u1083\u1084\x07\u0365\x02" +
		"\x02\u1084\u1086\x03\x02\x02\x02\u1085\u1068\x03\x02\x02\x02\u1085\u107B" +
		"\x03\x02\x02\x02\u1086\u0125\x03\x02\x02\x02\u1087\u108C\x07v\x02\x02" +
		"\u1088\u108C\x07\u0180\x02\x02\u1089\u108A\x07,\x02\x02\u108A\u108C\x05" +
		"\u02F6\u017C\x02\u108B\u1087\x03\x02\x02\x02\u108B\u1088\x03\x02\x02\x02" +
		"\u108B\u1089\x03\x02\x02\x02\u108C\u108D\x03\x02\x02\x02\u108D\u108E\x07" +
		"y\x02\x02\u108E\u108F\x079\x02\x02\u108F\u0127\x03\x02\x02\x02\u1090\u1095" +
		"\x07v\x02\x02\u1091\u1095\x07\u0180\x02\x02\u1092\u1093\x07,\x02\x02\u1093" +
		"\u1095\x05\u02F6\u017C\x02\u1094\u1090\x03\x02\x02\x02\u1094\u1091\x03" +
		"\x02\x02\x02\u1094\u1092\x03\x02\x02\x02\u1095\u1096\x03\x02\x02\x02\u1096" +
		"\u1097\x07y\x02\x02\u1097\u1098\x07\u0180\x02\x02\u1098\u0129\x03\x02" +
		"\x02\x02\u1099\u10A2\t<\x02\x02\u109A\u10A2\x07N\x02\x02\u109B\u10A2\x07" +
		"\xAE\x02\x02\u109C\u10A2\x07\xAA\x02\x02\u109D\u10A2\x07\xA8\x02\x02\u109E" +
		"\u10A2\x07\u027E\x02\x02\u109F\u10A2\t=\x02\x02\u10A0\u10A2\x07\xA9\x02" +
		"\x02\u10A1\u1099\x03\x02\x02\x02\u10A1\u109A\x03\x02\x02\x02\u10A1\u109B" +
		"\x03\x02\x02\x02\u10A1\u109C\x03\x02\x02\x02\u10A1\u109D\x03\x02\x02\x02" +
		"\u10A1\u109E\x03\x02\x02\x02\u10A1\u109F\x03\x02\x02\x02\u10A1\u10A0\x03" +
		"\x02\x02\x02\u10A2\u012B\x03\x02\x02\x02\u10A3\u10A6\x07\u0354\x02\x02" +
		"\u10A4\u10A6\x05\u012E\x98\x02\u10A5\u10A3\x03\x02\x02\x02\u10A5\u10A4" +
		"\x03\x02\x02\x02\u10A6\u10AB\x03\x02\x02\x02\u10A7\u10A8\x07\u0366\x02" +
		"\x02\u10A8\u10AA\x05\u012E\x98\x02\u10A9\u10A7\x03\x02\x02\x02\u10AA\u10AD" +
		"\x03\x02\x02\x02\u10AB\u10A9\x03\x02\x02\x02\u10AB\u10AC\x03\x02\x02\x02" +
		"\u10AC\u012D\x03\x02\x02\x02\u10AD\u10AB\x03\x02\x02\x02\u10AE\u10AF\x05" +
		"\u02C2\u0162\x02\u10AF\u10B0\x07\u0363\x02\x02\u10B0\u10B1\x07\u0354\x02" +
		"\x02\u10B1\u10CC\x03\x02\x02\x02\u10B2\u10B7\x05\u029A\u014E\x02\u10B3" +
		"\u10B5\x07\x0F\x02\x02\u10B4\u10B3\x03\x02\x02\x02\u10B4\u10B5\x03\x02" +
		"\x02\x02\u10B5\u10B6\x03\x02\x02\x02\u10B6\u10B8\x05\u02C6\u0164\x02\u10B7" +
		"\u10B4\x03\x02\x02\x02\u10B7\u10B8\x03\x02\x02\x02\u10B8\u10CC\x03\x02" +
		"\x02\x02\u10B9\u10BE\x05\u0300\u0181\x02\u10BA\u10BC\x07\x0F\x02\x02\u10BB" +
		"\u10BA\x03\x02\x02\x02\u10BB\u10BC\x03\x02\x02\x02\u10BC\u10BD\x03\x02" +
		"\x02\x02\u10BD\u10BF\x05\u02C6\u0164\x02\u10BE\u10BB\x03\x02\x02\x02\u10BE" +
		"\u10BF\x03\x02\x02\x02\u10BF\u10CC\x03\x02\x02\x02\u10C0\u10C1\x07\u037E" +
		"\x02\x02\u10C1\u10C3\x07\u034B\x02\x02\u10C2\u10C0\x03\x02\x02\x02\u10C2" +
		"\u10C3\x03\x02\x02\x02\u10C3\u10C4\x03\x02\x02\x02\u10C4\u10C9\x05\u0328" +
		"\u0195\x02\u10C5\u10C7\x07\x0F\x02\x02\u10C6\u10C5\x03\x02\x02\x02\u10C6" +
		"\u10C7\x03\x02\x02\x02\u10C7\u10C8\x03\x02\x02\x02\u10C8\u10CA\x05\u02C6" +
		"\u0164\x02\u10C9\u10C6\x03\x02\x02\x02\u10C9\u10CA\x03\x02\x02\x02\u10CA" +
		"\u10CC\x03\x02\x02\x02\u10CB\u10AE\x03\x02\x02\x02\u10CB\u10B2\x03\x02" +
		"\x02\x02\u10CB\u10B9\x03\x02\x02\x02\u10CB\u10C2\x03\x02\x02\x02\u10CC" +
		"\u012F\x03\x02\x02\x02\u10CD\u10CE\x07Z\x02\x02\u10CE\u10D3\x05\xE8u\x02" +
		"\u10CF\u10D0\x07\u0366\x02\x02\u10D0\u10D2\x05\xE8u\x02\u10D1\u10CF\x03" +
		"\x02\x02\x02\u10D2\u10D5\x03\x02\x02\x02\u10D3\u10D1\x03\x02\x02\x02\u10D3" +
		"\u10D4\x03\x02\x02\x02\u10D4\u10F2\x03\x02\x02\x02\u10D5\u10D3\x03\x02" +
		"\x02\x02\u10D6\u10D7\x07Z\x02\x02\u10D7\u10D8\x07\u0176\x02\x02\u10D8" +
		"\u10F2\x07\u0374\x02\x02\u10D9\u10DA\x07Z\x02\x02\u10DA\u10DB\x07\x82" +
		"\x02\x02\u10DB\u10DF\x07\u0374\x02\x02\u10DC\u10DD\x07\x1C\x02\x02\u10DD" +
		"\u10DE\x07\x9D\x02\x02\u10DE\u10E0\x05\u02B4\u015B\x02\u10DF\u10DC\x03" +
		"\x02\x02\x02\u10DF\u10E0\x03\x02\x02\x02\u10E0\u10E7\x03\x02\x02\x02\u10E1" +
		"\u10E3\t0\x02\x02\u10E2\u10E4\x05\u0132\x9A\x02\u10E3\u10E2\x03\x02\x02" +
		"\x02\u10E4\u10E5\x03\x02\x02\x02\u10E5\u10E3\x03\x02\x02\x02\u10E5\u10E6" +
		"\x03\x02\x02\x02\u10E6\u10E8\x03\x02\x02\x02\u10E7\u10E1\x03\x02\x02\x02" +
		"\u10E7\u10E8\x03\x02\x02\x02\u10E8\u10EF\x03\x02\x02\x02\u10E9\u10EB\x07" +
		"h\x02\x02\u10EA\u10EC\x05\u0134\x9B\x02\u10EB\u10EA\x03\x02\x02\x02\u10EC" +
		"\u10ED\x03\x02\x02\x02\u10ED\u10EB\x03\x02\x02\x02\u10ED\u10EE\x03\x02" +
		"\x02\x02\u10EE\u10F0\x03\x02\x02\x02\u10EF\u10E9\x03\x02\x02\x02\u10EF" +
		"\u10F0\x03\x02\x02\x02\u10F0\u10F2\x03\x02\x02\x02\u10F1\u10CD\x03\x02" +
		"\x02\x02\u10F1\u10D6\x03\x02\x02\x02\u10F1\u10D9\x03\x02\x02\x02\u10F2" +
		"\u0131\x03\x02\x02\x02\u10F3\u10F4\x07\xB0\x02\x02\u10F4\u10F5\x07\x16" +
		"\x02\x02\u10F5\u1100\x07\u0374\x02\x02\u10F6\u10F8\x07}\x02\x02\u10F7" +
		"\u10F6\x03\x02\x02\x02\u10F7\u10F8\x03\x02\x02\x02\u10F8\u10F9\x03\x02" +
		"\x02\x02\u10F9\u10FA\x07:\x02\x02\u10FA\u10FB\x07\x16\x02\x02\u10FB\u1100" +
		"\x07\u0374\x02\x02\u10FC\u10FD\x07<\x02\x02\u10FD\u10FE\x07\x16\x02\x02" +
		"\u10FE\u1100\x07\u0374\x02\x02\u10FF\u10F3\x03\x02\x02\x02\u10FF\u10F7" +
		"\x03\x02\x02\x02\u10FF\u10FC\x03\x02\x02\x02\u1100\u0133\x03\x02\x02\x02" +
		"\u1101\u1102\x07\xAD\x02\x02\u1102\u1103\x07\x16\x02\x02\u1103\u1108\x07" +
		"\u0374\x02\x02\u1104\u1105\x07\xB0\x02\x02\u1105\u1106\x07\x16\x02\x02" +
		"\u1106\u1108\x07\u0374\x02\x02\u1107\u1101\x03\x02\x02\x02\u1107\u1104" +
		"\x03\x02\x02\x02\u1108\u0135\x03\x02\x02\x02\u1109\u110A\x07F\x02\x02" +
		"\u110A\u110C\x05\u0102\x82\x02\u110B\u1109\x03\x02\x02\x02\u110B\u110C" +
		"\x03\x02\x02\x02\u110C\u110F\x03\x02\x02\x02\u110D\u110E\x07\xC2\x02\x02" +
		"\u110E\u1110\x05\u0328\u0195\x02\u110F\u110D\x03\x02\x02\x02\u110F\u1110" +
		"\x03\x02\x02\x02\u1110\u0137\x03\x02\x02\x02\u1111\u1112\x07L\x02\x02" +
		"\u1112\u1113\x07\x16\x02\x02\u1113\u1118\x05\u013E\xA0\x02\u1114\u1115" +
		"\x07\u0366\x02\x02\u1115\u1117\x05\u013E\xA0\x02\u1116\u1114\x03\x02\x02" +
		"\x02\u1117\u111A\x03\x02\x02\x02\u1118\u1116\x03\x02\x02\x02\u1118\u1119" +
		"\x03\x02\x02\x02\u1119\u111D\x03\x02\x02\x02\u111A\u1118\x03\x02\x02\x02" +
		"\u111B\u111C\x07\xC4\x02\x02\u111C\u111E\x07\u024A\x02\x02\u111D\u111B" +
		"\x03\x02\x02\x02\u111D\u111E\x03\x02\x02\x02\u111E\u0139\x03\x02\x02\x02" +
		"\u111F\u1120\x07M\x02\x02\u1120\u1121\x05\u0328\u0195\x02\u1121\u013B" +
		"\x03\x02\x02\x02\u1122\u1123\x07\u02B3\x02\x02\u1123\u1124\x05\u0312\u018A" +
		"\x02\u1124\u1125\x07\x0F\x02\x02\u1125\u1126\x07\u0364\x02\x02\u1126\u1127" +
		"\x05\u0310\u0189\x02\u1127\u1131\x07\u0365\x02\x02\u1128\u1129\x07\u0366" +
		"\x02\x02\u1129\u112A\x05\u0312\u018A\x02\u112A\u112B\x07\x0F\x02\x02\u112B" +
		"\u112C\x07\u0364\x02\x02\u112C\u112D\x05\u0310\u0189\x02\u112D\u112E\x07" +
		"\u0365\x02\x02\u112E\u1130\x03\x02\x02\x02\u112F\u1128\x03\x02\x02\x02" +
		"\u1130\u1133\x03\x02\x02\x02\u1131\u112F\x03\x02\x02\x02\u1131\u1132\x03" +
		"\x02\x02\x02\u1132\u013D\x03\x02\x02\x02\u1133\u1131\x03\x02\x02\x02\u1134" +
		"\u1136\x05\u0328\u0195\x02\u1135\u1137\t8\x02\x02\u1136\u1135\x03\x02" +
		"\x02\x02\u1136\u1137\x03\x02\x02\x02\u1137\u013F\x03\x02\x02\x02\u1138" +
		"\u1143\x07f\x02\x02\u1139\u113A\x05\u0142\xA2\x02\u113A\u113B\x07\u0366" +
		"\x02\x02\u113B\u113D\x03\x02\x02\x02\u113C\u1139\x03\x02\x02\x02\u113C" +
		"\u113D\x03\x02\x02\x02\u113D\u113E\x03\x02\x02\x02\u113E\u1144\x05\u0142" +
		"\xA2\x02\u113F\u1140\x05\u0142\xA2\x02\u1140\u1141\x07\u01FF\x02\x02\u1141" +
		"\u1142\x05\u0142\xA2\x02\u1142\u1144\x03\x02\x02\x02\u1143\u113C\x03\x02" +
		"\x02\x02\u1143\u113F\x03\x02\x02\x02\u1144\u0141\x03\x02\x02\x02\u1145" +
		"\u1149\x05\u02CC\u0167\x02\u1146\u1149\x05\u02B2\u015A\x02\u1147\u1149" +
		"\x05\u02C8\u0165\x02\u1148\u1145\x03\x02\x02\x02\u1148\u1146\x03\x02\x02" +
		"\x02\u1148\u1147\x03\x02\x02\x02\u1149\u0143\x03\x02\x02\x02\u114A\u114B" +
		"\x07\u0282\x02\x02\u114B\u1154\x07\u029A\x02\x02\u114C\u1151\x05\u015A" +
		"\xAE\x02\u114D\u114E\x07\u0366\x02\x02\u114E\u1150\x05\u015A\xAE\x02\u114F" +
		"\u114D\x03\x02\x02\x02\u1150\u1153\x03\x02\x02\x02\u1151\u114F\x03\x02" +
		"\x02\x02\u1151\u1152\x03\x02\x02\x02\u1152\u1155\x03\x02\x02\x02\u1153" +
		"\u1151\x03\x02\x02\x02\u1154\u114C\x03\x02\x02\x02\u1154\u1155\x03\x02" +
		"\x02\x02\u1155\u0145\x03\x02\x02\x02\u1156\u1158\x07\u013F\x02\x02\u1157" +
		"\u1159\x07\u02B5\x02\x02\u1158\u1157\x03\x02\x02\x02\u1158\u1159\x03\x02" +
		"\x02\x02\u1159\u0147\x03\x02\x02\x02\u115A\u115C\x07\u0157\x02\x02\u115B" +
		"\u115D\x07\u02B5\x02\x02\u115C\u115B\x03\x02\x02\x02\u115C\u115D\x03\x02" +
		"\x02\x02\u115D\u1163\x03\x02\x02\x02\u115E\u1160\x07\r\x02\x02\u115F\u1161" +
		"\x07\u01F8\x02\x02\u1160\u115F\x03\x02\x02\x02\u1160\u1161\x03\x02\x02" +
		"\x02\u1161\u1162\x03\x02\x02\x02\u1162\u1164\x07\u0148\x02\x02\u1163\u115E" +
		"\x03\x02\x02\x02\u1163\u1164\x03\x02\x02\x02\u1164\u1169\x03\x02\x02\x02" +
		"\u1165\u1167\x07\u01F8\x02\x02\u1166\u1165\x03\x02\x02\x02\u1166\u1167" +
		"\x03\x02\x02\x02\u1167\u1168\x03\x02\x02\x02\u1168\u116A\x07\x8E\x02\x02" +
		"\u1169\u1166\x03\x02\x02\x02\u1169\u116A\x03\x02\x02\x02\u116A\u0149\x03" +
		"\x02\x02\x02\u116B\u116D\x07\u0249\x02\x02\u116C\u116E\x07\u02B5\x02\x02" +
		"\u116D\u116C\x03\x02\x02\x02\u116D\u116E\x03\x02\x02\x02\u116E\u1174\x03" +
		"\x02\x02\x02\u116F\u1171\x07\r\x02\x02\u1170\u1172\x07\u01F8\x02\x02\u1171" +
		"\u1170\x03\x02\x02\x02\u1171\u1172\x03\x02\x02\x02\u1172\u1173\x03\x02" +
		"\x02\x02\u1173\u1175\x07\u0148\x02\x02\u1174\u116F\x03\x02\x02\x02\u1174" +
		"\u1175\x03\x02\x02\x02\u1175\u117A\x03\x02\x02\x02\u1176\u1178\x07\u01F8" +
		"\x02\x02\u1177\u1176\x03\x02\x02\x02\u1177\u1178\x03\x02\x02\x02\u1178" +
		"\u1179\x03\x02\x02\x02\u1179\u117B\x07\x8E\x02\x02\u117A\u1177\x03\x02" +
		"\x02\x02\u117A\u117B\x03\x02\x02\x02\u117B\u014B\x03\x02\x02\x02\u117C" +
		"\u117D\x07\u024F\x02\x02\u117D\u117E\x05\u02C6\u0164\x02\u117E\u014D\x03" +
		"\x02\x02\x02\u117F\u1181\x07\u0249\x02\x02\u1180\u1182\x07\u02B5\x02\x02" +
		"\u1181\u1180\x03\x02\x02\x02\u1181\u1182\x03\x02\x02\x02\u1182\u1183\x03" +
		"\x02\x02\x02\u1183\u1185\x07\xB2\x02\x02\u1184\u1186\x07\u024F\x02\x02" +
		"\u1185\u1184\x03\x02\x02\x02\u1185\u1186\x03\x02\x02\x02\u1186\u1187\x03" +
		"\x02\x02\x02\u1187\u1188\x05\u02C6\u0164\x02\u1188\u014F\x03\x02\x02\x02" +
		"\u1189\u118A\x07\x8E\x02\x02\u118A\u118B\x07\u024F\x02\x02\u118B\u118C" +
		"\x05\u02C6\u0164\x02\u118C\u0151\x03\x02\x02\x02\u118D\u118E\x07j\x02" +
		"\x02\u118E\u118F\t>\x02\x02\u118F\u1194\x05\u015C\xAF\x02\u1190\u1191" +
		"\x07\u0366\x02\x02\u1191\u1193\x05\u015C\xAF\x02\u1192\u1190\x03\x02\x02" +
		"\x02\u1193\u1196\x03\x02\x02\x02\u1194\u1192\x03\x02\x02\x02\u1194\u1195" +
		"\x03\x02\x02\x02\u1195\u0153\x03\x02\x02\x02\u1196\u1194\x03\x02\x02\x02" +
		"\u1197\u1198";
	private static readonly _serializedATNSegment10: string =
		"\x07\xB9\x02\x02\u1198\u1199\x07\u02F2\x02\x02\u1199\u0155\x03\x02\x02" +
		"\x02\u119A\u119B\x07\x9D\x02\x02\u119B\u119C\x07\u013B\x02\x02\u119C\u119D" +
		"\x07\u035B\x02\x02\u119D\u119E\t\x1B\x02\x02\u119E\u0157\x03\x02\x02\x02" +
		"\u119F\u11A1\x07\x9D\x02\x02\u11A0\u11A2\t?\x02\x02\u11A1\u11A0\x03\x02" +
		"\x02\x02\u11A1\u11A2\x03\x02\x02\x02\u11A2\u11A3\x03\x02\x02\x02\u11A3" +
		"\u11A4\x07\u029A\x02\x02\u11A4\u11A9\x05\u0160\xB1\x02\u11A5\u11A6\x07" +
		"\u0366\x02\x02\u11A6\u11A8\x05\u0160\xB1\x02\u11A7\u11A5\x03\x02\x02\x02" +
		"\u11A8\u11AB\x03\x02\x02\x02\u11A9\u11A7\x03\x02\x02\x02\u11A9\u11AA\x03" +
		"\x02\x02\x02\u11AA\u0159\x03\x02\x02\x02\u11AB\u11A9\x03\x02\x02\x02\u11AC" +
		"\u11AD\x07\xC4\x02\x02\u11AD\u11AE\x07\u0160\x02\x02\u11AE\u11B4\x07\u025A" +
		"\x02\x02\u11AF\u11B0\x07\x89\x02\x02\u11B0\u11B4\x07\xC5\x02\x02\u11B1" +
		"\u11B2\x07\x89\x02\x02\u11B2\u11B4\x07\u0205\x02\x02\u11B3\u11AC\x03\x02" +
		"\x02\x02\u11B3\u11AF\x03\x02\x02\x02\u11B3\u11B1\x03\x02\x02\x02\u11B4" +
		"\u015B\x03\x02\x02\x02\u11B5\u11BA\x05\u0290\u0149\x02\u11B6\u11B8\x07" +
		"\x0F\x02\x02\u11B7\u11B6\x03\x02\x02\x02\u11B7\u11B8\x03\x02\x02\x02\u11B8" +
		"\u11B9\x03\x02\x02\x02\u11B9\u11BB\x05\u02C6\u0164\x02\u11BA\u11B7\x03" +
		"\x02\x02\x02\u11BA\u11BB\x03\x02\x02\x02\u11BB\u11BC\x03\x02\x02\x02\u11BC" +
		"\u11BD\x05\u015E\xB0\x02\u11BD\u015D\x03\x02\x02\x02\u11BE\u11C0\x07\x89" +
		"\x02\x02\u11BF\u11C1\x07\u01C4\x02\x02\u11C0\u11BF\x03\x02\x02\x02\u11C0" +
		"\u11C1\x03\x02\x02\x02\u11C1\u11C7\x03\x02\x02\x02\u11C2\u11C4\x07m\x02" +
		"\x02\u11C3\u11C2\x03\x02\x02\x02\u11C3\u11C4\x03\x02\x02\x02\u11C4\u11C5" +
		"\x03\x02\x02\x02\u11C5\u11C7\x07\xC5\x02\x02\u11C6\u11BE\x03\x02\x02\x02" +
		"\u11C6\u11C3\x03\x02\x02\x02\u11C7\u015F\x03\x02\x02\x02\u11C8\u11C9\x07" +
		"\u01BA\x02\x02\u11C9\u11CA\x07\u01C2\x02\x02\u11CA\u11D0\x05\u0162\xB2" +
		"\x02\u11CB\u11CC\x07\x89\x02\x02\u11CC\u11D0\x07\xC5\x02\x02\u11CD\u11CE" +
		"\x07\x89\x02\x02\u11CE\u11D0\x07\u0205\x02\x02\u11CF\u11C8\x03\x02\x02" +
		"\x02\u11CF\u11CB\x03\x02\x02\x02\u11CF\u11CD\x03\x02\x02\x02\u11D0\u0161" +
		"\x03\x02\x02\x02\u11D1\u11D2\x07\u032B\x02\x02\u11D2\u11D9\x07\x89\x02" +
		"\x02\u11D3\u11D4\x07\x89\x02\x02\u11D4\u11D9\x07\u032C\x02\x02\u11D5\u11D6" +
		"\x07\x89\x02\x02\u11D6\u11D9\x07\u032D\x02\x02\u11D7\u11D9\x07\u032E\x02" +
		"\x02\u11D8\u11D1\x03\x02\x02\x02\u11D8\u11D3\x03\x02\x02\x02\u11D8\u11D5" +
		"\x03\x02\x02\x02\u11D8\u11D7\x03\x02\x02\x02\u11D9\u0163\x03\x02\x02\x02" +
		"\u11DA\u11DB\x07\x1B\x02\x02\u11DB\u11DC\x07\u01C7\x02\x02\u11DC\u11DD" +
		"\x07\xB2\x02\x02\u11DD\u11E2\x05\u0174\xBB\x02\u11DE\u11DF\x07\u0366\x02" +
		"\x02\u11DF\u11E1\x05\u0174\xBB\x02\u11E0\u11DE\x03\x02\x02\x02\u11E1\u11E4" +
		"\x03\x02\x02\x02\u11E2\u11E0\x03\x02\x02\x02\u11E2\u11E3\x03\x02\x02\x02" +
		"\u11E3\u11E6\x03\x02\x02\x02\u11E4\u11E2\x03\x02\x02\x02\u11E5\u11E7\x05" +
		"\u0188\xC5\x02\u11E6\u11E5\x03\x02\x02\x02\u11E6\u11E7\x03\x02\x02\x02" +
		"\u11E7\u0165\x03\x02\x02\x02\u11E8\u11E9\x07\x1B\x02\x02\u11E9\u11EA\x07" +
		"\u023E\x02\x02\u11EA\u11EB\x07\u0192\x02\x02\u11EB\u11F0\x05\u018A\xC6" +
		"\x02\u11EC\u11ED\x07\u0366\x02\x02\u11ED\u11EF\x05\u018A\xC6\x02\u11EE" +
		"\u11EC\x03\x02\x02\x02\u11EF\u11F2\x03\x02\x02\x02\u11F0\u11EE\x03\x02" +
		"\x02\x02\u11F0\u11F1\x03\x02\x02\x02\u11F1\u11F4\x03\x02\x02\x02\u11F2" +
		"\u11F0\x03\x02\x02\x02\u11F3\u11F5\x05\u0188\xC5\x02\u11F4\u11F3\x03\x02" +
		"\x02\x02\u11F4\u11F5\x03\x02\x02\x02\u11F5\u0167\x03\x02\x02\x02\u11F6" +
		"\u11F7\x07\x1B\x02\x02\u11F7\u11F8\x07\u023E\x02\x02\u11F8\u11F9\x07\u025F" +
		"\x02\x02\u11F9\u11FA\x07\xB2\x02\x02\u11FA\u11FF\x05\u017E\xC0\x02\u11FB" +
		"\u11FC\x07\u0366\x02\x02\u11FC\u11FE\x05\u017E\xC0\x02\u11FD\u11FB\x03" +
		"\x02\x02\x02\u11FE\u1201\x03\x02\x02\x02\u11FF\u11FD\x03\x02\x02\x02\u11FF" +
		"\u1200\x03\x02\x02\x02\u1200\u1203\x03\x02\x02\x02\u1201\u11FF\x03\x02" +
		"\x02\x02\u1202\u1204\x05\u0188\xC5\x02\u1203\u1202\x03\x02\x02\x02\u1203" +
		"\u1204\x03\x02\x02\x02\u1204\u0169\x03\x02\x02\x02\u1205\u1206\x07\x87" +
		"\x02\x02\u1206\u1207\t@\x02\x02\u1207\u120C\x07\u01C6\x02\x02\u1208\u1209" +
		"\x07\xB2\x02\x02\u1209\u120D\x07\u0374\x02\x02\u120A\u120B\x07\x12\x02" +
		"\x02\u120B\u120D\x07\u0374\x02\x02\u120C\u1208\x03\x02\x02\x02\u120C\u120A" +
		"\x03\x02\x02\x02\u120D\u016B\x03\x02\x02\x02\u120E\u120F\x07\u0282\x02" +
		"\x02\u120F\u1218\tA\x02\x02\u1210\u1215\x05\u018E\xC8\x02\u1211\u1212" +
		"\x07\u0366\x02\x02\u1212\u1214\x05\u018E\xC8\x02\u1213\u1211\x03\x02\x02" +
		"\x02\u1214\u1217\x03\x02\x02\x02\u1215\u1213\x03\x02\x02\x02\u1215\u1216" +
		"\x03\x02\x02\x02\u1216\u1219\x03\x02\x02\x02\u1217\u1215\x03\x02\x02\x02" +
		"\u1218\u1210\x03\x02\x02\x02\u1218\u1219\x03\x02\x02\x02\u1219\u121C\x03" +
		"\x02\x02\x02\u121A\u121B\x07\u02A6\x02\x02\u121B\u121D\x05\u0190\xC9\x02" +
		"\u121C\u121A\x03\x02\x02\x02\u121C\u121D\x03\x02\x02\x02\u121D\u1221\x03" +
		"\x02\x02\x02\u121E\u1220\x05\u0192\xCA\x02\u121F\u121E\x03\x02\x02\x02" +
		"\u1220\u1223\x03\x02\x02\x02\u1221\u121F\x03\x02\x02\x02\u1221\u1222\x03" +
		"\x02\x02\x02\u1222\u1225\x03\x02\x02\x02\u1223\u1221\x03\x02\x02\x02\u1224" +
		"\u1226\x05\u0188\xC5\x02\u1225\u1224\x03\x02\x02\x02\u1225\u1226\x03\x02" +
		"\x02\x02\u1226\u016D\x03\x02\x02\x02\u1227\u1228\x07\u0288\x02\x02\u1228" +
		"\u1231\tA\x02\x02\u1229\u122E\x05\u018E\xC8\x02\u122A\u122B\x07\u0366" +
		"\x02\x02\u122B\u122D\x05\u018E\xC8\x02\u122C\u122A\x03\x02\x02\x02\u122D" +
		"\u1230\x03\x02\x02\x02\u122E\u122C\x03\x02\x02\x02\u122E\u122F\x03\x02" +
		"\x02\x02\u122F\u1232\x03\x02\x02\x02\u1230\u122E\x03\x02\x02\x02\u1231" +
		"\u1229\x03\x02\x02\x02\u1231\u1232\x03\x02\x02\x02\u1232\u1234\x03\x02" +
		"\x02\x02\u1233\u1235\x05\u0188\xC5\x02\u1234\u1233\x03\x02\x02\x02\u1234" +
		"\u1235\x03\x02\x02\x02\u1235\u016F\x03\x02\x02\x02\u1236\u1237\x07\u0282" +
		"\x02\x02\u1237\u123B\x07\u01A1\x02\x02\u1238\u1239\x07\u02A8\x02\x02\u1239" +
		"\u123A\x07\u035B\x02\x02\u123A\u123C\x07\u0374\x02\x02\u123B\u1238\x03" +
		"\x02\x02\x02\u123B\u123C\x03\x02\x02\x02\u123C\u1241\x03\x02\x02\x02\u123D" +
		"\u123E\x07\u0366\x02\x02\u123E\u123F\x07\u0213\x02\x02\u123F\u1240\x07" +
		"\u035B\x02\x02\u1240\u1242\x07\u0374\x02\x02\u1241\u123D\x03\x02\x02\x02" +
		"\u1241\u1242\x03\x02\x02\x02\u1242\u1247\x03\x02\x02\x02\u1243\u1244\x07" +
		"\u0366\x02\x02\u1244\u1245\x07\u016D\x02\x02\u1245\u1246\x07\u035B\x02" +
		"\x02\u1246\u1248\x07\u0374\x02\x02\u1247\u1243\x03\x02\x02\x02\u1247\u1248" +
		"\x03\x02\x02\x02\u1248\u0171\x03\x02\x02\x02\u1249\u124A\x07\u0288\x02" +
		"\x02\u124A\u124B\x07\u01A1\x02\x02\u124B\u0173\x03\x02\x02\x02\u124C\u124D" +
		"\x05\u0176\xBC\x02\u124D\u124E\x07\u035B\x02\x02\u124E\u124F\x07\u0374" +
		"\x02\x02\u124F\u1268\x03\x02\x02\x02\u1250\u1251\x05\u0178\xBD\x02\u1251" +
		"\u1252\x07\u035B\x02\x02\u1252\u1253\x05\u02CC\u0167\x02\u1253\u1268\x03" +
		"\x02\x02\x02\u1254\u1255\x05\u017A\xBE\x02\u1255\u1256\x07\u035B\x02\x02" +
		"\u1256\u1257\t\x1B\x02\x02\u1257\u1268\x03\x02\x02\x02\u1258\u1268\x05" +
		"\u017C\xBF\x02\u1259\u125A\x07\u01AA\x02\x02\u125A\u125B\x07\u035B\x02" +
		"\x02\u125B\u1264\x07\u0364\x02\x02\u125C\u1261\x05\u02C6\u0164\x02\u125D" +
		"\u125E\x07\u0366\x02\x02\u125E\u1260\x05\u02C6\u0164\x02\u125F\u125D\x03" +
		"\x02\x02\x02\u1260\u1263\x03\x02\x02\x02\u1261\u125F\x03\x02\x02\x02\u1261" +
		"\u1262\x03\x02\x02\x02\u1262\u1265\x03\x02\x02\x02\u1263\u1261\x03\x02" +
		"\x02\x02\u1264\u125C\x03\x02\x02\x02\u1264\u1265\x03\x02\x02\x02\u1265" +
		"\u1266\x03\x02\x02\x02\u1266\u1268\x07\u0365\x02\x02\u1267\u124C\x03\x02" +
		"\x02\x02\u1267\u1250\x03\x02\x02\x02\u1267\u1254\x03\x02\x02\x02\u1267" +
		"\u1258\x03\x02\x02\x02\u1267\u1259\x03\x02\x02\x02\u1268\u0175\x03\x02" +
		"\x02\x02\u1269\u126A\tB\x02\x02\u126A\u0177\x03\x02\x02\x02\u126B\u126C" +
		"\tC\x02\x02\u126C\u0179\x03\x02\x02\x02\u126D\u126E\tD\x02\x02\u126E\u017B" +
		"\x03\x02\x02\x02\u126F\u1270\x07\u0221\x02\x02\u1270\u1271\x07\u035B\x02" +
		"\x02\u1271\u127D\tE\x02\x02\u1272\u1273\x07\u0240\x02\x02\u1273\u1274" +
		"\x07\u035B\x02\x02\u1274\u127D\tF\x02\x02\u1275\u1276\x07\u0138\x02\x02" +
		"\u1276\u127A\x07\u035B\x02\x02\u1277\u127B\x07\u01FD\x02\x02\u1278\u127B" +
		"\x07\u01C4\x02\x02\u1279\u127B\x05\u0194\xCB\x02\u127A\u1277\x03\x02\x02" +
		"\x02\u127A\u1278\x03\x02\x02\x02\u127A\u1279\x03\x02\x02\x02\u127B\u127D" +
		"\x03\x02\x02\x02\u127C\u126F\x03\x02\x02\x02\u127C\u1272\x03\x02\x02\x02" +
		"\u127C\u1275\x03\x02\x02\x02\u127D\u017D\x03\x02\x02\x02\u127E\u127F\x05" +
		"\u0180\xC1\x02\u127F\u1280\x07\u035B\x02\x02\u1280\u1281\x07\u0374\x02" +
		"\x02\u1281\u129A\x03\x02\x02\x02\u1282\u1283\x05\u0182\xC2\x02\u1283\u1284" +
		"\x07\u035B\x02\x02\u1284\u1285\x05\u02CC\u0167\x02\u1285\u129A\x03\x02" +
		"\x02\x02\u1286\u1287\x05\u0184\xC3\x02\u1287\u1288\x07\u035B\x02\x02\u1288" +
		"\u1289\t\x1B\x02\x02\u1289\u129A\x03\x02\x02\x02\u128A\u129A\x05\u0186" +
		"\xC4\x02\u128B\u128C\x07\u01AA\x02\x02\u128C\u128D\x07\u035B\x02\x02\u128D" +
		"\u1296\x07\u0364\x02\x02\u128E\u1293\x05\u02C6\u0164\x02\u128F\u1290\x07" +
		"\u0366\x02\x02\u1290\u1292\x05\u02C6\u0164\x02\u1291\u128F\x03\x02\x02" +
		"\x02\u1292\u1295\x03\x02\x02\x02\u1293\u1291\x03\x02\x02\x02\u1293\u1294" +
		"\x03\x02\x02\x02\u1294\u1297\x03\x02\x02\x02\u1295\u1293\x03\x02\x02\x02" +
		"\u1296\u128E\x03\x02\x02\x02\u1296\u1297\x03\x02\x02\x02\u1297\u1298\x03" +
		"\x02\x02\x02\u1298\u129A\x07\u0365\x02\x02\u1299\u127E\x03\x02\x02\x02" +
		"\u1299\u1282\x03\x02\x02\x02\u1299\u1286\x03\x02\x02\x02\u1299\u128A\x03" +
		"\x02\x02\x02\u1299\u128B\x03\x02\x02\x02\u129A\u017F\x03\x02\x02\x02\u129B" +
		"\u129C\tG\x02\x02\u129C\u0181\x03\x02\x02\x02\u129D\u129E\tH\x02\x02\u129E" +
		"\u0183\x03\x02\x02\x02\u129F\u12A0\tI\x02\x02\u12A0\u0185\x03\x02\x02" +
		"\x02\u12A1\u12A2\x07\u0221\x02\x02\u12A2\u12A3\x07\u035B\x02\x02\u12A3" +
		"\u12AF\tE\x02\x02\u12A4\u12A5\x07\u0240\x02\x02\u12A5\u12A6\x07\u035B" +
		"\x02\x02\u12A6\u12AF\tJ\x02\x02\u12A7\u12A8\x07\u0138\x02\x02\u12A8\u12AC" +
		"\x07\u035B\x02\x02\u12A9\u12AD\x07\u01FD\x02\x02\u12AA\u12AD\x07\u01C4" +
		"\x02\x02\u12AB\u12AD\x05\u0194\xCB\x02\u12AC\u12A9\x03\x02\x02\x02\u12AC" +
		"\u12AA\x03\x02\x02\x02\u12AC\u12AB\x03\x02\x02\x02\u12AD\u12AF\x03\x02" +
		"\x02\x02\u12AE\u12A1\x03\x02\x02\x02\u12AE\u12A4\x03\x02\x02\x02\u12AE" +
		"\u12A7\x03\x02\x02\x02\u12AF\u0187\x03\x02\x02\x02\u12B0\u12B1\x07C\x02" +
		"\x02\u12B1\u12B2\x07\u014A\x02\x02\u12B2\u12B3\x07\u0374\x02\x02\u12B3" +
		"\u0189\x03\x02\x02\x02\u12B4\u12B5\x07\u0237\x02\x02\u12B5\u12B6\x07\u035B" +
		"\x02\x02\u12B6\u12B7\x07\u0364\x02\x02\u12B7\u12BC\x05\u0278\u013D\x02" +
		"\u12B8\u12B9\x07\u0366\x02\x02\u12B9\u12BB\x05\u0278\u013D\x02\u12BA\u12B8" +
		"\x03\x02\x02\x02\u12BB\u12BE\x03\x02\x02\x02\u12BC\u12BA\x03\x02\x02\x02" +
		"\u12BC\u12BD\x03\x02\x02\x02\u12BD\u12BF\x03\x02\x02\x02\u12BE\u12BC\x03" +
		"\x02\x02\x02\u12BF\u12C0\x07\u0365\x02\x02\u12C0\u12F4\x03\x02\x02\x02" +
		"\u12C1\u12C2\x07\u0239\x02\x02\u12C2\u12C3\x07\u035B\x02\x02\u12C3\u12C4" +
		"\x07\u0364\x02\x02\u12C4\u12C9\x05\u0278\u013D\x02\u12C5\u12C6\x07\u0366" +
		"\x02\x02\u12C6\u12C8\x05\u0278\u013D\x02\u12C7\u12C5\x03\x02\x02\x02\u12C8" +
		"\u12CB\x03\x02\x02\x02\u12C9\u12C7\x03\x02\x02\x02\u12C9\u12CA\x03\x02" +
		"\x02\x02\u12CA\u12CC\x03\x02\x02\x02\u12CB\u12C9\x03\x02\x02\x02\u12CC" +
		"\u12CD\x07\u0365\x02\x02\u12CD\u12F4\x03\x02\x02\x02\u12CE\u12CF\x07\u0238" +
		"\x02\x02\u12CF\u12D0\x07\u035B\x02\x02\u12D0\u12D1\x07\u0364\x02\x02\u12D1" +
		"\u12D2\x05\u028E\u0148\x02\u12D2\u12D3\x07\u0365\x02\x02\u12D3\u12F4\x03" +
		"\x02\x02\x02\u12D4\u12D5\x07\u023A\x02\x02\u12D5\u12D6\x07\u035B\x02\x02" +
		"\u12D6\u12D7\x07\u0364\x02\x02\u12D7\u12D8\x05\u028E\u0148\x02\u12D8\u12D9" +
		"\x07\u0365\x02\x02\u12D9\u12F4\x03\x02\x02\x02\u12DA\u12DB\x07\u023C\x02" +
		"\x02\u12DB\u12DC\x07\u035B\x02\x02\u12DC\u12DD\x07\u0364\x02\x02\u12DD" +
		"\u12DE\x05\u02F2\u017A\x02\u12DE\u12DF\x07\u0365\x02\x02\u12DF\u12F4\x03" +
		"\x02\x02\x02\u12E0\u12E1\x07\u023D\x02\x02\u12E1\u12E2\x07\u035B\x02\x02" +
		"\u12E2\u12E3\x07\u0364\x02\x02\u12E3\u12E4\x05\u02F2\u017A\x02\u12E4\u12E5" +
		"\x07\u0365\x02\x02\u12E5\u12F4\x03\x02\x02\x02\u12E6\u12E7\x07\u023B\x02" +
		"\x02\u12E7\u12E8\x07\u035B\x02\x02\u12E8\u12E9\x07\u0364\x02\x02\u12E9" +
		"\u12EE\x05\u018C\xC7\x02\u12EA\u12EB\x07\u0366\x02\x02\u12EB\u12ED\x05" +
		"\u018C\xC7\x02\u12EC\u12EA\x03\x02\x02\x02\u12ED\u12F0\x03\x02\x02\x02" +
		"\u12EE\u12EC\x03\x02\x02\x02\u12EE\u12EF\x03\x02\x02\x02\u12EF\u12F1\x03" +
		"\x02\x02\x02\u12F0\u12EE\x03\x02\x02\x02\u12F1\u12F2\x07\u0365\x02\x02" +
		"\u12F2\u12F4\x03\x02\x02\x02\u12F3\u12B4\x03\x02\x02\x02\u12F3\u12C1\x03" +
		"\x02\x02\x02\u12F3\u12CE\x03\x02\x02\x02\u12F3\u12D4\x03\x02\x02\x02\u12F3" +
		"\u12DA\x03\x02\x02\x02\u12F3\u12E0\x03\x02\x02\x02\u12F3\u12E6\x03\x02" +
		"\x02\x02\u12F4\u018B\x03\x02\x02\x02\u12F5\u12F6\x07\u0364\x02\x02\u12F6" +
		"\u12F7\x05\u0290\u0149\x02\u12F7\u12F8\x07\u0366\x02\x02\u12F8\u12F9\x05" +
		"\u0290\u0149\x02\u12F9\u12FA\x07\u0365\x02\x02\u12FA\u018D\x03\x02\x02" +
		"\x02\u12FB\u12FC\tK\x02\x02\u12FC\u018F\x03\x02\x02\x02\u12FD\u12FE\t" +
		"L\x02\x02\u12FE\u12FF\x07\u035B\x02\x02\u12FF\u1317\x05\u0194\xCB\x02" +
		"\u1300\u1301\x07\u01CE\x02\x02\u1301\u1302\x07\u035B\x02\x02\u1302\u1303" +
		"\x07\u0374\x02\x02\u1303\u1304\x07\u0366\x02\x02\u1304\u1305\x07\u01CF" +
		"\x02\x02\u1305\u1306\x07\u035B\x02\x02\u1306\u1317\x05\u02CC\u0167\x02" +
		"\u1307\u1308\x07\u0265\x02\x02\u1308\u1309\x07\u035B\x02\x02\u1309\u130A" +
		"\x07\u0374\x02\x02\u130A\u130B\x07\u0366\x02\x02\u130B\u130C\x07\u0266" +
		"\x02\x02\u130C\u130D\x07\u035B\x02\x02\u130D\u1317\x05\u02CC\u0167\x02" +
		"\u130E\u130F\x07\u022F\x02\x02\u130F\u1310\x07\u035B\x02\x02\u1310\u1311" +
		"\x07\u0374\x02\x02\u1311\u1312\x07\u0366\x02\x02\u1312\u1313\x07\u0230" +
		"\x02\x02\u1313\u1314\x07\u035B\x02\x02\u1314\u1317\x05\u02CC\u0167\x02" +
		"\u1315\u1317\x07\u027C\x02\x02\u1316\u12FD\x03\x02\x02\x02\u1316\u1300" +
		"\x03\x02\x02\x02\u1316\u1307\x03\x02\x02\x02\u1316\u130E\x03\x02\x02\x02" +
		"\u1316\u1315\x03\x02\x02\x02\u1317\u0191\x03\x02\x02\x02\u1318\u1319\x07" +
		"\u02A8\x02\x02\u1319\u131A\x07\u035B\x02\x02\u131A\u1325\x07\u0374\x02" +
		"\x02\u131B\u131C\x07\u0213\x02\x02\u131C\u131D\x07\u035B\x02\x02\u131D" +
		"\u1325\x07\u0374\x02\x02\u131E\u131F\x07\u016D\x02\x02\u131F\u1320\x07" +
		"\u035B\x02\x02\u1320\u1325\x07\u0374\x02\x02\u1321\u1322\x07\u0219\x02" +
		"\x02\u1322\u1323\x07\u035B\x02\x02\u1323\u1325\x07\u0374\x02\x02\u1324" +
		"\u1318\x03\x02\x02\x02\u1324\u131B\x03\x02\x02\x02\u1324\u131E\x03\x02" +
		"\x02\x02\u1324\u1321\x03\x02\x02\x02\u1325\u0193\x03\x02\x02\x02\u1326" +
		"\u132B\x05\u02BC\u015F\x02\u1327\u1328\x07\u0366\x02\x02\u1328\u132A\x05" +
		"\u02BC\u015F\x02\u1329\u1327\x03\x02\x02\x02\u132A\u132D\x03\x02\x02\x02" +
		"\u132B\u1329\x03\x02\x02\x02\u132B\u132C\x03\x02\x02\x02\u132C\u1330\x03" +
		"\x02\x02\x02\u132D\u132B\x03\x02\x02\x02\u132E\u1330\x07\u0374\x02\x02" +
		"\u132F\u1326\x03\x02\x02\x02\u132F\u132E\x03\x02\x02\x02\u1330\u0195\x03" +
		"\x02\x02\x02\u1331\u1332\x07\u02B8\x02\x02\u1332\u1333\tM\x02\x02\u1333" +
		"\u1335\x05\u02BE\u0160\x02\u1334\u1336\tN\x02\x02\u1335\u1334\x03\x02" +
		"\x02\x02\u1335\u1336\x03\x02\x02\x02\u1336\u0197\x03\x02\x02\x02\u1337" +
		"\u1338\x07\u02B8\x02\x02\u1338\u1339\x07\u017C\x02\x02\u1339\u133F\x05" +
		"\u02BE\u0160\x02\u133A\u133D\x07\u0290\x02\x02\u133B\u133C\x07C\x02\x02" +
		"\u133C\u133E\x07\u01EB\x02\x02\u133D\u133B\x03\x02\x02\x02\u133D\u133E" +
		"\x03\x02\x02\x02\u133E\u1340\x03\x02\x02\x02\u133F\u133A\x03\x02\x02\x02" +
		"\u133F\u1340\x03\x02\x02\x02\u1340\u0199\x03\x02\x02\x02\u1341\u1342\x07" +
		"\u02B8\x02\x02\u1342\u1343\x07\u021E\x02\x02\u1343\u1344\x05\u02BE\u0160" +
		"\x02\u1344\u019B\x03\x02\x02\x02\u1345\u1346\x07\u02B8\x02\x02\u1346\u1347" +
		"\x07\u0157\x02\x02\u1347\u134A\x05\u02BE\u0160\x02\u1348\u1349\x07\u0203" +
		"\x02\x02\u1349\u134B\x07\u0217\x02\x02\u134A\u1348\x03\x02\x02\x02\u134A" +
		"\u134B\x03\x02\x02\x02\u134B\u019D\x03\x02\x02\x02\u134C\u134D\x07\u02B8" +
		"\x02\x02\u134D\u134E\x07\u0249\x02\x02\u134E\u134F\x05\u02BE\u0160\x02" +
		"\u134F\u019F\x03\x02\x02\x02\u1350\u1351\x07\u02B8\x02\x02\u1351\u1354" +
		"\x07\u0229\x02\x02\u1352\u1353\x07#\x02\x02\u1353\u1355\x05\u02BE\u0160" +
		"\x02\u1354\u1352\x03\x02\x02\x02\u1354\u1355\x03\x02\x02\x02\u1355\u01A1" +
		"\x03\x02\x02\x02\u1356\u1357\x07\u021E\x02\x02\u1357\u1358\x05\u02C6\u0164" +
		"\x02\u1358\u135B\x07F\x02\x02\u1359\u135C\x07\u0374\x02\x02\u135A\u135C" +
		"\x07\u037E\x02\x02\u135B\u1359\x03\x02\x02\x02\u135B\u135A\x03\x02\x02" +
		"\x02\u135C\u01A3\x03\x02\x02\x02\u135D\u135E\x07\u02CF\x02\x02\u135E\u1361" +
		"\x05\u02C6\u0164\x02\u135F\u1360\x07\xBE\x02\x02\u1360\u1362\x05\u02F4" +
		"\u017B\x02\u1361\u135F\x03\x02\x02\x02\u1361\u1362\x03\x02\x02\x02\u1362" +
		"\u01A5\x03\x02\x02\x02\u1363\u1364\tO\x02\x02\u1364\u1365\x07\u021E\x02" +
		"\x02\u1365\u1366\x05\u02C6\u0164\x02\u1366\u01A7\x03\x02\x02\x02\u1367" +
		"\u136A\x05\u01AA\xD6\x02\u1368\u136A\x05\x06\x04\x02\u1369\u1367\x03\x02" +
		"\x02\x02\u1369\u1368\x03\x02\x02\x02\u136A\u01A9\x03\x02\x02\x02\u136B" +
		"\u136C\x05\u02C6\u0164\x02\u136C\u136D\x07\u0370\x02\x02\u136D\u136F\x03" +
		"\x02\x02\x02\u136E\u136B\x03\x02\x02\x02\u136E\u136F\x03\x02\x02\x02\u136F" +
		"\u1370\x03\x02\x02\x02\u1370\u1376\x07\u013F\x02\x02\u1371\u1372\x05\u01BE" +
		"\xE0\x02\u1372\u1373\x07\u0367\x02\x02\u1373\u1375\x03\x02\x02\x02\u1374" +
		"\u1371\x03\x02\x02\x02\u1375\u1378\x03\x02\x02\x02\u1376\u1374\x03\x02" +
		"\x02\x02\u1376\u1377\x03\x02\x02\x02\u1377\u137E\x03\x02\x02\x02\u1378" +
		"\u1376\x03\x02\x02\x02\u1379\u137A\x05\u01C0\xE1\x02\u137A\u137B\x07\u0367" +
		"\x02\x02\u137B\u137D\x03\x02\x02\x02\u137C\u1379\x03\x02\x02\x02\u137D" +
		"\u1380\x03\x02\x02\x02\u137E\u137C\x03\x02\x02\x02\u137E\u137F\x03\x02" +
		"\x02\x02\u137F\u1386\x03\x02\x02\x02\u1380\u137E\x03\x02\x02\x02\u1381" +
		"\u1382\x05\u01C2\xE2\x02\u1382\u1383\x07\u0367\x02\x02\u1383\u1385\x03" +
		"\x02\x02\x02\u1384\u1381\x03\x02\x02\x02\u1385\u1388\x03\x02\x02\x02\u1386" +
		"\u1384\x03\x02\x02\x02\u1386\u1387\x03\x02\x02\x02\u1387\u138E\x03\x02" +
		"\x02\x02\u1388\u1386\x03\x02\x02\x02\u1389\u138A\x05\u01C4\xE3\x02\u138A" +
		"\u138B\x07\u0367\x02\x02\u138B\u138D\x03\x02\x02\x02\u138C\u1389\x03\x02" +
		"\x02\x02\u138D\u1390\x03\x02\x02\x02\u138E\u138C\x03\x02\x02\x02\u138E" +
		"\u138F\x03\x02\x02\x02\u138F\u1394\x03\x02\x02\x02\u1390\u138E\x03\x02" +
		"\x02\x02\u1391\u1393\x05\u01C8\xE5\x02\u1392\u1391\x03\x02\x02\x02\u1393" +
		"\u1396\x03\x02\x02\x02\u1394\u1392\x03\x02\x02\x02\u1394\u1395\x03\x02" +
		"\x02\x02\u1395\u1397\x03\x02\x02\x02\u1396\u1394\x03\x02\x02\x02\u1397" +
		"\u1399\x07\u017C\x02\x02\u1398\u139A\x05\u02C6\u0164\x02\u1399\u1398\x03" +
		"\x02\x02\x02\u1399\u139A\x03\x02\x02\x02\u139A\u01AB\x03\x02\x02\x02\u139B" +
		"\u139E\x07\x19\x02\x02\u139C\u139F\x05\u02C6\u0164\x02\u139D\u139F\x05" +
		"\u0328\u0195\x02\u139E\u139C\x03\x02\x02\x02\u139E\u139D\x03\x02\x02\x02" +
		"\u139E\u139F\x03\x02\x02\x02\u139F\u13A1\x03\x02\x02\x02\u13A0\u13A2\x05" +
		"\u01CA\xE6\x02\u13A1\u13A0\x03\x02\x02\x02\u13A2\u13A3\x03\x02\x02\x02" +
		"\u13A3\u13A1\x03\x02\x02\x02\u13A3\u13A4\x03\x02\x02\x02\u13A4\u13AB\x03" +
		"\x02\x02\x02\u13A5\u13A7\x077\x02\x02\u13A6\u13A8\x05\u01C8\xE5\x02\u13A7" +
		"\u13A6\x03\x02\x02\x02\u13A8\u13A9\x03\x02\x02\x02\u13A9\u13A7\x03\x02" +
		"\x02\x02\u13A9\u13AA\x03\x02\x02\x02\u13AA\u13AC\x03\x02\x02\x02\u13AB" +
		"\u13A5\x03\x02\x02\x02\u13AB\u13AC\x03\x02\x02\x02\u13AC\u13AD\x03\x02" +
		"\x02\x02\u13AD\u13AE\x07\u017C\x02\x02\u13AE\u13AF\x07\x19\x02\x02\u13AF" +
		"\u01AD\x03\x02\x02\x02\u13B0\u13B1\x07P\x02\x02\u13B1\u13B2\x05\u0328" +
		"\u0195\x02\u13B2\u13B4\x07\xB1\x02\x02\u13B3\u13B5\x05\u01C8\xE5\x02\u13B4" +
		"\u13B3\x03\x02\x02\x02\u13B5\u13B6\x03\x02\x02\x02\u13B6\u13B4\x03\x02" +
		"\x02\x02\u13B6\u13B7\x03\x02\x02\x02\u13B7\u13BB\x03\x02\x02\x02\u13B8" +
		"\u13BA\x05\u01CC\xE7\x02\u13B9\u13B8\x03\x02\x02\x02\u13BA\u13BD\x03\x02" +
		"\x02\x02\u13BB\u13B9\x03\x02\x02\x02\u13BB\u13BC\x03\x02\x02\x02\u13BC" +
		"\u13C4\x03\x02\x02\x02\u13BD\u13BB\x03\x02\x02\x02\u13BE\u13C0\x077\x02" +
		"\x02\u13BF\u13C1\x05\u01C8\xE5\x02\u13C0\u13BF\x03\x02\x02\x02\u13C1\u13C2" +
		"\x03\x02\x02\x02\u13C2\u13C0\x03\x02\x02\x02\u13C2\u13C3\x03\x02\x02\x02" +
		"\u13C3\u13C5\x03\x02\x02\x02\u13C4\u13BE\x03\x02\x02\x02\u13C4\u13C5\x03" +
		"\x02\x02\x02\u13C5\u13C6\x03\x02\x02\x02\u13C6\u13C7\x07\u017C\x02\x02" +
		"\u13C7\u13C8\x07P\x02\x02\u13C8\u01AF\x03\x02\x02\x02\u13C9\u13CA\x07" +
		"\\\x02\x02\u13CA\u13CB\x05\u02C6\u0164\x02\u13CB\u01B1\x03\x02\x02\x02" +
		"\u13CC\u13CD\x07c\x02\x02\u13CD\u13CE\x05\u02C6\u0164\x02\u13CE\u01B3" +
		"\x03\x02\x02\x02\u13CF\u13D0\x05\u02C6\u0164\x02\u13D0\u13D1\x07\u0370" +
		"\x02\x02\u13D1\u13D3\x03\x02\x02\x02\u13D2\u13CF\x03\x02\x02\x02\u13D2" +
		"\u13D3\x03\x02\x02\x02\u13D3\u13D4\x03\x02\x02\x02\u13D4\u13D6\x07l\x02" +
		"\x02\u13D5\u13D7\x05\u01C8\xE5\x02\u13D6\u13D5\x03\x02\x02\x02\u13D7\u13D8" +
		"\x03\x02\x02\x02\u13D8\u13D6\x03\x02\x02\x02\u13D8\u13D9\x03\x02\x02\x02" +
		"\u13D9\u13DA\x03\x02\x02\x02\u13DA\u13DB\x07\u017C\x02\x02\u13DB\u13DD" +
		"\x07l\x02\x02\u13DC\u13DE\x05\u02C6\u0164\x02\u13DD\u13DC\x03\x02\x02" +
		"\x02\u13DD\u13DE\x03\x02\x02\x02\u13DE\u01B5\x03\x02\x02\x02\u13DF\u13E0" +
		"\x05\u02C6\u0164\x02\u13E0\u13E1\x07\u0370\x02\x02\u13E1\u13E3\x03\x02" +
		"\x02\x02\u13E2\u13DF\x03\x02\x02\x02\u13E2\u13E3\x03\x02\x02\x02\u13E3" +
		"\u13E4\x03\x02\x02\x02\u13E4\u13E6\x07\x90\x02\x02\u13E5\u13E7\x05\u01C8" +
		"\xE5\x02\u13E6\u13E5\x03\x02\x02\x02\u13E7\u13E8\x03\x02\x02\x02\u13E8" +
		"\u13E6\x03\x02\x02\x02\u13E8\u13E9\x03\x02\x02\x02\u13E9\u13EA\x03\x02" +
		"\x02\x02\u13EA\u13EB\x07\u02A6\x02\x02\u13EB\u13EC\x05\u0328\u0195\x02" +
		"\u13EC\u13ED\x07\u017C\x02\x02\u13ED\u13EF\x07\x90\x02\x02\u13EE\u13F0" +
		"\x05\u02C6\u0164\x02\u13EF\u13EE\x03\x02\x02\x02\u13EF\u13F0\x03\x02\x02" +
		"\x02\u13F0\u01B7\x03\x02\x02\x02\u13F1\u13F2\x07\x96\x02\x02\u13F2\u13F3" +
		"\x05\u0328\u0195\x02\u13F3\u01B9\x03\x02\x02\x02\u13F4\u13F5\x05\u02C6" +
		"\u0164\x02\u13F5\u13F6\x07\u0370\x02\x02\u13F6\u13F8\x03\x02\x02\x02\u13F7" +
		"\u13F4\x03\x02\x02\x02\u13F7\u13F8\x03\x02\x02\x02\u13F8\u13F9\x03\x02" +
		"\x02\x02\u13F9\u13FA\x07\xC3\x02\x02\u13FA\u13FB\x05\u0328\u0195\x02\u13FB" +
		"\u13FD\x07\u0175\x02\x02\u13FC\u13FE\x05\u01C8\xE5\x02\u13FD\u13FC\x03" +
		"\x02\x02\x02\u13FE\u13FF\x03\x02\x02\x02\u13FF\u13FD\x03\x02\x02\x02\u13FF" +
		"\u1400\x03\x02\x02\x02\u1400\u1401\x03\x02\x02\x02\u1401\u1402\x07\u017C" +
		"\x02\x02\u1402\u1404\x07\xC3\x02\x02\u1403\u1405\x05\u02C6\u0164\x02\u1404" +
		"\u1403\x03\x02\x02\x02\u1404\u1405\x03\x02\x02\x02\u1405\u01BB\x03\x02" +
		"\x02\x02\u1406\u1407\x07\u0150\x02\x02\u1407\u1416\x05\u02C6\u0164\x02" +
		"\u1408\u140D\x07B\x02\x02\u1409\u140B\x07\u01F7\x02\x02\u140A\u1409\x03" +
		"\x02\x02\x02\u140A\u140B\x03\x02\x02\x02\u140B\u140C\x03\x02\x02\x02\u140C" +
		"\u140E\x07F\x02\x02\u140D\u140A\x03\x02\x02\x02\u140D\u140E\x03\x02\x02" +
		"\x02\u140E\u140F\x03\x02\x02\x02\u140F\u1410\x05\u02C6\u0164\x02\u1410" +
		"\u1411\x07Z\x02\x02\u1411\u1412\x05\u02C4\u0163\x02\u1412\u1416\x03\x02" +
		"\x02\x02\u1413\u1414\x07\u0206\x02\x02\u1414\u1416\x05\u02C6\u0164\x02" +
		"\u1415\u1406\x03\x02\x02\x02\u1415\u1408\x03\x02\x02\x02\u1415\u1413\x03" +
		"\x02\x02\x02\u1416\u01BD\x03\x02\x02\x02\u1417\u1418\x07+\x02\x02\u1418" +
		"\u1419\x05\u02C4\u0163\x02\u1419\u141C\x05\u02DA\u016E\x02\u141A\u141B" +
		"\x07,\x02\x02\u141B\u141D\x05\u0328\u0195\x02\u141C\u141A\x03\x02\x02" +
		"\x02\u141C\u141D\x03\x02\x02\x02\u141D\u01BF\x03\x02\x02\x02\u141E\u141F" +
		"\x07+\x02\x02\u141F\u1420\x05\u02C6\u0164\x02\u1420\u1421\x07 \x02\x02" +
		"\u1421\u1428\x07C\x02\x02\u1422\u1429\x05\u02CC\u0167\x02\u1423\u1425" +
		"\x07\xA6\x02\x02\u1424\u1426\x07\u02AC\x02\x02\u1425\u1424\x03\x02\x02" +
		"\x02\u1425\u1426\x03\x02\x02\x02\u1426\u1427\x03\x02\x02\x02\u1427\u1429" +
		"\x07\u0374\x02\x02\u1428\u1422\x03\x02\x02\x02\u1428\u1423\x03\x02\x02" +
		"\x02\u1429\u01C1\x03\x02\x02\x02\u142A\u142B\x07+\x02\x02\u142B\u142C" +
		"\x05\u02C6\u0164\x02\u142C\u142D\x07(\x02\x02\u142D\u142E\x07C\x02\x02" +
		"\u142E\u142F\x05\xCEh\x02\u142F\u01C3\x03\x02\x02\x02\u1430\u1431\x07" +
		"+\x02\x02\u1431\u1432\tP\x02\x02\u1432\u1433\x07\u01A3\x02\x02\u1433\u1434" +
		"\x07C\x02\x02\u1434\u1439\x05\u01C6\xE4\x02\u1435\u1436\x07\u0366\x02" +
		"\x02\u1436\u1438\x05\u01C6\xE4\x02\u1437\u1435\x03\x02\x02\x02\u1438\u143B" +
		"\x03\x02\x02\x02\u1439\u1437\x03\x02\x02\x02\u1439\u143A\x03\x02\x02\x02" +
		"\u143A\u143C\x03\x02\x02\x02\u143B\u1439\x03\x02\x02\x02\u143C\u143D\x05" +
		"\u01A8\xD5\x02\u143D\u01C5\x03\x02\x02\x02\u143E\u144A\x05\u02CC\u0167" +
		"\x02\u143F\u1441\x07\xA6\x02\x02\u1440\u1442\x07\u02AC\x02\x02\u1441\u1440" +
		"\x03\x02\x02\x02\u1441\u1442\x03\x02\x02\x02\u1442\u1443\x03\x02\x02\x02" +
		"\u1443\u144A\x07\u0374\x02\x02\u1444\u144A\x05\u02C6\u0164\x02\u1445\u144A" +
		"\x07\xA7\x02\x02\u1446\u1447\x07t\x02\x02\u1447\u144A\x07\u0199\x02\x02" +
		"\u1448\u144A\x07\xA5\x02\x02\u1449\u143E\x03\x02\x02\x02\u1449\u143F\x03" +
		"\x02\x02\x02\u1449\u1444\x03\x02\x02\x02\u1449\u1445\x03\x02\x02\x02\u1449" +
		"\u1446\x03\x02\x02\x02\u1449\u1448\x03\x02\x02\x02\u144A\u01C7\x03\x02" +
		"\x02\x02\u144B\u144E\x05\x14\v\x02\u144C\u144E\x05\x06\x04\x02\u144D\u144B" +
		"\x03\x02\x02\x02\u144D\u144C\x03\x02\x02\x02\u144E\u144F\x03\x02\x02\x02" +
		"\u144F\u1450\x07\u0367\x02\x02\u1450\u01C9\x03\x02\x02\x02\u1451\u1454" +
		"\x07\xC1\x02\x02\u1452\u1455\x05\u02D8\u016D\x02\u1453\u1455\x05\u0328" +
		"\u0195\x02\u1454\u1452\x03\x02\x02\x02\u1454\u1453\x03\x02\x02\x02\u1455" +
		"\u1456\x03\x02\x02\x02\u1456\u1458\x07\xB1\x02\x02\u1457\u1459\x05\u01C8" +
		"\xE5\x02\u1458\u1457\x03\x02\x02\x02\u1459\u145A\x03\x02\x02\x02\u145A" +
		"\u1458\x03\x02\x02\x02\u145A\u145B\x03\x02\x02\x02\u145B\u01CB\x03\x02" +
		"\x02\x02\u145C\u145D\x078\x02\x02\u145D\u145E\x05\u0328\u0195\x02\u145E" +
		"\u1460\x07\xB1\x02\x02\u145F\u1461\x05\u01C8\xE5\x02\u1460\u145F\x03\x02";
	private static readonly _serializedATNSegment11: string =
		"\x02\x02\u1461\u1462\x03\x02\x02\x02\u1462\u1460\x03\x02\x02\x02\u1462" +
		"\u1463\x03\x02\x02\x02\u1463\u01CD\x03\x02\x02\x02\u1464\u1465\x07\n\x02" +
		"\x02\u1465\u1467\x07\u02A8\x02\x02\u1466\u1468\x05\u02FA\u017E\x02\u1467" +
		"\u1466\x03\x02\x02\x02\u1467\u1468\x03\x02\x02\x02\u1468\u14A1\x03\x02" +
		"\x02\x02\u1469\u146E\x05\u01EE\xF8\x02\u146A\u146B\x07\u0366\x02\x02\u146B" +
		"\u146D\x05\u01EE\xF8\x02\u146C\u146A\x03\x02\x02\x02\u146D\u1470\x03\x02" +
		"\x02\x02\u146E\u146C\x03\x02\x02\x02\u146E\u146F\x03\x02\x02\x02\u146F" +
		"\u14A2\x03\x02\x02\x02\u1470\u146E\x03\x02\x02\x02\u1471\u1476\x05\u01F0" +
		"\xF9\x02\u1472\u1473\x07\u0366\x02\x02\u1473\u1475\x05\u01F0\xF9\x02\u1474" +
		"\u1472\x03\x02\x02\x02\u1475\u1478\x03\x02\x02\x02\u1476\u1474\x03\x02" +
		"\x02\x02\u1476\u1477\x03\x02\x02\x02\u1477\u1487\x03\x02\x02\x02\u1478" +
		"\u1476\x03\x02\x02\x02\u1479\u1485\x07\x92\x02\x02\u147A\u1486\x07\u01FB" +
		"\x02\x02\u147B\u1482\x05\u01FC\xFF\x02\u147C\u147E\x07\r\x02\x02\u147D" +
		"\u147C\x03\x02\x02\x02\u147D\u147E\x03\x02\x02\x02\u147E\u147F\x03\x02" +
		"\x02\x02\u147F\u1481\x05\u01FC\xFF\x02\u1480\u147D\x03\x02\x02\x02\u1481" +
		"\u1484\x03\x02\x02\x02\u1482\u1480\x03\x02\x02\x02\u1482\u1483\x03\x02" +
		"\x02\x02\u1483\u1486\x03\x02\x02\x02\u1484\u1482\x03\x02\x02\x02\u1485" +
		"\u147A\x03\x02\x02\x02\u1485\u147B\x03\x02\x02\x02\u1486\u1488\x03\x02" +
		"\x02\x02\u1487\u1479\x03\x02\x02\x02\u1487\u1488\x03\x02\x02\x02\u1488" +
		"\u148F\x03\x02\x02\x02\u1489\u148B\x07\xC4\x02\x02\u148A\u148C\x05\u01FE" +
		"\u0100\x02\u148B\u148A\x03\x02\x02\x02\u148C\u148D\x03\x02\x02\x02\u148D" +
		"\u148B\x03\x02\x02\x02\u148D\u148E\x03\x02\x02\x02\u148E\u1490\x03\x02" +
		"\x02\x02\u148F\u1489\x03\x02\x02\x02\u148F\u1490\x03\x02\x02\x02\u1490" +
		"\u1495\x03\x02\x02\x02\u1491\u1494\x05\u0200\u0101\x02\u1492\u1494\x05" +
		"\u0202\u0102\x02\u1493\u1491\x03\x02\x02\x02\u1493\u1492\x03\x02\x02\x02" +
		"\u1494\u1497\x03\x02\x02\x02\u1495\u1493\x03\x02\x02\x02\u1495\u1496\x03" +
		"\x02\x02\x02\u1496\u149A\x03\x02\x02\x02\u1497\u1495\x03\x02\x02\x02\u1498" +
		"\u1499\tQ\x02\x02\u1499\u149B\x07\u0374\x02\x02\u149A\u1498\x03\x02\x02" +
		"\x02\u149A\u149B\x03\x02\x02\x02\u149B\u14A2\x03\x02\x02\x02\u149C\u149D" +
		"\x05\u0294\u014B\x02\u149D\u149E\x07,\x02\x02\u149E\u149F\x07\u0248\x02" +
		"\x02\u149F\u14A0\x05\u01D6\xEC\x02\u14A0\u14A2\x03\x02\x02\x02\u14A1\u1469" +
		"\x03\x02\x02\x02\u14A1\u1471\x03\x02\x02\x02\u14A1\u149C\x03\x02\x02\x02" +
		"\u14A2\u01CF\x03\x02\x02\x02\u14A3\u14A4\x07$\x02\x02\u14A4\u14A6\x07" +
		"\u02A8\x02\x02\u14A5\u14A7\x05\u02FC\u017F\x02\u14A6\u14A5\x03\x02\x02" +
		"\x02\u14A6\u14A7\x03\x02\x02\x02\u14A7\u14A8\x03\x02\x02\x02\u14A8\u14AA" +
		"\x05\u02B0\u0159\x02\u14A9\u14AB\x05\u01F2\xFA\x02\u14AA\u14A9\x03\x02" +
		"\x02\x02\u14AA\u14AB\x03\x02\x02\x02\u14AB\u14B3\x03\x02\x02\x02\u14AC" +
		"\u14AD\x07\u0366\x02\x02\u14AD\u14AF\x05\u02B0\u0159\x02\u14AE\u14B0\x05" +
		"\u01F2\xFA\x02\u14AF\u14AE\x03\x02\x02\x02\u14AF\u14B0\x03\x02\x02\x02" +
		"\u14B0\u14B2\x03\x02\x02\x02\u14B1\u14AC\x03\x02\x02\x02\u14B2\u14B5\x03" +
		"\x02\x02\x02\u14B3\u14B1\x03\x02\x02\x02\u14B3\u14B4\x03\x02\x02\x02\u14B4" +
		"\u14B9\x03\x02\x02\x02\u14B5\u14B3\x03\x02\x02\x02\u14B6\u14B7\x07,\x02" +
		"\x02\u14B7\u14B8\x07\u0248\x02\x02\u14B8\u14BA\x05\u01D6\xEC\x02\u14B9" +
		"\u14B6\x03\x02\x02\x02\u14B9\u14BA\x03\x02\x02\x02\u14BA\u14C9\x03\x02" +
		"\x02\x02\u14BB\u14C7\x07\x92\x02\x02\u14BC\u14C8\x07\u01FB\x02\x02\u14BD" +
		"\u14C4\x05\u01FC\xFF\x02\u14BE\u14C0\x07\r\x02\x02\u14BF\u14BE\x03\x02" +
		"\x02\x02\u14BF\u14C0\x03\x02\x02\x02\u14C0\u14C1\x03\x02\x02\x02\u14C1" +
		"\u14C3\x05\u01FC\xFF\x02\u14C2\u14BF\x03\x02\x02\x02\u14C3\u14C6\x03\x02" +
		"\x02\x02\u14C4\u14C2\x03\x02\x02\x02\u14C4\u14C5\x03\x02\x02\x02\u14C5" +
		"\u14C8\x03\x02\x02\x02\u14C6\u14C4\x03\x02\x02\x02\u14C7\u14BC\x03\x02" +
		"\x02\x02\u14C7\u14BD\x03\x02\x02\x02\u14C8\u14CA\x03\x02\x02\x02\u14C9" +
		"\u14BB\x03\x02\x02\x02\u14C9\u14CA\x03\x02\x02\x02\u14CA\u14D1\x03\x02" +
		"\x02\x02\u14CB\u14CD\x07\xC4\x02\x02\u14CC\u14CE\x05\u01FE\u0100\x02\u14CD" +
		"\u14CC\x03\x02\x02\x02\u14CE\u14CF\x03\x02\x02\x02\u14CF\u14CD\x03\x02" +
		"\x02\x02\u14CF\u14D0\x03\x02\x02\x02\u14D0\u14D2\x03\x02\x02\x02\u14D1" +
		"\u14CB\x03\x02\x02\x02\u14D1\u14D2\x03\x02\x02\x02\u14D2\u14D7\x03\x02" +
		"\x02\x02\u14D3\u14D6\x05\u0200\u0101\x02\u14D4\u14D6\x05\u0202\u0102\x02" +
		"\u14D5\u14D3\x03\x02\x02\x02\u14D5\u14D4\x03\x02\x02\x02\u14D6\u14D9\x03" +
		"\x02\x02\x02\u14D7\u14D5\x03\x02\x02\x02\u14D7\u14D8\x03\x02\x02\x02\u14D8" +
		"\u14DC\x03\x02\x02\x02\u14D9\u14D7\x03\x02\x02\x02\u14DA\u14DB\tQ\x02" +
		"\x02\u14DB\u14DD\x07\u0374\x02\x02\u14DC\u14DA\x03\x02\x02\x02\u14DC\u14DD" +
		"\x03\x02\x02\x02\u14DD\u01D1\x03\x02\x02\x02\u14DE\u14DF\x075\x02\x02" +
		"\u14DF\u14E1\x07\u02A8\x02\x02\u14E0\u14E2\x05\u02FA\u017E\x02\u14E1\u14E0" +
		"\x03\x02\x02\x02\u14E1\u14E2\x03\x02\x02\x02\u14E2\u14E3\x03\x02\x02\x02" +
		"\u14E3\u14E8\x05\u02B0\u0159\x02\u14E4\u14E5\x07\u0366\x02\x02\u14E5\u14E7" +
		"\x05\u02B0\u0159\x02\u14E6\u14E4\x03\x02\x02\x02\u14E7\u14EA\x03\x02\x02" +
		"\x02\u14E8\u14E6\x03\x02\x02\x02\u14E8\u14E9\x03\x02\x02\x02\u14E9\u01D3" +
		"\x03\x02\x02\x02\u14EA\u14E8\x03\x02\x02\x02\u14EB\u14EC\x07K\x02\x02" +
		"\u14EC\u14F1\x05\u020A\u0106\x02\u14ED\u14EE\x07\u0366\x02\x02\u14EE\u14F0" +
		"\x05\u020A\u0106\x02\u14EF\u14ED\x03\x02\x02\x02\u14F0\u14F3\x03\x02\x02" +
		"\x02\u14F1\u14EF\x03\x02\x02\x02\u14F1\u14F2\x03\x02\x02\x02\u14F2\u14F4" +
		"\x03\x02\x02\x02\u14F3\u14F1\x03\x02\x02\x02\u14F4\u14F6\x07y\x02\x02" +
		"\u14F5\u14F7\x05\u01EA\xF6\x02\u14F6\u14F5\x03\x02\x02\x02\u14F6\u14F7" +
		"\x03\x02\x02\x02\u14F7\u14F8\x03\x02\x02\x02\u14F8\u14F9\x05\u020E\u0108" +
		"\x02\u14F9\u1503\x07\xB2\x02\x02\u14FA\u14FF\x05\u01F6\xFC\x02\u14FB\u14FC" +
		"\x07\u0366\x02\x02\u14FC\u14FE\x05\u01F6\xFC\x02\u14FD\u14FB\x03\x02\x02" +
		"\x02\u14FE\u1501\x03\x02\x02\x02\u14FF\u14FD\x03\x02\x02\x02\u14FF\u1500" +
		"\x03\x02\x02\x02\u1500\u1504\x03\x02\x02\x02\u1501\u14FF\x03\x02\x02\x02" +
		"\u1502\u1504\x05\u0292\u014A\x02\u1503\u14FA\x03\x02\x02\x02\u1503\u1502" +
		"\x03\x02\x02\x02\u1504\u1513\x03\x02\x02\x02\u1505\u1511\x07\x92\x02\x02" +
		"\u1506\u1512\x07\u01FB\x02\x02\u1507\u150E\x05\u01FC\xFF\x02\u1508\u150A" +
		"\x07\r\x02\x02\u1509\u1508\x03\x02\x02\x02\u1509\u150A\x03\x02\x02\x02" +
		"\u150A\u150B\x03\x02\x02\x02\u150B\u150D\x05\u01FC\xFF\x02\u150C\u1509" +
		"\x03\x02\x02\x02\u150D\u1510\x03\x02\x02\x02\u150E\u150C\x03\x02\x02\x02" +
		"\u150E\u150F\x03\x02\x02\x02\u150F\u1512\x03\x02\x02\x02\u1510\u150E\x03" +
		"\x02\x02\x02\u1511\u1506\x03\x02\x02\x02\u1511\u1507\x03\x02\x02\x02\u1512" +
		"\u1514\x03\x02\x02\x02\u1513\u1505\x03\x02\x02\x02\u1513\u1514\x03\x02" +
		"\x02\x02\u1514\u151E\x03\x02\x02\x02\u1515\u151B\x07\xC4\x02\x02\u1516" +
		"\u1517\x07K\x02\x02\u1517\u151A\x07{\x02\x02\u1518\u151A\x05\u01FE\u0100" +
		"\x02\u1519\u1516\x03\x02\x02\x02\u1519\u1518\x03\x02\x02\x02\u151A\u151D" +
		"\x03\x02\x02\x02\u151B\u1519\x03\x02\x02\x02\u151B\u151C\x03\x02\x02\x02" +
		"\u151C\u151F\x03\x02\x02\x02\u151D\u151B\x03\x02\x02\x02\u151E\u1515\x03" +
		"\x02\x02\x02\u151E\u151F\x03\x02\x02\x02\u151F\u1527\x03\x02\x02\x02\u1520" +
		"\u1521\x07\x0F\x02\x02\u1521\u1525\x05\u02B0\u0159\x02\u1522\u1523\x07" +
		"\xC4\x02\x02\u1523\u1524\x07\u0248\x02\x02\u1524\u1526\x05\u01D6\xEC\x02" +
		"\u1525\u1522\x03\x02\x02\x02\u1525\u1526\x03\x02\x02\x02\u1526\u1528\x03" +
		"\x02\x02\x02\u1527\u1520\x03\x02\x02\x02\u1527\u1528\x03\x02\x02\x02\u1528" +
		"\u1545\x03\x02\x02\x02\u1529\u152C\x07K\x02\x02\u152A\u152B\x07\u0225" +
		"\x02\x02\u152B\u152D\x07y\x02\x02\u152C\u152A\x03\x02\x02\x02\u152C\u152D" +
		"\x03\x02\x02\x02\u152D\u152E\x03\x02\x02\x02\u152E\u1533\x05\u0294\u014B" +
		"\x02\u152F\u1530\x07\u0366\x02\x02\u1530\u1532\x05\u0294\u014B\x02\u1531" +
		"\u152F\x03\x02\x02\x02\u1532\u1535\x03\x02\x02\x02\u1533\u1531\x03\x02" +
		"\x02\x02\u1533\u1534\x03\x02\x02\x02\u1534\u1536\x03\x02\x02\x02\u1535" +
		"\u1533\x03\x02\x02\x02\u1536\u1537\x07\xB2\x02\x02\u1537\u153C\x05\u0294" +
		"\u014B\x02\u1538\u1539\x07\u0366\x02\x02\u1539\u153B\x05\u0294\u014B\x02" +
		"\u153A\u1538\x03\x02\x02\x02\u153B\u153E\x03\x02\x02\x02\u153C\u153A\x03" +
		"\x02\x02\x02\u153C\u153D\x03\x02\x02\x02\u153D\u1542\x03\x02\x02\x02\u153E" +
		"\u153C\x03\x02\x02\x02\u153F\u1540\x07\xC4\x02\x02\u1540\u1541\x07\u02C2" +
		"\x02\x02\u1541\u1543\x07{\x02\x02\u1542\u153F\x03\x02\x02\x02\u1542\u1543" +
		"\x03\x02\x02\x02\u1543\u1545\x03\x02\x02\x02\u1544\u14EB\x03\x02\x02\x02" +
		"\u1544\u1529\x03\x02\x02\x02\u1545\u01D5\x03\x02\x02\x02\u1546\u154F\x07" +
		",\x02\x02\u1547\u154F\x07\u01FB\x02\x02\u1548\u154B\x07\t\x02\x02\u1549" +
		"\u154A\x07=\x02\x02\u154A\u154C\x05\u0292\u014A\x02\u154B\u1549\x03\x02" +
		"\x02\x02\u154B\u154C\x03\x02\x02\x02\u154C\u154F\x03\x02\x02\x02\u154D" +
		"\u154F\x05\u0292\u014A\x02\u154E\u1546\x03\x02\x02\x02\u154E\u1547\x03" +
		"\x02\x02\x02\u154E\u1548\x03\x02\x02\x02\u154E\u154D\x03\x02\x02\x02\u154F" +
		"\u01D7\x03\x02\x02\x02\u1550\u1551\x07K\x02\x02\u1551\u1552\x07\u0225" +
		"\x02\x02\u1552\u1553\x07y\x02\x02\u1553\u1554\x05\u02B0\u0159\x02\u1554" +
		"\u1555\x07\xB2\x02\x02\u1555\u155A\x05\u02B0\u0159\x02\u1556\u1557\x07" +
		"\u0366\x02\x02\u1557\u1559\x05\u02B0\u0159\x02\u1558\u1556\x03\x02\x02" +
		"\x02\u1559\u155C\x03\x02\x02\x02\u155A\u1558\x03\x02\x02\x02\u155A\u155B" +
		"\x03\x02\x02\x02\u155B\u1560\x03\x02\x02\x02\u155C\u155A\x03\x02\x02\x02" +
		"\u155D\u155E\x07\xC4\x02\x02\u155E\u155F\x07K\x02\x02\u155F\u1561\x07" +
		"{\x02\x02\u1560\u155D\x03\x02\x02\x02\u1560\u1561\x03\x02\x02\x02\u1561" +
		"\u01D9\x03\x02\x02\x02\u1562\u1563\x07\n\x02\x02\u1563\u1564\x07\u02E5" +
		"\x02\x02\u1564\u1565\x07L\x02\x02\u1565\u156B\x05\u028A\u0146\x02\u1566" +
		"\u1568\x07\xC0\x02\x02\u1567\u1569\x07\u035B\x02\x02\u1568\u1567\x03\x02" +
		"\x02\x02\u1568\u1569\x03\x02\x02\x02\u1569\u156A\x03\x02\x02\x02\u156A" +
		"\u156C\x05\u01E2\xF2\x02\u156B\u1566\x03\x02\x02\x02\u156B\u156C\x03\x02" +
		"\x02\x02\u156C\u1572\x03\x02\x02\x02\u156D\u156F\x07\u0347\x02\x02\u156E" +
		"\u1570\x07\u035B\x02\x02\u156F\u156E\x03\x02\x02\x02\u156F\u1570\x03\x02" +
		"\x02\x02\u1570\u1571\x03\x02\x02\x02\u1571\u1573\x05\u02CC\u0167\x02\u1572" +
		"\u156D\x03\x02\x02\x02\u1572\u1573\x03\x02\x02\x02\u1573\u1578\x03\x02" +
		"\x02\x02\u1574\u1576\t(\x02\x02\u1575\u1577\x07D\x02\x02\u1576\u1575\x03" +
		"\x02\x02\x02\u1576\u1577\x03\x02\x02\x02\u1577\u1579\x03\x02\x02\x02\u1578" +
		"\u1574\x03\x02\x02\x02\u1578\u1579\x03\x02\x02\x02\u1579\u01DB\x03\x02" +
		"\x02\x02\u157A\u157B\x07$\x02\x02\u157B\u157C\x07\u02E5\x02\x02\u157C" +
		"\u157D\x07L\x02\x02\u157D\u157E\x05\u0288\u0145\x02\u157E\u157F\x07\u0349" +
		"\x02\x02\u157F\u1580\x07\u035B\x02\x02\u1580\u1586\tR\x02\x02\u1581\u1583" +
		"\x07\xC0\x02\x02\u1582\u1584\x07\u035B\x02\x02\u1583\u1582\x03\x02\x02" +
		"\x02\u1583\u1584\x03\x02\x02\x02\u1584\u1585\x03\x02\x02\x02\u1585\u1587" +
		"\x05\u01E2\xF2\x02\u1586\u1581\x03\x02\x02\x02\u1586\u1587\x03\x02\x02" +
		"\x02\u1587\u158D\x03\x02\x02\x02\u1588\u158A\x07\u0347\x02\x02\u1589\u158B" +
		"\x07\u035B\x02\x02\u158A\u1589\x03\x02\x02\x02\u158A\u158B\x03\x02\x02" +
		"\x02\u158B\u158C\x03\x02\x02\x02\u158C\u158E\x05\u02CC\u0167\x02\u158D" +
		"\u1588\x03\x02\x02\x02\u158D\u158E\x03\x02\x02\x02\u158E\u1590\x03\x02" +
		"\x02\x02\u158F\u1591\t(\x02\x02\u1590\u158F\x03\x02\x02\x02\u1590\u1591" +
		"\x03\x02\x02\x02\u1591\u01DD\x03\x02\x02\x02\u1592\u1593\x075\x02\x02" +
		"\u1593\u1594\x07\u02E5\x02\x02\u1594\u1595\x07L\x02\x02\u1595\u1597\x05" +
		"\u028A\u0146\x02\u1596\u1598\x07D\x02\x02\u1597\u1596\x03\x02\x02\x02" +
		"\u1597\u1598\x03\x02\x02\x02\u1598\u01DF\x03\x02\x02\x02\u1599\u159A\x07" +
		"\x9D\x02\x02\u159A\u159B\x07\u02E5\x02\x02\u159B\u159C\x07L\x02\x02\u159C" +
		"\u15A6\x05\u028A\u0146\x02\u159D\u159E\x07C\x02\x02\u159E\u15A3\x05\u02CC" +
		"\u0167\x02\u159F\u15A0\x07\u0366\x02\x02\u15A0\u15A2\x05\u02CC\u0167\x02" +
		"\u15A1\u159F\x03\x02\x02\x02\u15A2\u15A5\x03\x02\x02\x02\u15A3\u15A1\x03" +
		"\x02\x02\x02\u15A3\u15A4\x03\x02\x02\x02\u15A4\u15A7\x03\x02\x02\x02\u15A5" +
		"\u15A3\x03\x02\x02\x02\u15A6\u159D\x03\x02\x02\x02\u15A6\u15A7\x03\x02" +
		"\x02\x02\u15A7\u01E1\x03\x02\x02\x02\u15A8\u15AE\x05\u02CC\u0167\x02\u15A9" +
		"\u15AA\x05\u02CC\u0167\x02\u15AA\u15AB\x07\u0358\x02\x02\u15AB\u15AC\x05" +
		"\u02CC\u0167\x02\u15AC\u15AE\x03\x02\x02\x02\u15AD\u15A8\x03\x02\x02\x02" +
		"\u15AD\u15A9\x03\x02\x02\x02\u15AE\u15B3\x03\x02\x02\x02\u15AF\u15B0\x07" +
		"\u0366\x02\x02\u15B0\u15B2\x05\u01E2\xF2\x02\u15B1\u15AF\x03\x02\x02\x02" +
		"\u15B2\u15B5\x03\x02\x02\x02\u15B3\u15B1\x03\x02\x02\x02\u15B3\u15B4\x03" +
		"\x02\x02\x02\u15B4\u01E3\x03\x02\x02\x02\u15B5\u15B3\x03\x02\x02\x02\u15B6" +
		"\u15B7\x07\x8F\x02\x02\u15B7\u15B8\x07\u02A8\x02\x02\u15B8\u15BD\x05\u0210" +
		"\u0109\x02\u15B9\u15BA\x07\u0366\x02\x02\u15BA\u15BC\x05\u0210\u0109\x02" +
		"\u15BB\u15B9\x03\x02\x02\x02\u15BC\u15BF\x03\x02\x02\x02\u15BD\u15BB\x03" +
		"\x02\x02\x02\u15BD\u15BE\x03\x02\x02\x02\u15BE\u01E5\x03\x02\x02\x02\u15BF" +
		"\u15BD\x03\x02\x02\x02\u15C0\u15C2\x07\x97\x02\x02\u15C1\u15C3\x05\u02FA" +
		"\u017E\x02\u15C2\u15C1\x03\x02\x02\x02\u15C2\u15C3\x03\x02\x02\x02\u15C3" +
		"\u15C4\x03\x02\x02\x02\u15C4\u15C9\x05\u020A\u0106\x02\u15C5\u15C6\x07" +
		"\u0366\x02\x02\u15C6\u15C8\x05\u020A\u0106\x02\u15C7\u15C5\x03\x02\x02" +
		"\x02\u15C8\u15CB\x03\x02\x02\x02\u15C9\u15C7\x03\x02\x02\x02\u15C9\u15CA" +
		"\x03\x02\x02\x02\u15CA\u15CC\x03\x02\x02\x02\u15CB\u15C9\x03\x02\x02\x02" +
		"\u15CC\u15CE\x07y\x02\x02\u15CD\u15CF\x05\u01EA\xF6\x02\u15CE\u15CD\x03" +
		"\x02\x02\x02\u15CE\u15CF\x03\x02\x02\x02\u15CF\u15D0\x03\x02\x02\x02\u15D0" +
		"\u15D1\x05\u020E\u0108\x02\u15D1\u15D2\x07F\x02\x02\u15D2\u15D4\x05\u0292" +
		"\u014A\x02\u15D3\u15D5\x05\u01E8\xF5\x02\u15D4\u15D3\x03\x02\x02\x02\u15D4" +
		"\u15D5\x03\x02\x02\x02\u15D5\u15F5\x03\x02\x02\x02\u15D6\u15D8\x07\x97" +
		"\x02\x02\u15D7\u15D9\x05\u02FA\u017E\x02\u15D8\u15D7\x03\x02\x02\x02\u15D8" +
		"\u15D9\x03\x02\x02\x02\u15D9\u15DA\x03\x02\x02\x02\u15DA\u15DC\x07\t\x02" +
		"\x02\u15DB\u15DD\x07\u02E0\x02\x02\u15DC\u15DB\x03\x02\x02\x02\u15DC\u15DD" +
		"\x03\x02\x02\x02\u15DD\u15DE\x03\x02\x02\x02\u15DE\u15DF\x07\u0366\x02" +
		"\x02\u15DF\u15E0\x07K\x02\x02\u15E0\u15E1\x07{\x02\x02\u15E1\u15E2\x07" +
		"F\x02\x02\u15E2\u15E4\x05\u0292\u014A\x02\u15E3\u15E5\x05\u01E8\xF5\x02" +
		"\u15E4\u15E3\x03\x02\x02\x02\u15E4\u15E5\x03\x02\x02\x02\u15E5\u15F5\x03" +
		"\x02\x02\x02\u15E6\u15E8\x07\x97\x02\x02\u15E7\u15E9\x05\u02FA\u017E\x02" +
		"\u15E8\u15E7\x03\x02\x02\x02\u15E8\u15E9\x03\x02\x02\x02\u15E9\u15EC\x03" +
		"\x02\x02\x02\u15EA\u15EB\x07\u0225\x02\x02\u15EB\u15ED\x07y\x02\x02\u15EC" +
		"\u15EA\x03\x02\x02\x02\u15EC\u15ED\x03\x02\x02\x02\u15ED\u15EE\x03\x02" +
		"\x02\x02\u15EE\u15EF\x05\u0292\u014A\x02\u15EF\u15F0\x07F\x02\x02\u15F0" +
		"\u15F2\x05\u0292\u014A\x02\u15F1\u15F3\x05\u01E8\xF5\x02\u15F2\u15F1\x03" +
		"\x02\x02\x02\u15F2\u15F3\x03\x02\x02\x02\u15F3\u15F5\x03\x02\x02\x02\u15F4" +
		"\u15C0\x03\x02\x02\x02\u15F4\u15D6\x03\x02\x02\x02\u15F4\u15E6\x03\x02" +
		"\x02\x02\u15F5\u01E7\x03\x02\x02\x02\u15F6\u15F7\x07Q\x02\x02\u15F7\u15F8" +
		"\x07\u02A4\x02\x02\u15F8\u15F9\x07\u02A8\x02\x02\u15F9\u01E9\x03\x02\x02" +
		"\x02\u15FA\u15FB\tS\x02\x02\u15FB\u01EB\x03\x02\x02\x02\u15FC\u15FD\x07" +
		"\x9D\x02\x02\u15FD\u1600\x07\u0213\x02\x02\u15FE\u15FF\x07C\x02\x02\u15FF" +
		"\u1601\x05\u02B0\u0159\x02\u1600\u15FE\x03\x02\x02\x02\u1600\u1601\x03" +
		"\x02\x02\x02\u1601\u1602\x03\x02\x02\x02\u1602\u1605\x07\u035B\x02\x02" +
		"\u1603\u1606\x05\u0322\u0192\x02\u1604\u1606\x07\u0374\x02\x02\u1605\u1603" +
		"\x03\x02\x02\x02\u1605\u1604\x03\x02\x02\x02\u1606\u161D\x03\x02\x02\x02" +
		"\u1607\u1608\x07\x9D\x02\x02\u1608\u160B\x07\u0213\x02\x02\u1609\u160A" +
		"\x07C\x02\x02\u160A\u160C\x05\u02B0\u0159\x02\u160B\u1609\x03\x02\x02" +
		"\x02\u160B\u160C\x03\x02\x02\x02\u160C\u1611\x03\x02\x02\x02\u160D\u160E" +
		"\x07\xB2\x02\x02\u160E\u1612\x07\u033F\x02\x02\u160F\u1610\x07\u035B\x02" +
		"\x02\u1610\u1612\x07\u0374\x02\x02\u1611\u160D\x03\x02\x02\x02\u1611\u160F" +
		"\x03\x02\x02\x02\u1612\u1615\x03\x02\x02\x02\u1613\u1614\x07\x91\x02\x02" +
		"\u1614\u1616\x07\u0374\x02\x02\u1615\u1613\x03\x02\x02\x02\u1615\u1616" +
		"\x03\x02\x02\x02\u1616\u161A\x03\x02\x02\x02\u1617\u1618\x07\x95\x02\x02" +
		"\u1618\u1619\x07&\x02\x02\u1619\u161B\x07\u0213\x02\x02\u161A\u1617\x03" +
		"\x02\x02\x02\u161A\u161B\x03\x02\x02\x02\u161B\u161D\x03\x02\x02\x02\u161C" +
		"\u15FC\x03\x02\x02\x02\u161C\u1607\x03\x02\x02\x02\u161D\u01ED\x03\x02" +
		"\x02\x02\u161E\u161F\x05\u02B0\u0159\x02\u161F\u1620\x05\u0200\u0101\x02" +
		"\u1620\u01EF\x03\x02\x02\x02\u1621\u1622\x05\u02B0\u0159\x02\u1622\u1623" +
		"\x07\u01A9\x02\x02\u1623\u1624\x07\x16\x02\x02\u1624\u1625\x07\u0374\x02" +
		"\x02\u1625\u1626\x05\u01F8\xFD\x02\u1626\u1648\x03\x02\x02\x02\u1627\u1628" +
		"\x05\u02B0\u0159\x02\u1628\u1629\x07\u01A9\x02\x02\u1629\u162A\x07\x16" +
		"\x02\x02\u162A\u162B\x07\u033F\x02\x02\u162B\u162C\x07\u0213\x02\x02\u162C" +
		"\u162D\x05\u01F8\xFD\x02\u162D\u1648\x03\x02\x02\x02\u162E\u162F\x05\u02B0" +
		"\u0159\x02\u162F\u1630\x07\u01A9\x02\x02\u1630\u1631\x07\xC4\x02\x02\u1631" +
		"\u1632\x05\u01FA\xFE\x02\u1632\u1648\x03\x02\x02\x02\u1633\u1634\x05\u02B0" +
		"\u0159\x02\u1634\u1635\x07\u0173\x02\x02\u1635\u1636\x07\u0201\x02\x02" +
		"\u1636\u1637\x07\u0213\x02\x02\u1637\u1648\x03\x02\x02\x02\u1638\u163E" +
		"\x05\u02B0\u0159\x02\u1639\u163A\tT\x02\x02\u163A\u163C\x05\u0208\u0105" +
		"\x02\u163B\u163D\x05\u0204\u0103\x02\u163C\u163B\x03\x02\x02\x02\u163C" +
		"\u163D\x03\x02\x02\x02\u163D\u163F\x03\x02\x02\x02\u163E\u1639\x03\x02" +
		"\x02\x02\u163F\u1640\x03\x02\x02\x02\u1640\u163E\x03\x02\x02\x02\u1640" +
		"\u1641\x03\x02\x02\x02\u1641\u1648\x03\x02\x02\x02\u1642\u1644\x05\u02B0" +
		"\u0159\x02\u1643\u1645\x05\u0206\u0104\x02\u1644\u1643\x03\x02\x02\x02" +
		"\u1644\u1645\x03\x02\x02\x02\u1645\u1648\x03\x02\x02\x02\u1646\u1648\x05" +
		"\u02B0\u0159\x02\u1647\u1621\x03\x02\x02\x02\u1647\u1627\x03\x02\x02\x02" +
		"\u1647\u162E\x03\x02\x02\x02\u1647\u1633\x03\x02\x02\x02\u1647\u1638\x03" +
		"\x02\x02\x02\u1647\u1642\x03\x02\x02\x02\u1647\u1646\x03\x02\x02\x02\u1648" +
		"\u01F1\x03\x02\x02\x02\u1649\u164A\x07\u01A9\x02\x02\u164A\u1650\x07\x16" +
		"\x02\x02\u164B\u1651\x07\u0374\x02\x02\u164C\u164D\x07\u033F\x02\x02\u164D" +
		"\u1651\x07\u0213\x02\x02\u164E\u164F\x07\u0213\x02\x02\u164F\u1651\x07" +
		"\u0374\x02\x02\u1650\u164B\x03\x02\x02\x02\u1650\u164C\x03\x02\x02\x02" +
		"\u1650\u164E\x03\x02\x02\x02\u1651\u1654\x03\x02\x02\x02\u1652\u1653\x07" +
		"\r\x02\x02\u1653\u1655\x05\u01F2\xFA\x02\u1654\u1652\x03\x02\x02\x02\u1654" +
		"\u1655\x03\x02\x02\x02\u1655\u166E\x03\x02\x02\x02\u1656\u1657\x07\u01A9" +
		"\x02\x02\u1657\u1658\x07\xC4\x02\x02\u1658\u1661\x05\u02C6\u0164\x02\u1659" +
		"\u165D\x07\x16\x02\x02\u165A\u165E\x07\u0374\x02\x02\u165B\u165C\x07\u033F" +
		"\x02\x02\u165C\u165E\x07\u0213\x02\x02\u165D\u165A\x03\x02\x02\x02\u165D" +
		"\u165B\x03\x02\x02\x02\u165E\u1662\x03\x02\x02\x02\u165F\u1660\x07\x0F" +
		"\x02\x02\u1660\u1662\x07\u0374\x02\x02\u1661\u1659\x03\x02\x02\x02\u1661" +
		"\u165F\x03\x02\x02\x02\u1661\u1662\x03\x02\x02\x02\u1662\u1665\x03\x02" +
		"\x02\x02\u1663\u1664\x07\r\x02\x02\u1664\u1666\x05\u01F2\xFA\x02\u1665" +
		"\u1663\x03\x02\x02\x02\u1665\u1666\x03\x02\x02\x02\u1666\u166E\x03\x02" +
		"\x02\x02\u1667\u1668\x07\u01A9\x02\x02\u1668\u1669\x07\xC4\x02\x02\u1669" +
		"\u166B\x05\u02C6\u0164\x02\u166A\u166C\x05\u01F4\xFB\x02\u166B\u166A\x03" +
		"\x02\x02\x02\u166B\u166C\x03\x02\x02\x02\u166C\u166E\x03\x02\x02\x02\u166D" +
		"\u1649\x03\x02\x02\x02\u166D\u1656\x03\x02\x02\x02\u166D\u1667\x03\x02" +
		"\x02\x02\u166E\u01F3\x03\x02\x02\x02\u166F\u1670\x07\u01AD\x02\x02\u1670" +
		"\u1671\x07\u02C6\x02\x02\u1671\u1672\x07\u01A9\x02\x02\u1672\u1676\x07" +
		"\x16\x02\x02\u1673\u1674\x07\u033F\x02\x02\u1674\u1677\x07\u0213\x02\x02" +
		"\u1675\u1677\x07\u0374\x02\x02\u1676\u1673\x03\x02\x02\x02\u1676\u1675" +
		"\x03\x02\x02\x02\u1677\u1681\x03\x02\x02\x02\u1678\u1679\x07\u01AD\x02" +
		"\x02\u1679\u167A\x07\u02C6\x02\x02\u167A\u167B\x07\u01A9\x02\x02\u167B" +
		"\u167C\x07\xC4\x02\x02\u167C\u167D\x05\u02C6\u0164\x02\u167D\u167E\x07" +
		"\x0F\x02\x02\u167E\u167F\x07\u0374\x02\x02\u167F\u1681\x03\x02\x02\x02" +
		"\u1680\u166F\x03\x02\x02\x02\u1680\u1678\x03\x02\x02\x02\u1681\u01F5\x03" +
		"\x02\x02\x02\u1682\u1683\x05\u02B0\u0159\x02\u1683\u1684\x07\u01A9\x02" +
		"\x02\u1684\u1685\x07\x16\x02\x02\u1685\u1686\x07\u0213\x02\x02\u1686\u1687" +
		"\x07\u0374\x02\x02\u1687\u169C\x03\x02\x02\x02\u1688\u1689\x05\u02B0\u0159" +
		"\x02\u1689\u168A\x07\u01A9\x02\x02\u168A\u168B\x07\x16\x02\x02\u168B\u168C" +
		"\x07\u033F\x02\x02\u168C\u168D\x07\u0213\x02\x02\u168D\u168E\x05\u01F8" +
		"\xFD\x02\u168E\u169C\x03\x02\x02\x02\u168F\u1690\x05\u02B0\u0159\x02\u1690" +
		"\u1691\x07\u01A9\x02\x02\u1691\u1692\x07\x16\x02\x02\u1692\u1693\x07\u0374" +
		"\x02\x02\u1693\u1694\x05\u01F8\xFD\x02\u1694\u169C\x03\x02\x02\x02\u1695" +
		"\u1696\x05\u02B0\u0159\x02\u1696\u1697\x07\u01A9\x02\x02\u1697\u1698\x07" +
		"\xC4\x02\x02\u1698\u1699\x05\u01FA\xFE\x02\u1699\u169C\x03\x02\x02\x02" +
		"\u169A\u169C\x05\u02B0\u0159\x02\u169B\u1682\x03\x02\x02\x02\u169B\u1688" +
		"\x03\x02\x02\x02\u169B\u168F\x03\x02\x02\x02\u169B\u1695\x03\x02\x02\x02" +
		"\u169B\u169A\x03\x02\x02\x02\u169C\u01F7\x03\x02\x02\x02\u169D\u169E\x07" +
		"\x91\x02\x02\u169E\u16A0\x07\u0374\x02\x02\u169F\u169D\x03\x02\x02\x02" +
		"\u169F\u16A0\x03\x02\x02\x02\u16A0\u16A4\x03\x02\x02\x02\u16A1\u16A2\x07" +
		"\x95\x02\x02\u16A2\u16A3\x07&\x02\x02\u16A3\u16A5\x07\u0213\x02\x02\u16A4" +
		"\u16A1\x03\x02\x02\x02\u16A4\u16A5\x03\x02\x02\x02\u16A5\u01F9\x03\x02" +
		"\x02\x02\u16A6\u16AE\x05\u02C6\u0164\x02\u16A7\u16AB\tU\x02\x02\u16A8" +
		"\u16AC\x07\u0374\x02\x02\u16A9\u16AA\x07\u033F\x02\x02\u16AA\u16AC\x07" +
		"\u0213\x02\x02\u16AB\u16A8\x03\x02\x02\x02\u16AB\u16A9\x03\x02\x02\x02" +
		"\u16AC\u16AD\x03\x02\x02\x02\u16AD\u16AF\x05\u01F8\xFD\x02\u16AE\u16A7" +
		"\x03\x02\x02\x02\u16AE\u16AF\x03\x02\x02\x02\u16AF\u16B5\x03\x02\x02\x02" +
		"\u16B0\u16B1\x05\u02C6\u0164\x02\u16B1\u16B2\x07\xBE\x02\x02\u16B2\u16B3" +
		"\x05\u0322\u0192\x02\u16B3\u16B5\x03\x02\x02\x02\u16B4\u16A6\x03\x02\x02" +
		"\x02\u16B4\u16B0\x03\x02\x02\x02\u16B5\u01FB\x03\x02\x02\x02\u16B6\u16BF" +
		"\x07\xAB\x02\x02\u16B7\u16BF\x07\u02B7\x02\x02\u16B8\u16B9\x07\u014D\x02" +
		"\x02\u16B9\u16BF\x07\u0374\x02\x02\u16BA\u16BB\x07\u01BB\x02\x02\u16BB" +
		"\u16BF\x07\u0374\x02\x02\u16BC\u16BD\x07\u028D\x02\x02\u16BD\u16BF\x07" +
		"\u0374\x02\x02\u16BE\u16B6\x03\x02\x02\x02\u16BE\u16B7\x03\x02\x02\x02" +
		"\u16BE\u16B8\x03\x02\x02\x02\u16BE\u16BA\x03\x02\x02\x02\u16BE\u16BC\x03" +
		"\x02\x02\x02\u16BF\u01FD\x03\x02\x02\x02\u16C0\u16C1\x07\u01E1\x02\x02" +
		"\u16C1\u16C9\x05\u02CC\u0167\x02\u16C2\u16C3\x07\u01E4\x02\x02\u16C3\u16C9" +
		"\x05\u02CC\u0167\x02\u16C4\u16C5\x07\u01E0\x02\x02\u16C5\u16C9\x05\u02CC" +
		"\u0167\x02\u16C6\u16C7\x07\u01E5\x02\x02\u16C7\u16C9\x05\u02CC\u0167\x02" +
		"\u16C8\u16C0\x03\x02\x02\x02\u16C8\u16C2\x03\x02\x02\x02\u16C8\u16C4\x03" +
		"\x02\x02\x02\u16C8\u16C6\x03\x02\x02\x02\u16C9\u01FF\x03\x02\x02\x02\u16CA" +
		"\u16CB\x07\u0213\x02\x02\u16CB\u16D2\x07\u0188\x02\x02\u16CC\u16D3\x07" +
		",\x02\x02\u16CD\u16D3\x07\u01F6\x02\x02\u16CE\u16CF\x07Y\x02\x02\u16CF" +
		"\u16D0\x05\u02CC\u0167\x02\u16D0\u16D1\x07\u02BC\x02\x02\u16D1\u16D3\x03" +
		"\x02\x02\x02\u16D2\u16CC\x03\x02\x02\x02\u16D2\u16CD\x03\x02\x02\x02\u16D2" +
		"\u16CE\x03\x02\x02\x02\u16D2\u16D3\x03\x02\x02\x02\u16D3\u16F1\x03\x02" +
		"\x02\x02\u16D4\u16D5\x07\u0213\x02\x02\u16D5\u16D8\x07\u01A6\x02\x02\u16D6" +
		"\u16D9\x07,\x02\x02\u16D7\u16D9\x05\u02CC\u0167\x02\u16D8\u16D6\x03\x02" +
		"\x02\x02\u16D8\u16D7\x03\x02\x02\x02\u16D9\u16F1\x03\x02\x02\x02\u16DA" +
		"\u16DB\x07\u0213\x02\x02\u16DB\u16DC\x07\u0247\x02\x02\u16DC\u16E1\x07" +
		"Y\x02\x02\u16DD\u16E2\x07,\x02\x02\u16DE\u16DF\x05\u02CC\u0167\x02\u16DF" +
		"\u16E0\x07\u02BC\x02\x02\u16E0\u16E2\x03\x02\x02\x02\u16E1\u16DD\x03\x02" +
		"\x02\x02\u16E1\u16DE\x03\x02\x02\x02\u16E2\u16F1\x03\x02\x02\x02\u16E3" +
		"\u16E4\x07\u0213\x02\x02\u16E4\u16E5\x07\x92\x02\x02\u16E5\u16E7\x07&" +
		"\x02\x02\u16E6\u16E8\tV\x02\x02\u16E7\u16E6\x03\x02\x02\x02\u16E7\u16E8" +
		"\x03\x02\x02\x02\u16E8\u16F1\x03\x02\x02\x02\u16E9\u16EA\x07\u018D\x02" +
		"\x02\u16EA\u16F1\x05\u02CC\u0167\x02\u16EB\u16EE\x07\u0214\x02\x02\u16EC" +
		"\u16EF\x05\u02CC\u0167\x02\u16ED\u16EF\x07\u029F\x02\x02\u16EE\u16EC\x03" +
		"\x02\x02\x02\u16EE\u16ED\x03\x02\x02\x02\u16EF\u16F1\x03\x02\x02\x02\u16F0" +
		"\u16CA\x03\x02\x02\x02\u16F0\u16D4\x03\x02\x02\x02\u16F0\u16DA\x03\x02" +
		"\x02\x02\u16F0\u16E3\x03\x02\x02\x02\u16F0\u16E9\x03\x02\x02\x02\u16F0" +
		"\u16EB\x03\x02\x02\x02\u16F1\u0201\x03\x02\x02\x02\u16F2\u16F3\x07\u0132" +
		"\x02\x02\u16F3\u16F4\tW\x02\x02\u16F4\u0203\x03\x02\x02\x02\u16F5\u16F8" +
		"\x07\u01A9\x02\x02\u16F6\u16F7\x07\xC4\x02\x02\u16F7\u16F9\x05\u02C6\u0164" +
		"\x02\u16F8\u16F6\x03\x02\x02\x02\u16F8\u16F9\x03\x02\x02\x02\u16F9\u1702" +
		"\x03\x02\x02\x02\u16FA\u16FE\x07\x16\x02\x02\u16FB\u16FF\x07\u0374\x02" +
		"\x02\u16FC\u16FD\x07\u033F\x02\x02\u16FD\u16FF\x07\u0213\x02\x02\u16FE" +
		"\u16FB\x03\x02\x02\x02\u16FE\u16FC\x03\x02\x02\x02\u16FF\u1703\x03\x02" +
		"\x02\x02\u1700\u1701\x07\x0F\x02\x02\u1701\u1703\x07\u0374\x02\x02\u1702" +
		"\u16FA\x03\x02\x02\x02\u1702\u1700\x03\x02\x02\x02\u1703\u0205\x03\x02" +
		"\x02\x02\u1704\u1705\x05\u0208\u0105\x02\u1705\u1706\x07\u01AF\x02\x02" +
		"\u1706\u1707\x07\u022D\x02\x02\u1707\u1714\x03\x02\x02\x02\u1708\u1709" +
		"\x05\u0208\u0105\x02\u1709\u170A\x07\u0193\x02\x02\u170A\u170B\x07\u022D" +
		"\x02\x02\u170B\u170C\x07\x9D\x02\x02\u170C\u170D\x07\u014C\x02\x02\u170D" +
		"\u170E\x07\x0F\x02\x02\u170E\u170F\x07\u0374\x02\x02\u170F\u1714\x03\x02" +
		"\x02\x02\u1710\u1711\x05\u0208\u0105\x02\u1711\u1712\x07\u02A5\x02\x02" +
		"\u1712\u1714\x03\x02\x02\x02";
	private static readonly _serializedATNSegment12: string =
		"\u1713\u1704\x03\x02\x02\x02\u1713\u1708\x03\x02\x02\x02\u1713\u1710\x03" +
		"\x02\x02\x02\u1714\u0207\x03\x02\x02\x02\u1715\u1716\tX\x02\x02\u1716" +
		"\u1717\x07\u018C\x02\x02\u1717\u0209\x03\x02\x02\x02\u1718\u171D\x05\u020C" +
		"\u0107\x02\u1719\u171A\x07\u0364\x02\x02\u171A\u171B\x05\u0298\u014D\x02" +
		"\u171B\u171C\x07\u0365\x02\x02\u171C\u171E\x03\x02\x02\x02\u171D\u1719" +
		"\x03\x02\x02\x02\u171D\u171E\x03\x02\x02\x02\u171E\u020B\x03\x02\x02\x02" +
		"\u171F\u1721\x07\t\x02\x02\u1720\u1722\x07\u02E0\x02\x02\u1721\u1720\x03" +
		"\x02\x02\x02\u1721\u1722\x03\x02\x02\x02\u1722\u177D\x03\x02\x02\x02\u1723" +
		"\u1725\x07\n\x02\x02\u1724\u1726\x07\u02E9\x02\x02\u1725\u1724\x03\x02" +
		"\x02\x02\u1725\u1726\x03\x02\x02\x02\u1726\u177D\x03\x02\x02\x02\u1727" +
		"\u172F\x07$\x02\x02\u1728\u1729\x07\u0296\x02\x02\u1729\u1730\x07\u02F2" +
		"\x02\x02\u172A\u1730\x07\u02E9\x02\x02\u172B\u1730\x07\u02AE\x02\x02\u172C" +
		"\u1730\x07\u02A8\x02\x02\u172D\u1730\x07\u0294\x02\x02\u172E\u1730\x07" +
		"\u0248\x02\x02\u172F\u1728\x03\x02\x02\x02\u172F\u172A\x03\x02\x02\x02" +
		"\u172F\u172B\x03\x02\x02\x02\u172F\u172C\x03\x02\x02\x02\u172F\u172D\x03" +
		"\x02\x02\x02\u172F\u172E\x03\x02\x02\x02\u172F\u1730\x03\x02\x02\x02\u1730" +
		"\u177D\x03\x02\x02\x02\u1731\u177D\x07.\x02\x02\u1732\u1734\x075\x02\x02" +
		"\u1733\u1735\x07\u0248\x02\x02\u1734\u1733\x03\x02\x02\x02\u1734\u1735" +
		"\x03\x02\x02\x02\u1735\u177D\x03\x02\x02\x02\u1736\u177D\x07\u0183\x02" +
		"\x02\u1737\u177D\x07\u02CF\x02\x02\u1738\u177D\x07\u02D0\x02\x02\u1739" +
		"\u173A\x07K\x02\x02\u173A\u177D\x07{\x02\x02\u173B\u177D\x07T\x02\x02" +
		"\u173C\u177D\x07X\x02\x02\u173D\u173E\x07j\x02\x02\u173E\u177D\x07\u02F2" +
		"\x02\x02\u173F\u177D\x07\u02E1\x02\x02\u1740\u177D\x07\u0225\x02\x02\u1741" +
		"\u177D\x07\x8C\x02\x02\u1742\u177D\x07\u02E2\x02\x02\u1743\u1744\x07\u023E" +
		"\x02\x02\u1744\u177D\tY\x02\x02\u1745\u177D\x07\x9C\x02\x02\u1746\u1747" +
		"\x07\x9F\x02\x02\u1747\u177D\tZ\x02\x02\u1748\u177D\x07\u02EF\x02\x02" +
		"\u1749\u177D\x07\u02F0\x02\x02\u174A\u177D\x07\xB4\x02\x02\u174B\u177D" +
		"\x07\xBB\x02\x02\u174C\u177D\x07\xBC\x02\x02\u174D\u177D\x07\u02C3\x02" +
		"\x02\u174E\u177D\x07\u02C4\x02\x02\u174F\u177D\x07\u02C5\x02\x02\u1750" +
		"\u177D\x07\u02C7\x02\x02\u1751\u177D\x07\u02C8\x02\x02\u1752\u177D\x07" +
		"\u02C9\x02\x02\u1753\u177D\x07\u02CA\x02\x02\u1754\u177D\x07\u02CC\x02" +
		"\x02\u1755\u177D\x07\u02CD\x02\x02\u1756\u177D\x07\u02CE\x02\x02\u1757" +
		"\u177D\x07\u02D1\x02\x02\u1758\u177D\x07\u02D2\x02\x02\u1759\u177D\x07" +
		"\u02D3\x02\x02\u175A\u177D\x07\u02D4\x02\x02\u175B\u177D\x07\u02D5\x02" +
		"\x02\u175C\u177D\x07\u02D6\x02\x02\u175D\u177D\x07\u02D7\x02\x02\u175E" +
		"\u177D\x07\u02D8\x02\x02\u175F\u177D\x07\u02D9\x02\x02\u1760\u177D\x07" +
		"\u02DA\x02\x02\u1761\u177D\x07\u02DD\x02\x02\u1762\u177D\x07\u02DE\x02" +
		"\x02\u1763\u177D\x07\u02DF\x02\x02\u1764\u177D\x07\u02E3\x02\x02\u1765" +
		"\u177D\x07\u02E4\x02\x02\u1766\u177D\x07\u02E6\x02\x02\u1767\u177D\x07" +
		"\u02E7\x02\x02\u1768\u177D\x07\u02E8\x02\x02\u1769\u177D\x07\u02EB\x02" +
		"\x02\u176A\u177D\x07\u02EC\x02\x02\u176B\u177D\x07\u02ED\x02\x02\u176C" +
		"\u177D\x07\xA2\x02\x02\u176D\u177D\x07\u02EE\x02\x02\u176E\u177D\x07\u0346" +
		"\x02\x02\u176F\u177D\x07\u02F1\x02\x02\u1770\u177D\x07\u02F3\x02\x02\u1771" +
		"\u177D\x07\u0348\x02\x02\u1772\u177D\x07\u02F4\x02\x02\u1773\u177D\x07" +
		"\u02F5\x02\x02\u1774\u1775\x07i\x02\x02\u1775\u1776\x07F\x02\x02\u1776" +
		"\u177D\x07\u02EA\x02\x02\u1777\u1778\x07\x9C\x02\x02\u1778\u1779\x07Z" +
		"\x02\x02\u1779\u177D\x07\u02EA\x02\x02\u177A\u177B\x07\u02DB\x02\x02\u177B" +
		"\u177D\x07\u02DC\x02\x02\u177C\u171F\x03\x02\x02\x02\u177C\u1723\x03\x02" +
		"\x02\x02\u177C\u1727\x03\x02\x02\x02\u177C\u1731\x03\x02\x02\x02\u177C" +
		"\u1732\x03\x02\x02\x02\u177C\u1736\x03\x02\x02\x02\u177C\u1737\x03\x02" +
		"\x02\x02\u177C\u1738\x03\x02\x02\x02\u177C\u1739\x03\x02\x02\x02\u177C" +
		"\u173B\x03\x02\x02\x02\u177C\u173C\x03\x02\x02\x02\u177C\u173D\x03\x02" +
		"\x02\x02\u177C\u173F\x03\x02\x02\x02\u177C\u1740\x03\x02\x02\x02\u177C" +
		"\u1741\x03\x02\x02\x02\u177C\u1742\x03\x02\x02\x02\u177C\u1743\x03\x02" +
		"\x02\x02\u177C\u1745\x03\x02\x02\x02\u177C\u1746\x03\x02\x02\x02\u177C" +
		"\u1748\x03\x02\x02\x02\u177C\u1749\x03\x02\x02\x02\u177C\u174A\x03\x02" +
		"\x02\x02\u177C\u174B\x03\x02\x02\x02\u177C\u174C\x03\x02\x02\x02\u177C" +
		"\u174D\x03\x02\x02\x02\u177C\u174E\x03\x02\x02\x02\u177C\u174F\x03\x02" +
		"\x02\x02\u177C\u1750\x03\x02\x02\x02\u177C\u1751\x03\x02\x02\x02\u177C" +
		"\u1752\x03\x02\x02\x02\u177C\u1753\x03\x02\x02\x02\u177C\u1754\x03\x02" +
		"\x02\x02\u177C\u1755\x03\x02\x02\x02\u177C\u1756\x03\x02\x02\x02\u177C" +
		"\u1757\x03\x02\x02\x02\u177C\u1758\x03\x02\x02\x02\u177C\u1759\x03\x02" +
		"\x02\x02\u177C\u175A\x03\x02\x02\x02\u177C\u175B\x03\x02\x02\x02\u177C" +
		"\u175C\x03\x02\x02\x02\u177C\u175D\x03\x02\x02\x02\u177C\u175E\x03\x02" +
		"\x02\x02\u177C\u175F\x03\x02\x02\x02\u177C\u1760\x03\x02\x02\x02\u177C" +
		"\u1761\x03\x02\x02\x02\u177C\u1762\x03\x02\x02\x02\u177C\u1763\x03\x02" +
		"\x02\x02\u177C\u1764\x03\x02\x02\x02\u177C\u1765\x03\x02\x02\x02\u177C" +
		"\u1766\x03\x02\x02\x02\u177C\u1767\x03\x02\x02\x02\u177C\u1768\x03\x02" +
		"\x02\x02\u177C\u1769\x03\x02\x02\x02\u177C\u176A\x03\x02\x02\x02\u177C" +
		"\u176B\x03\x02\x02\x02\u177C\u176C\x03\x02\x02\x02\u177C\u176D\x03\x02" +
		"\x02\x02\u177C\u176E\x03\x02\x02\x02\u177C\u176F\x03\x02\x02\x02\u177C" +
		"\u1770\x03\x02\x02\x02\u177C\u1771\x03\x02\x02\x02\u177C\u1772\x03\x02" +
		"\x02\x02\u177C\u1773\x03\x02\x02\x02\u177C\u1774\x03\x02\x02\x02\u177C" +
		"\u1777\x03\x02\x02\x02\u177C\u177A\x03\x02\x02\x02\u177D\u020D\x03\x02" +
		"\x02\x02\u177E\u178F\x07\u0354\x02\x02\u177F\u1780\x07\u0354\x02\x02\u1780" +
		"\u1781\x07\u0363\x02\x02\u1781\u178F\x07\u0354\x02\x02\u1782\u1783\x05" +
		"\u02C6\u0164\x02\u1783\u1784\x07\u0363\x02\x02\u1784\u1785\x07\u0354\x02" +
		"\x02\u1785\u178F\x03\x02\x02\x02\u1786\u1787\x05\u02C6\u0164\x02\u1787" +
		"\u1788\x07\u0363\x02\x02\u1788\u1789\x05\u02C6\u0164\x02\u1789\u178F\x03" +
		"\x02\x02\x02\u178A\u178B\x05\u02C6\u0164\x02\u178B\u178C\x05\u02CA\u0166" +
		"\x02\u178C\u178F\x03\x02\x02\x02\u178D\u178F\x05\u02C6\u0164\x02\u178E" +
		"\u177E\x03\x02\x02\x02\u178E\u177F\x03\x02\x02\x02\u178E\u1782\x03\x02" +
		"\x02\x02\u178E\u1786\x03\x02\x02\x02\u178E\u178A\x03\x02\x02\x02\u178E" +
		"\u178D\x03\x02\x02\x02\u178F\u020F\x03\x02\x02\x02\u1790\u1791\x05\u02B0" +
		"\u0159\x02\u1791\u1792\x07\xB2\x02\x02\u1792\u1793\x05\u02B0\u0159\x02" +
		"\u1793\u0211\x03\x02\x02\x02\u1794\u1796\x07\f\x02\x02\u1795\u1797\x05" +
		"\u021C\u010F\x02\u1796\u1795\x03\x02\x02\x02\u1796\u1797\x03\x02\x02\x02" +
		"\u1797\u1798\x03\x02\x02\x02\u1798\u1799\x07\xAF\x02\x02\u1799\u17C5\x05" +
		"\u028E\u0148\x02\u179A\u179C\x07\f\x02\x02\u179B\u179D\x05\u021C\u010F" +
		"\x02\u179C\u179B\x03\x02\x02\x02\u179C\u179D\x03\x02\x02\x02\u179D\u179E" +
		"\x03\x02\x02\x02\u179E\u179F\x07\xAF\x02\x02\u179F\u17A0\x05\u0290\u0149" +
		"\x02\u17A0\u17A1\x07\xBB\x02\x02\u17A1\u17A2\x07O\x02\x02\u17A2\u17A3" +
		"\x07y\x02\x02\u17A3\u17A8\x05\u0298\u014D\x02\u17A4\u17A5\x07\xC4\x02" +
		"\x02\u17A5\u17A6\x05\u02CC\u0167\x02\u17A6\u17A7\x07\x15\x02\x02\u17A7" +
		"\u17A9\x03\x02\x02\x02\u17A8\u17A4\x03\x02\x02\x02\u17A8\u17A9\x03\x02" +
		"\x02\x02\u17A9\u17C5\x03\x02\x02\x02\u17AA\u17AC\x07\f\x02\x02\u17AB\u17AD" +
		"\x05\u021C\u010F\x02\u17AC\u17AB\x03\x02\x02\x02\u17AC\u17AD\x03\x02\x02" +
		"\x02\u17AD\u17AE\x03\x02\x02\x02\u17AE\u17AF\x07\xAF\x02\x02\u17AF\u17B0" +
		"\x05\u0290\u0149\x02\u17B0\u17B1\x07\xBB\x02\x02\u17B1\u17B2\x07O\x02" +
		"\x02\u17B2\u17B3\x07y\x02\x02\u17B3\u17B7\x05\u029A\u014E\x02\u17B4\u17B5" +
		"\x07\xBE\x02\x02\u17B5\u17B6\x07\u016A\x02\x02\u17B6\u17B8\x07\u0374\x02" +
		"\x02\u17B7\u17B4\x03\x02\x02\x02\u17B7\u17B8\x03\x02\x02\x02\u17B8\u17C5" +
		"\x03\x02\x02\x02\u17B9\u17BB\x07\f\x02\x02\u17BA\u17BC\x05\u021C\u010F" +
		"\x02\u17BB\u17BA\x03\x02\x02\x02\u17BB\u17BC\x03\x02\x02\x02\u17BC\u17BD" +
		"\x03\x02\x02\x02\u17BD\u17BE\x07\xAF\x02\x02\u17BE\u17BF\x05\u0290\u0149" +
		"\x02\u17BF\u17C0\x075\x02\x02\u17C0\u17C1\x07O\x02\x02\u17C1\u17C2\x07" +
		"y\x02\x02\u17C2\u17C3\x05\u0298\u014D\x02\u17C3\u17C5\x03\x02\x02\x02" +
		"\u17C4\u1794\x03\x02\x02\x02\u17C4\u179A\x03\x02\x02\x02\u17C4\u17AA\x03" +
		"\x02\x02\x02\u17C4\u17B9\x03\x02\x02\x02\u17C5\u0213\x03\x02\x02\x02\u17C6" +
		"\u17C7\x07\x1D\x02\x02\u17C7\u17C8\x07\xAF\x02\x02\u17C8\u17CC\x05\u028E" +
		"\u0148\x02\u17C9\u17CB\x05\u021E\u0110\x02\u17CA\u17C9\x03\x02\x02\x02" +
		"\u17CB\u17CE\x03\x02\x02\x02\u17CC\u17CA\x03\x02\x02\x02\u17CC\u17CD\x03" +
		"\x02\x02\x02\u17CD\u0215\x03\x02\x02\x02\u17CE\u17CC\x03\x02\x02\x02\u17CF" +
		"\u17D0\x07\u014B\x02\x02\u17D0\u17D1\x07\xAF\x02\x02\u17D1\u17D3\x05\u028E" +
		"\u0148\x02\u17D2\u17D4\t[\x02\x02\u17D3\u17D2\x03\x02\x02\x02\u17D3\u17D4" +
		"\x03\x02\x02\x02\u17D4\u0217\x03\x02\x02\x02\u17D5\u17D7\x07z\x02\x02" +
		"\u17D6\u17D8\x05\u021C\u010F\x02\u17D7\u17D6\x03\x02\x02\x02\u17D7\u17D8" +
		"\x03\x02\x02\x02\u17D8\u17D9\x03\x02\x02\x02\u17D9\u17DA\t>\x02\x02\u17DA" +
		"\u17DB\x05\u028E\u0148\x02\u17DB\u0219\x03\x02\x02\x02\u17DC\u17DE\x07" +
		"\u0234\x02\x02\u17DD\u17DF\x05\u021C\u010F\x02\u17DE\u17DD\x03\x02\x02" +
		"\x02\u17DE\u17DF\x03\x02\x02\x02\u17DF\u17E0\x03\x02\x02\x02\u17E0\u17E1" +
		"\x07\xAF\x02\x02\u17E1\u17E3\x05\u028E\u0148\x02\u17E2\u17E4\x07\u0227" +
		"\x02\x02\u17E3\u17E2\x03\x02\x02\x02\u17E3\u17E4\x03\x02\x02\x02\u17E4" +
		"\u17E6\x03\x02\x02\x02\u17E5\u17E7\x07\u018A\x02\x02\u17E6\u17E5\x03\x02" +
		"\x02\x02\u17E6\u17E7\x03\x02\x02\x02\u17E7\u17E9\x03\x02\x02\x02\u17E8" +
		"\u17EA\x07\u02A9\x02\x02\u17E9\u17E8\x03\x02\x02\x02\u17E9\u17EA\x03\x02" +
		"\x02\x02\u17EA\u021B\x03\x02\x02\x02\u17EB\u17EC\t\\\x02\x02\u17EC\u021D" +
		"\x03\x02\x02\x02\u17ED\u17EE\x07C\x02\x02\u17EE\u17F5\x07\u02A7\x02\x02" +
		"\u17EF\u17F5\x07\u0227\x02\x02\u17F0\u17F5\x07\u018E\x02\x02\u17F1\u17F5" +
		"\x07\u01E6\x02\x02\u17F2\u17F5\x07\u018A\x02\x02\u17F3\u17F5\x07\u0149" +
		"\x02\x02\u17F4\u17ED\x03\x02\x02\x02\u17F4\u17EF\x03\x02\x02\x02\u17F4" +
		"\u17F0\x03\x02\x02\x02\u17F4\u17F1\x03\x02\x02\x02\u17F4\u17F2\x03\x02" +
		"\x02\x02\u17F4\u17F3\x03\x02\x02\x02\u17F5\u021F\x03\x02\x02\x02\u17F6" +
		"\u17F8\x07$\x02\x02\u17F7\u17F9\x07\u0135\x02\x02\u17F8\u17F7\x03\x02" +
		"\x02\x02\u17F8\u17F9\x03\x02\x02\x02\u17F9\u17FA\x03\x02\x02\x02\u17FA" +
		"\u17FC\x07\u019B\x02\x02\u17FB\u17FD\x05\u02FC\u017F\x02\u17FC\u17FB\x03" +
		"\x02\x02\x02\u17FC\u17FD\x03\x02\x02\x02\u17FD\u17FE\x03\x02\x02\x02\u17FE" +
		"\u17FF\x05\u027A\u013E\x02\u17FF\u1800\x07\u0246\x02\x02\u1800\u1801\t" +
		"]\x02\x02\u1801\u1802\x07\u025D\x02\x02\u1802\u1803\x07\u0374\x02\x02" +
		"\u1803\u0221\x03\x02\x02\x02\u1804\u1805\x07\u01B2\x02\x02\u1805\u1806" +
		"\x07\u015A\x02\x02\u1806\u180B\x05\u02C6\u0164\x02\u1807\u1808\x07\u0366" +
		"\x02\x02\u1808\u180A\x05\u02C6\u0164\x02\u1809\u1807\x03\x02\x02\x02\u180A" +
		"\u180D\x03\x02\x02\x02\u180B\u1809\x03\x02\x02\x02\u180B\u180C\x03\x02" +
		"\x02\x02\u180C\u1817\x03\x02\x02\x02\u180D\u180B\x03\x02\x02\x02\u180E" +
		"\u180F\x07\x9D\x02\x02\u180F\u1814\x05\u0224\u0113\x02\u1810\u1811\x07" +
		"\u0366\x02\x02\u1811\u1813\x05\u0224\u0113\x02\u1812\u1810\x03\x02\x02" +
		"\x02\u1813\u1816\x03\x02\x02\x02\u1814\u1812\x03\x02\x02\x02\u1814\u1815" +
		"\x03\x02\x02\x02\u1815\u1818\x03\x02\x02\x02\u1816\u1814\x03\x02\x02\x02" +
		"\u1817\u180E\x03\x02\x02\x02\u1817\u1818\x03\x02\x02\x02\u1818\u0223\x03" +
		"\x02\x02\x02\u1819\u181A\t^\x02\x02\u181A\u181B\x05\u02C2\u0162\x02\u181B" +
		"\u181C\x07\u035B\x02\x02\u181C\u181D\x05\u0328\u0195\x02\u181D\u0225\x03" +
		"\x02\x02\x02\u181E\u181F\x07\u02A3\x02\x02\u181F\u1820\x07\u015A\x02\x02" +
		"\u1820\u1825\x05\u02C6\u0164\x02\u1821\u1822\x07\u0366\x02\x02\u1822\u1824" +
		"\x05\u02C6\u0164\x02\u1823\u1821\x03\x02\x02\x02\u1824\u1827\x03\x02\x02" +
		"\x02\u1825\u1823\x03\x02\x02\x02\u1825\u1826\x03\x02\x02\x02\u1826\u0227" +
		"\x03\x02\x02\x02\u1827\u1825\x03\x02\x02\x02\u1828\u1829\x07\u01B2\x02" +
		"\x02\u1829\u182A\x07\u0218\x02\x02\u182A\u182B\x05\u02C6\u0164\x02\u182B" +
		"\u182C\x07\u025D\x02\x02\u182C\u182D\x07\u0374\x02\x02\u182D\u0229\x03" +
		"\x02\x02\x02\u182E\u182F\x07\u02A3\x02\x02\u182F\u1830\x07\u0218\x02\x02" +
		"\u1830\u1831\x05\u02C6\u0164\x02\u1831\u022B\x03\x02\x02\x02\u1832\u1833" +
		"\x07\u02CB\x02\x02\u1833\u1834\x07\u01C4\x02\x02\u1834\u1835\x07\u016A" +
		"\x02\x02\u1835\u1837\x07\u0171\x02\x02\u1836\u1838\x07\u035B\x02\x02\u1837" +
		"\u1836\x03\x02\x02\x02\u1837\u1838\x03\x02\x02\x02\u1838\u1839\x03\x02" +
		"\x02\x02\u1839\u1851\x07\u0374\x02\x02\u183A\u183B\x07\u02CB\x02\x02\u183B" +
		"\u183C\x07\u01B3\x02\x02\u183C\u183D\x07F\x02\x02\u183D\u183E\x05\u02A8" +
		"\u0155\x02\u183E\u183F\x07\u01A9\x02\x02\u183F\u1840\x07\x16\x02\x02\u1840" +
		"\u1847\x07\u0374\x02\x02\u1841\u1842\x07\u016A\x02\x02\u1842\u1844\x07" +
		"\u0171\x02\x02\u1843\u1845\x07\u035B\x02\x02\u1844\u1843\x03\x02\x02\x02" +
		"\u1844\u1845\x03\x02\x02\x02\u1845\u1846\x03\x02\x02\x02\u1846\u1848\x07" +
		"\u0374\x02\x02\u1847\u1841\x03\x02\x02\x02\u1847\u1848\x03\x02\x02\x02" +
		"\u1848\u184E\x03\x02\x02\x02\u1849\u184B\x07\x92\x02\x02\u184A\u184C\x07" +
		"\u01F8\x02\x02\u184B\u184A\x03\x02\x02\x02\u184B\u184C\x03\x02\x02\x02" +
		"\u184C\u184D\x03\x02\x02\x02\u184D\u184F\x07\xAB\x02\x02\u184E\u1849\x03" +
		"\x02\x02\x02\u184E\u184F\x03\x02\x02\x02\u184F\u1851\x03\x02\x02\x02\u1850" +
		"\u1832\x03\x02\x02\x02\u1850\u183A\x03\x02\x02\x02\u1851\u022D\x03\x02" +
		"\x02\x02\u1852\u1853\x07\x9D\x02\x02\u1853\u1854\x05\u0232\u011A\x02\u1854" +
		"\u1857\t_\x02\x02\u1855\u1858\x05\u0328\u0195\x02\u1856\u1858\x07y\x02" +
		"\x02\u1857\u1855\x03\x02\x02\x02\u1857\u1856\x03\x02\x02\x02\u1858\u1862" +
		"\x03\x02\x02\x02\u1859\u185A\x07\u0366\x02\x02\u185A\u185B\x05\u0232\u011A" +
		"\x02\u185B\u185E\t_\x02\x02\u185C\u185F\x05\u0328\u0195\x02\u185D\u185F" +
		"\x07y\x02\x02\u185E\u185C\x03\x02\x02\x02\u185E\u185D\x03\x02\x02\x02" +
		"\u185F\u1861\x03\x02\x02\x02\u1860\u1859\x03\x02\x02\x02\u1861\u1864\x03" +
		"\x02\x02\x02\u1862\u1860\x03\x02\x02\x02\u1862\u1863\x03\x02\x02\x02\u1863" +
		"\u1887\x03\x02\x02\x02\u1864\u1862\x03\x02\x02\x02\u1865\u1866\x07\x9D" +
		"\x02\x02\u1866\u1869\x058\x1D\x02\u1867\u186A\x05\u02B4\u015B\x02\u1868" +
		"\u186A\x07,\x02\x02\u1869\u1867\x03\x02\x02\x02\u1869\u1868\x03\x02\x02" +
		"\x02\u186A\u1887\x03\x02\x02\x02\u186B\u186C\x07\x9D\x02\x02\u186C\u1873" +
		"\x07\u01F3\x02\x02\u186D\u1870\x05\u02B4\u015B\x02\u186E\u186F\x07\x1E" +
		"\x02\x02\u186F\u1871\x05\u02B6\u015C\x02\u1870\u186E\x03\x02\x02\x02\u1870" +
		"\u1871\x03\x02\x02\x02\u1871\u1874\x03\x02\x02\x02\u1872\u1874\x07,\x02" +
		"\x02\u1873\u186D\x03\x02\x02\x02\u1873\u1872\x03\x02\x02\x02\u1874\u1887" +
		"\x03\x02\x02\x02\u1875\u1887\x05\u01EC\xF7\x02\u1876\u1887\x05\u0158\xAD" +
		"\x02\u1877\u1887\x05\u0156\xAC\x02\u1878\u1879\x07\x9D\x02\x02\u1879\u187A" +
		"\x05\u02C2\u0162\x02\u187A\u187B\t_\x02\x02\u187B\u1883\x05\u0328\u0195" +
		"\x02\u187C\u187D\x07\u0366\x02\x02\u187D\u187E\x05\u02C2\u0162\x02\u187E" +
		"\u187F\t_\x02\x02\u187F\u1880\x05\u0328\u0195\x02\u1880\u1882\x03\x02" +
		"\x02\x02\u1881\u187C\x03\x02\x02\x02\u1882\u1885\x03\x02\x02\x02\u1883" +
		"\u1881\x03\x02\x02\x02\u1883\u1884\x03\x02\x02\x02\u1884\u1887\x03\x02" +
		"\x02\x02\u1885\u1883\x03\x02\x02\x02\u1886\u1852\x03\x02\x02\x02\u1886" +
		"\u1865\x03\x02\x02\x02\u1886\u186B\x03\x02\x02\x02\u1886\u1875\x03\x02" +
		"\x02\x02\u1886\u1876\x03\x02\x02\x02\u1886\u1877\x03\x02\x02\x02\u1886" +
		"\u1878\x03\x02\x02\x02\u1887\u022F\x03\x02\x02\x02\u1888\u1889\x07\x9F" +
		"\x02\x02\u1889\u188A\t@\x02\x02\u188A\u1941\x07\u01C6\x02\x02\u188B\u188C" +
		"\x07\x9F\x02\x02\u188C\u188D\t`\x02\x02\u188D\u1890\x07\u0184\x02\x02" +
		"\u188E\u188F\x07R\x02\x02\u188F\u1891\x07\u0374\x02\x02\u1890\u188E\x03" +
		"\x02\x02\x02\u1890\u1891\x03\x02\x02\x02\u1891\u1894\x03\x02\x02\x02\u1892" +
		"\u1893\x07F\x02\x02\u1893\u1895\x05\u02CC\u0167\x02\u1894\u1892\x03\x02" +
		"\x02\x02\u1894\u1895\x03\x02\x02\x02\u1895\u189D\x03\x02\x02\x02\u1896" +
		"\u189A\x07f\x02\x02\u1897\u1898\x05\u02CC\u0167\x02\u1898\u1899\x07\u0366" +
		"\x02\x02\u1899\u189B\x03\x02\x02\x02\u189A\u1897\x03\x02\x02\x02\u189A" +
		"\u189B\x03\x02\x02\x02\u189B\u189C\x03\x02\x02\x02\u189C\u189E\x05\u02CC" +
		"\u0167\x02\u189D\u1896\x03\x02\x02\x02\u189D\u189E\x03\x02\x02\x02\u189E" +
		"\u18A0\x03\x02\x02\x02\u189F\u18A1\x05\u0188\xC5\x02\u18A0\u189F\x03\x02" +
		"\x02\x02\u18A0\u18A1\x03\x02\x02\x02\u18A1\u1941\x03\x02\x02\x02\u18A2" +
		"\u18A3\x07\x9F\x02\x02\u18A3\u18A5\x05\u0234\u011B\x02\u18A4\u18A6\x05" +
		"\u0236\u011C\x02\u18A5\u18A4\x03\x02\x02\x02\u18A5\u18A6\x03\x02\x02\x02" +
		"\u18A6\u1941\x03\x02\x02\x02\u18A7\u18A9\x07\x9F\x02\x02\u18A8\u18AA\x07" +
		"\u018A\x02\x02\u18A9\u18A8\x03\x02\x02\x02\u18A9\u18AA\x03\x02\x02\x02" +
		"\u18AA\u18AC\x03\x02\x02\x02\u18AB\u18AD\x07\u019A\x02\x02\u18AC\u18AB" +
		"\x03\x02\x02\x02\u18AC\u18AD\x03\x02\x02\x02\u18AD\u18AE\x03\x02\x02\x02" +
		"\u18AE\u18AF\t0\x02\x02\u18AF\u18B0\ta\x02\x02\u18B0\u18B3\x05\u0290\u0149" +
		"\x02\u18B1\u18B2\ta\x02\x02\u18B2\u18B4\x05\u0278\u013D\x02\u18B3\u18B1" +
		"\x03\x02\x02\x02\u18B3\u18B4\x03\x02\x02\x02\u18B4\u18B6\x03\x02\x02\x02" +
		"\u18B5\u18B7\x05\u0236\u011C\x02\u18B6\u18B5\x03\x02\x02\x02\u18B6\u18B7" +
		"\x03\x02\x02\x02\u18B7\u1941\x03\x02\x02\x02\u18B8\u18B9\x07\x9F\x02\x02" +
		"\u18B9\u18BA\x07$\x02\x02\u18BA\u18BC\t\x02\x02\x02\u18BB\u18BD\x05\u02FC" +
		"\u017F\x02\u18BC\u18BB\x03\x02\x02\x02\u18BC\u18BD\x03\x02\x02\x02\u18BD" +
		"\u18BE\x03\x02\x02\x02\u18BE\u1941\x05\u0276\u013C\x02\u18BF\u18C0\x07" +
		"\x9F\x02\x02\u18C0\u18C1\x07$\x02\x02\u18C1\u18C2\tb\x02\x02\u18C2\u1941" +
		"\x05\u02C2\u0162\x02\u18C3\u18C4\x07\x9F\x02\x02\u18C4\u18C5\x07$\x02" +
		"\x02\u18C5\u18C6\x07\u019B\x02\x02\u18C6\u1941\x05\u027A\u013E\x02\u18C7" +
		"\u18C8\x07\x9F\x02\x02\u18C8\u18C9\x07$\x02\x02\u18C9\u18CA\x07\u02AE" +
		"\x02\x02\u18CA\u1941\x05\u027E\u0140\x02\u18CB\u18CC\x07\x9F\x02\x02\u18CC" +
		"\u18CD\x07$\x02\x02\u18CD\u18CE\x07\xAF\x02\x02\u18CE\u1941\x05\u028C" +
		"\u0147\x02\u18CF\u18D0\x07\x9F\x02\x02\u18D0\u18D1\x07$\x02\x02\u18D1" +
		"\u18D2\x07\u02A8\x02\x02\u18D2\u1941\x05\u02B0\u0159\x02\u18D3\u18D4\x07" +
		"\x9F\x02\x02\u18D4\u18D5\x07\u017E\x02\x02\u18D5\u18D6\x05\u02B8\u015D" +
		"\x02\u18D6\u18D7\tc\x02\x02\u18D7\u1941\x03\x02\x02\x02\u18D8\u18D9\x07" +
		"\x9F\x02\x02\u18D9\u1941\x05\u0238\u011D\x02\u18DA\u18DB\x07\x9F\x02\x02" +
		"\u18DB\u18E3\td\x02\x02\u18DC\u18E0\x07f\x02\x02\u18DD\u18DE\x05\u02CC" +
		"\u0167\x02\u18DE\u18DF\x07\u0366\x02\x02\u18DF\u18E1\x03\x02\x02\x02\u18E0" +
		"\u18DD\x03\x02\x02\x02\u18E0\u18E1\x03\x02\x02\x02\u18E1\u18E2\x03\x02" +
		"\x02\x02\u18E2\u18E4\x05\u02CC\u0167\x02\u18E3\u18DC\x03\x02\x02\x02\u18E3" +
		"\u18E4\x03\x02\x02\x02\u18E4\u1941\x03\x02\x02\x02\u18E5\u18E6\x07\x9F" +
		"\x02\x02\u18E6\u18E7\x07\u0108\x02\x02\u18E7\u18E8\x07\u0364\x02\x02\u18E8" +
		"\u18E9\x07\u0354\x02\x02\u18E9\u18EA\x07\u0365\x02\x02\u18EA\u1941\td" +
		"\x02\x02\u18EB\u18EC\x07\x9F\x02\x02\u18EC\u18EF\x05\u023A\u011E\x02\u18ED" +
		"\u18EE\ta\x02\x02\u18EE\u18F0\x05\u0278\u013D\x02\u18EF\u18ED\x03\x02" +
		"\x02\x02\u18EF\u18F0\x03\x02\x02\x02\u18F0\u18F2\x03\x02\x02\x02\u18F1" +
		"\u18F3\x05\u0236\u011C\x02\u18F2\u18F1\x03\x02\x02\x02\u18F2\u18F3\x03" +
		"\x02\x02\x02\u18F3\u1941\x03\x02\x02\x02\u18F4\u18F5\x07\x9F\x02\x02\u18F5" +
		"\u18F6\x07\x86\x02\x02\u18F6\u18F7\x07\u0152\x02\x02\u18F7\u1941\x05\u02C2" +
		"\u0162\x02\u18F8\u18F9\x07\x9F\x02\x02\u18F9\u18FA\x07\u019B\x02\x02\u18FA" +
		"\u18FB\x07\u0152\x02\x02\u18FB\u1941\x05\u027C\u013F\x02\u18FC\u18FD\x07" +
		"\x9F\x02\x02\u18FD\u1904\x07\u01A0\x02\x02\u18FE\u18FF\x07C\x02\x02\u18FF" +
		"\u1902\x05\u0294\u014B\x02\u1900\u1901\x07\xBE\x02\x02\u1901\u1903\x05" +
		"\u0292\u014A\x02\u1902\u1900\x03\x02\x02\x02\u1902\u1903\x03\x02\x02\x02" +
		"\u1903\u1905\x03\x02\x02\x02\u1904\u18FE\x03\x02\x02\x02\u1904\u1905\x03" +
		"\x02\x02\x02\u1905\u1941\x03\x02\x02\x02\u1906\u1908\x07\x9F\x02\x02\u1907" +
		"\u1909\x07\u018A\x02\x02\u1908\u1907\x03\x02\x02\x02\u1908\u1909\x03\x02" +
		"\x02\x02\u1909\u190A\x03\x02\x02\x02\u190A\u190B\te\x02\x02\u190B\u190C" +
		"\ta\x02\x02\u190C\u190F\x05\u0290\u0149\x02\u190D\u190E\ta\x02\x02\u190E" +
		"\u1910\x05\u0278\u013D\x02\u190F\u190D\x03\x02\x02\x02\u190F\u1910\x03" +
		"\x02\x02\x02\u1910\u1913\x03\x02\x02\x02\u1911\u1912\x07\xC2\x02\x02\u1912" +
		"\u1914\x05\u0328\u0195\x02\u1913\u1911\x03\x02\x02\x02\u1913\u1914\x03" +
		"\x02\x02\x02\u1914\u1941\x03\x02\x02\x02\u1915\u1916\x07\x9F\x02\x02\u1916" +
		"\u1917\x07\u0206\x02\x02\u1917\u191A\x07\u02F2\x02\x02\u1918\u1919\ta" +
		"\x02\x02\u1919\u191B\x05\u0278\u013D\x02\u191A\u1918\x03\x02\x02\x02\u191A" +
		"\u191B\x03\x02\x02\x02\u191B\u191D\x03\x02\x02\x02\u191C\u191E\x05\u0236" +
		"\u011C\x02\u191D\u191C\x03\x02\x02\x02\u191D\u191E\x03\x02\x02\x02\u191E" +
		"\u1941\x03\x02\x02\x02\u191F\u1920\x07\x9F\x02\x02\u1920\u1929\x07\u0223" +
		"\x02\x02\u1921\u1926\x05\u023C\u011F\x02\u1922\u1923\x07\u0366\x02\x02" +
		"\u1923\u1925\x05\u023C\u011F\x02\u1924\u1922\x03\x02\x02\x02\u1925\u1928" +
		"\x03\x02\x02\x02\u1926\u1924\x03\x02\x02\x02\u1926\u1927\x03\x02\x02\x02" +
		"\u1927\u192A\x03\x02\x02\x02\u1928\u1926\x03\x02\x02\x02\u1929\u1921\x03" +
		"\x02\x02\x02\u1929\u192A\x03\x02\x02\x02\u192A\u192E\x03\x02\x02\x02\u192B" +
		"\u192C\x07C\x02\x02\u192C\u192D\x07\u0226\x02\x02\u192D\u192F\x05\u02CC" +
		"\u0167\x02\u192E\u192B\x03\x02\x02\x02\u192E\u192F\x03\x02\x02\x02\u192F" +
		"\u1936\x03\x02\x02\x02\u1930\u1931\x07f\x02\x02\u1931\u1934\x05\u02CC" +
		"\u0167\x02\u1932\u1933\x07\u01FF\x02\x02\u1933\u1935\x05\u02CC\u0167\x02" +
		"\u1934\u1932\x03\x02\x02\x02\u1934\u1935\x03\x02\x02\x02\u1935\u1937\x03" +
		"\x02\x02\x02\u1936\u1930\x03\x02\x02\x02\u1936\u1937\x03\x02\x02\x02\u1937" +
		"\u1941\x03\x02\x02\x02\u1938\u1939\x07\x9F\x02\x02\u1939\u193A\tA\x02" +
		"\x02\u193A\u193C\x07\u0287\x02\x02\u193B\u193D\x05\u0188\xC5\x02\u193C" +
		"\u193B\x03\x02\x02\x02\u193C\u193D\x03\x02\x02\x02\u193D\u1941\x03\x02" +
		"\x02\x02\u193E\u193F\x07\x9F\x02\x02\u193F\u1941\x07\u0236\x02\x02\u1940" +
		"\u1888\x03\x02\x02\x02\u1940\u188B\x03\x02\x02\x02\u1940\u18A2\x03\x02" +
		"\x02\x02\u1940\u18A7\x03\x02\x02\x02\u1940\u18B8\x03\x02\x02\x02\u1940" +
		"\u18BF\x03\x02\x02\x02\u1940\u18C3\x03\x02\x02\x02\u1940\u18C7\x03\x02" +
		"\x02\x02\u1940\u18CB\x03\x02\x02\x02\u1940\u18CF\x03\x02\x02\x02\u1940" +
		"\u18D3\x03\x02\x02\x02\u1940\u18D8\x03\x02\x02\x02\u1940\u18DA\x03\x02" +
		"\x02\x02\u1940\u18E5\x03\x02\x02\x02\u1940\u18EB\x03\x02\x02\x02\u1940" +
		"\u18F4\x03\x02\x02\x02\u1940\u18F8\x03\x02\x02\x02\u1940\u18FC\x03\x02" +
		"\x02\x02\u1940\u1906\x03\x02\x02\x02\u1940\u1915\x03\x02\x02\x02\u1940" +
		"\u191F\x03\x02\x02\x02\u1940\u1938\x03\x02\x02\x02\u1940\u193E\x03\x02" +
		"\x02\x02\u1941\u0231\x03\x02\x02\x02\u1942\u194D\x07\u037E\x02\x02\u1943" +
		"\u194D\x07\u037F\x02\x02\u1944\u1945\x07\u0368\x02\x02\u1945\u1947\x07" +
		"\u0368\x02\x02\u1946\u1944\x03\x02\x02\x02\u1946\u1947\x03\x02\x02\x02" +
		"\u1947\u1948\x03\x02\x02\x02\u1948\u194A\tf\x02\x02\u1949\u1946\x03\x02" +
		"\x02\x02\u1949\u194A\x03\x02\x02\x02\u194A\u194B\x03\x02\x02\x02\u194B" +
		"\u194D\x05\u02C6\u0164\x02\u194C\u1942\x03\x02\x02\x02\u194C\u1943\x03" +
		"\x02\x02\x02\u194C\u1949\x03\x02\x02\x02\u194D\u0233\x03\x02\x02\x02\u194E" +
		"\u194F\x07\x1C\x02\x02\u194F\u195D\x07\x9D\x02\x02\u1950\u195D\x07\u0339" +
		"\x02\x02\u1951\u195D\x07\u033A\x02\x02\u1952\u195D\x07*\x02\x02\u1953" +
		"\u195D\x07\x9B\x02\x02\u1954\u1955\x07\u019B\x02\x02\u1955\u195D\x07\u0287" +
		"\x02\x02\u1956\u1957\x07\x86\x02\x02\u1957\u195D\x07\u0287\x02\x02\u1958" +
		"\u195A\t?\x02\x02\u1959\u1958\x03\x02\x02\x02\u1959\u195A\x03\x02\x02" +
		"\x02\u195A\u195B\x03\x02\x02\x02\u195B\u195D\tg\x02\x02\u195C\u194E\x03" +
		"\x02\x02\x02\u195C\u1950\x03\x02\x02\x02\u195C\u1951\x03\x02\x02\x02\u195C" +
		"\u1952\x03\x02\x02\x02\u195C\u1953\x03\x02\x02\x02\u195C\u1954\x03\x02" +
		"\x02\x02\u195C\u1956\x03\x02\x02\x02\u195C\u1959\x03\x02\x02\x02\u195D" +
		"\u0235\x03\x02\x02\x02\u195E\u195F\x07e\x02\x02\u195F\u1963\x07\u0374" +
		"\x02\x02\u1960\u1961\x07\xC2\x02\x02\u1961\u1963\x05\u0328\u0195\x02\u1962" +
		"\u195E\x03\x02\x02\x02\u1962\u1960\x03\x02\x02\x02\u1963\u0237\x03\x02" +
		"\x02\x02\u1964\u1966\x07\u0289\x02\x02\u1965\u1964\x03\x02\x02\x02\u1965" +
		"\u1966\x03\x02\x02\x02\u1966\u1967\x03\x02\x02\x02\u1967\u1976\x07\u017F" +
		"\x02\x02\u1968\u1969\x07\u01C7\x02\x02\u1969\u1976\x07\u0287\x02\x02\u196A" +
		"\u1976\x07\u021A\x02\x02\u196B\u1976\x07\u02E0\x02\x02\u196C\u196E\x07" +
		"\u019A\x02\x02\u196D\u196C\x03\x02\x02\x02\u196D\u196E\x03\x02\x02\x02" +
		"\u196E\u196F\x03\x02\x02\x02\u196F\u1976\x07\u0222\x02\x02\u1970\u1976" +
		"\x07\u0224\x02\x02\u1971\u1972\x07\u0258\x02\x02\u1972\u1976\x07\u01A8" +
		"\x02\x02\u1973\u1976\x07\u013A\x02\x02\u1974\u1976\x07\u0166\x02\x02\u1975" +
		"\u1965\x03\x02\x02\x02\u1975\u1968\x03\x02\x02\x02\u1975\u196A\x03\x02" +
		"\x02\x02\u1975\u196B\x03\x02\x02\x02\u1975\u196D\x03\x02\x02\x02\u1975" +
		"\u1970\x03\x02\x02\x02\u1975\u1971\x03\x02\x02\x02\u1975\u1973\x03\x02" +
		"\x02\x02\u1975\u1974\x03\x02\x02\x02\u1976\u0239\x03\x02\x02\x02\u1977" +
		"\u1983\x07\u0184\x02\x02\u1978\u1979\x07\xAF\x02\x02\u1979\u1983\x07\u0287" +
		"\x02\x02\u197A\u197C\x07\u018A\x02\x02\u197B\u197A\x03\x02\x02\x02\u197B" +
		"\u197C\x03\x02\x02\x02\u197C\u197E\x03\x02\x02\x02\u197D\u197F\x07\u019A" +
		"\x02\x02\u197E\u197D\x03\x02\x02\x02\u197E\u197F\x03\x02\x02\x02\u197F" +
		"\u1980\x03\x02\x02\x02\u1980\u1983\x07\u02F2\x02\x02\u1981\u1983\x07\u029D" +
		"\x02\x02\u1982\u1977\x03\x02\x02\x02\u1982\u1978\x03\x02\x02\x02\u1982" +
		"\u197B\x03\x02\x02\x02\u1982\u1981\x03\x02\x02\x02\u1983\u023B\x03\x02" +
		"\x02\x02\u1984\u1991\x07\t\x02\x02\u1985\u1986\x07\u0142\x02\x02\u1986" +
		"\u1991";
	private static readonly _serializedATNSegment13: string =
		"\x07\u01B7\x02\x02\u1987\u1988\x07\u0165\x02\x02\u1988\u1991\x07\u0292" +
		"\x02\x02\u1989\u1991\x07\u0168\x02\x02\u198A\u1991\x07\u01B9\x02\x02\u198B" +
		"\u1991\x07\u0324\x02\x02\u198C\u198D\x07\u020B\x02\x02\u198D\u1991\x07" +
		"\u018F\x02\x02\u198E\u1991\x07\u025F\x02\x02\u198F\u1991\x07\u0291\x02" +
		"\x02\u1990\u1984\x03\x02\x02\x02\u1990\u1985\x03\x02\x02\x02\u1990\u1987" +
		"\x03\x02\x02\x02\u1990\u1989\x03\x02\x02\x02\u1990\u198A\x03\x02\x02\x02" +
		"\u1990\u198B\x03\x02\x02\x02\u1990\u198C\x03\x02\x02\x02\u1990\u198E\x03" +
		"\x02\x02\x02\u1990\u198F\x03\x02\x02\x02\u1991\u023D\x03\x02\x02\x02\u1992" +
		"\u1993\x07\u0140\x02\x02\u1993\u1994\x07\u0374\x02\x02\u1994\u023F\x03" +
		"\x02\x02\x02\u1995\u1996\x07\u0146\x02\x02\u1996\u19A8\x07T\x02\x02\u1997" +
		"\u199C\x05\u0254\u012B\x02\u1998\u1999\x07\u0366\x02\x02\u1999\u199B\x05" +
		"\u0254\u012B\x02\u199A\u1998\x03\x02\x02\x02\u199B\u199E\x03\x02\x02\x02" +
		"\u199C\u199A\x03\x02\x02\x02\u199C\u199D\x03\x02\x02\x02\u199D\u19A9\x03" +
		"\x02\x02\x02\u199E\u199C\x03\x02\x02\x02\u199F\u19A0\x05\u0290\u0149\x02" +
		"\u19A0\u19A1\x07\x84\x02\x02\u19A1\u19A4\x07\u0364\x02\x02\u19A2\u19A5" +
		"\x05\u02A2\u0152\x02\u19A3\u19A5\x07\t\x02\x02\u19A4\u19A2\x03\x02\x02" +
		"\x02\u19A4\u19A3\x03\x02\x02\x02\u19A5\u19A6\x03\x02\x02\x02\u19A6\u19A7" +
		"\x07\u0365\x02\x02\u19A7\u19A9\x03\x02\x02\x02\u19A8\u1997\x03\x02\x02" +
		"\x02\u19A8\u199F\x03\x02\x02\x02\u19A9\u19AA\x03\x02\x02\x02\u19AA\u19AB" +
		"\x07R\x02\x02\u19AB\u19AC\x05\u0278\u013D\x02\u19AC\u0241\x03\x02\x02" +
		"\x02\u19AD\u19AF\x07\u0196\x02\x02\u19AE\u19B0\x05\u021C\u010F\x02\u19AF" +
		"\u19AE\x03\x02\x02\x02\u19AF\u19B0\x03\x02\x02\x02\u19B0\u19B1\x03\x02" +
		"\x02\x02\u19B1\u19B6\x05\u0256\u012C\x02\u19B2\u19B3\x07\u0366\x02\x02" +
		"\u19B3\u19B5\x05\u0256\u012C\x02\u19B4\u19B2\x03\x02\x02\x02\u19B5\u19B8" +
		"\x03\x02\x02\x02\u19B6\u19B4\x03\x02\x02\x02\u19B6\u19B7\x03\x02\x02\x02" +
		"\u19B7\u0243\x03\x02\x02\x02\u19B8\u19B6\x03\x02\x02\x02\u19B9\u19BB\x07" +
		"`\x02\x02\u19BA\u19BC\th\x02\x02\u19BB\u19BA\x03\x02\x02\x02\u19BB\u19BC" +
		"\x03\x02\x02\x02\u19BC\u19BD\x03\x02\x02\x02\u19BD\u19BE\x05\u0328\u0195" +
		"\x02\u19BE\u0245\x03\x02\x02\x02\u19BF\u19C0\x07i\x02\x02\u19C0\u19C1" +
		"\x07T\x02\x02\u19C1\u19C2\x07Z\x02\x02\u19C2\u19C3\x07\u0146\x02\x02\u19C3" +
		"\u19C8\x05\u025A\u012E\x02\u19C4\u19C5\x07\u0366\x02\x02\u19C5\u19C7\x05" +
		"\u025A\u012E\x02\u19C6\u19C4\x03\x02\x02\x02\u19C7\u19CA\x03\x02\x02\x02" +
		"\u19C8\u19C6\x03\x02\x02\x02\u19C8\u19C9\x03\x02\x02\x02\u19C9\u0247\x03" +
		"\x02\x02\x02\u19CA\u19C8\x03\x02\x02\x02\u19CB\u19CC\x07\u0241\x02\x02" +
		"\u19CC\u19D1\x05\u024A\u0126\x02\u19CD\u19CE\x07\u0366\x02\x02\u19CE\u19D0" +
		"\x05\u024A\u0126\x02\u19CF\u19CD\x03\x02\x02\x02\u19D0\u19D3\x03\x02\x02" +
		"\x02\u19D1\u19CF\x03\x02\x02\x02\u19D1\u19D2\x03\x02\x02\x02\u19D2\u0249" +
		"\x03\x02\x02\x02\u19D3\u19D1\x03\x02\x02\x02\u19D4\u19DA\x07\u01C7\x02" +
		"\x02\u19D5\u19DA\x07\u0235\x02\x02\u19D6\u19D7\x07\u0226\x02\x02\u19D7" +
		"\u19DA\x07\u0146\x02\x02\u19D8\u19DA\x07\u0258\x02\x02\u19D9\u19D4\x03" +
		"\x02\x02\x02\u19D9\u19D5\x03\x02\x02\x02\u19D9\u19D6\x03\x02\x02\x02\u19D9" +
		"\u19D8\x03\x02\x02\x02\u19DA\u024B\x03\x02\x02\x02\u19DB\u19DC\x07\u0241" +
		"\x02\x02\u19DC\u19E1\x07\u0215\x02\x02\u19DD\u19DF\x05\u02FA\u017E\x02" +
		"\u19DE\u19DD\x03\x02\x02\x02\u19DE\u19DF\x03\x02\x02\x02\u19DF\u19E0\x03" +
		"\x02\x02\x02\u19E0\u19E2\x05\u02C6\u0164\x02\u19E1\u19DE\x03\x02\x02\x02" +
		"\u19E1\u19E2\x03\x02\x02\x02\u19E2\u024D\x03\x02\x02\x02\u19E3\u19E4\x07" +
		"\u0241\x02\x02\u19E4\u19E6\tA\x02\x02\u19E5\u19E7\x07\t\x02\x02\u19E6" +
		"\u19E5\x03\x02\x02\x02\u19E6\u19E7\x03\x02\x02\x02\u19E7\u19E9\x03\x02" +
		"\x02\x02\u19E8\u19EA\x05\u0188\xC5\x02\u19E9\u19E8\x03\x02\x02\x02\u19E9" +
		"\u19EA\x03\x02\x02\x02\u19EA\u024F\x03\x02\x02\x02\u19EB\u19EC\x07\u0242" +
		"\x02\x02\u19EC\u0251\x03\x02\x02\x02\u19ED\u19EE\x07\u02EF\x02\x02\u19EE" +
		"\u0253\x03\x02\x02\x02\u19EF\u19F5\x05\u0290\u0149\x02\u19F0\u19F1\t\x14" +
		"\x02\x02\u19F1\u19F2\x07\u0364\x02\x02\u19F2\u19F3\x05\u0284\u0143\x02" +
		"\u19F3\u19F4\x07\u0365\x02\x02\u19F4\u19F6\x03\x02\x02\x02\u19F5\u19F0" +
		"\x03\x02\x02\x02\u19F5\u19F6\x03\x02\x02\x02\u19F6\u0255\x03\x02\x02\x02" +
		"\u19F7\u1A0A\x07\u0170\x02\x02\u19F8\u1A0A\x07\u01A8\x02\x02\u19F9\u19FB" +
		"\ti\x02\x02\u19FA\u19F9\x03\x02\x02\x02\u19FA\u19FB\x03\x02\x02\x02\u19FB" +
		"\u19FC\x03\x02\x02\x02\u19FC\u1A0A\x07\u01C6\x02\x02\u19FD\u1A0A\x07\u0207" +
		"\x02\x02\u19FE\u1A0A\x07\u02E0\x02\x02\u19FF\u1A00\x07\u0226\x02\x02\u1A00" +
		"\u1A0A\x07\u0146\x02\x02\u1A01\u1A0A\x07\u0287\x02\x02\u1A02\u1A0A\x07" +
		"\u02AA\x02\x02\u1A03\u1A07\x07\u02F2\x02\x02\u1A04\u1A05\x07\xC4\x02\x02" +
		"\u1A05\u1A06\x07\x89\x02\x02\u1A06\u1A08\x07j\x02\x02\u1A07\u1A04\x03" +
		"\x02\x02\x02\u1A07\u1A08\x03\x02\x02\x02\u1A08\u1A0A\x03\x02\x02\x02\u1A09" +
		"\u19F7\x03\x02\x02\x02\u1A09\u19F8\x03\x02\x02\x02\u1A09\u19FA\x03\x02" +
		"\x02\x02\u1A09\u19FD\x03\x02\x02\x02\u1A09\u19FE\x03\x02\x02\x02\u1A09" +
		"\u19FF\x03\x02\x02\x02\u1A09\u1A01\x03\x02\x02\x02\u1A09\u1A02\x03\x02" +
		"\x02\x02\u1A09\u1A03\x03\x02\x02\x02\u1A0A\u1A18\x03\x02\x02\x02\u1A0B" +
		"\u1A0C\x07\u022E\x02\x02\u1A0C\u1A0E\x07\u01C6\x02\x02\u1A0D\u1A0F\x05" +
		"\u0188\xC5\x02\u1A0E\u1A0D\x03\x02\x02\x02\u1A0E\u1A0F\x03\x02\x02\x02" +
		"\u1A0F\u1A18\x03\x02\x02\x02\u1A10\u1A12\t>\x02\x02\u1A11\u1A13\x05\u028E" +
		"\u0148\x02\u1A12\u1A11\x03\x02\x02\x02\u1A12\u1A13\x03\x02\x02\x02\u1A13" +
		"\u1A15\x03\x02\x02\x02\u1A14\u1A16\x05\u0258\u012D\x02\u1A15\u1A14\x03" +
		"\x02\x02\x02\u1A15\u1A16\x03\x02\x02\x02\u1A16\u1A18\x03\x02\x02\x02\u1A17" +
		"\u1A09\x03\x02\x02\x02\u1A17\u1A0B\x03\x02\x02\x02\u1A17\u1A10\x03\x02" +
		"\x02\x02\u1A18\u0257\x03\x02\x02\x02\u1A19\u1A1A\x07\xC4\x02\x02\u1A1A" +
		"\u1A1B\x07\x89\x02\x02\u1A1B\u1A1F\x07j\x02\x02\u1A1C\u1A1D\x07C\x02\x02" +
		"\u1A1D\u1A1F\x07\u0189\x02\x02\u1A1E\u1A19\x03\x02\x02\x02\u1A1E\u1A1C" +
		"\x03\x02\x02\x02\u1A1F\u0259\x03\x02\x02\x02\u1A20\u1A28\x05\u0290\u0149" +
		"\x02\u1A21\u1A22\x07\x84\x02\x02\u1A22\u1A25\x07\u0364\x02\x02\u1A23\u1A26" +
		"\x05\u02A2\u0152\x02\u1A24\u1A26\x07\t\x02\x02\u1A25\u1A23\x03\x02\x02" +
		"\x02\u1A25\u1A24\x03\x02\x02\x02\u1A26\u1A27\x03\x02\x02\x02\u1A27\u1A29" +
		"\x07\u0365\x02\x02\u1A28\u1A21\x03\x02\x02\x02\u1A28\u1A29\x03\x02\x02" +
		"\x02\u1A29\u1A31\x03\x02\x02\x02\u1A2A\u1A2C\t\x14\x02\x02\u1A2B\u1A2A" +
		"\x03\x02\x02\x02\u1A2B\u1A2C\x03\x02\x02\x02\u1A2C\u1A2D\x03\x02\x02\x02" +
		"\u1A2D\u1A2E\x07\u0364\x02\x02\u1A2E\u1A2F\x05\u0284\u0143\x02\u1A2F\u1A30" +
		"\x07\u0365\x02\x02\u1A30\u1A32\x03\x02\x02\x02\u1A31\u1A2B\x03\x02\x02" +
		"\x02\u1A31\u1A32\x03\x02\x02\x02\u1A32\u1A35\x03\x02\x02\x02\u1A33\u1A34" +
		"\x07Q\x02\x02\u1A34\u1A36\x07\u01C0\x02\x02\u1A35\u1A33\x03\x02\x02\x02" +
		"\u1A35\u1A36\x03\x02\x02\x02\u1A36\u025B\x03\x02\x02\x02\u1A37\u1A38\t" +
		"j\x02\x02\u1A38\u1A3B\x05\u0290\u0149\x02\u1A39\u1A3C\x05\u029A\u014E" +
		"\x02\u1A3A\u1A3C\x07\u0374\x02\x02\u1A3B\u1A39\x03\x02\x02\x02\u1A3B\u1A3A" +
		"\x03\x02\x02\x02\u1A3B\u1A3C\x03\x02\x02\x02\u1A3C\u025D\x03\x02\x02\x02" +
		"\u1A3D\u1A43\tj\x02\x02\u1A3E\u1A44\x07\u018A\x02\x02\u1A3F\u1A44\x07" +
		"\u0212\x02\x02\u1A40\u1A41\x07\u033C\x02\x02\u1A41\u1A42\x07\u035B\x02" +
		"\x02\u1A42\u1A44\tk\x02\x02\u1A43\u1A3E\x03\x02\x02\x02\u1A43\u1A3F\x03" +
		"\x02\x02\x02\u1A43\u1A40\x03\x02\x02\x02\u1A43\u1A44\x03\x02\x02\x02\u1A44" +
		"\u1A45\x03\x02\x02\x02\u1A45\u1A46\x05\u0274\u013B\x02\u1A46\u025F\x03" +
		"\x02\x02\x02\u1A47\u1A48\tj\x02\x02\u1A48\u1A4C\x07\f\x02\x02\u1A49\u1A4A" +
		"\x07\u033C\x02\x02\u1A4A\u1A4B\x07\u035B\x02\x02\u1A4B\u1A4D\x07\u029C" +
		"\x02\x02\u1A4C\u1A49\x03\x02\x02\x02\u1A4C\u1A4D\x03\x02\x02\x02\u1A4D" +
		"\u1A4E\x03\x02\x02\x02\u1A4E\u1A4F\x05\xCEh\x02\u1A4F\u0261\x03\x02\x02" +
		"\x02\u1A50\u1A51\x07\u01A5\x02\x02\u1A51\u1A52\x07\u0374\x02\x02\u1A52" +
		"\u0263\x03\x02\x02\x02\u1A53\u1A54\x07\xBD\x02\x02\u1A54\u1A55\x05\u0278" +
		"\u013D\x02\u1A55\u0265\x03\x02\x02\x02\u1A56\u1A5E\x07\xA0\x02\x02\u1A57" +
		"\u1A59\x07\xA6\x02\x02\u1A58\u1A5A\x07\u02AC\x02\x02\u1A59\u1A58\x03\x02" +
		"\x02\x02\u1A59\u1A5A\x03\x02\x02\x02\u1A5A\u1A5B\x03\x02\x02\x02\u1A5B" +
		"\u1A5F\x05\u02D0\u0169\x02\u1A5C\u1A5F\x07\u037B\x02\x02\u1A5D\u1A5F\x07" +
		"\u037C\x02\x02\u1A5E\u1A57\x03\x02\x02\x02\u1A5E\u1A5C\x03\x02\x02\x02" +
		"\u1A5E\u1A5D\x03\x02\x02\x02\u1A5F\u1A69\x03\x02\x02\x02\u1A60\u1A61\x07" +
		"\x9D\x02\x02\u1A61\u1A66\x05\u026A\u0136\x02\u1A62\u1A63\x07\u0366\x02" +
		"\x02\u1A63\u1A65\x05\u026A\u0136\x02\u1A64\u1A62\x03\x02\x02\x02\u1A65" +
		"\u1A68\x03\x02\x02\x02\u1A66\u1A64\x03\x02\x02\x02\u1A66\u1A67\x03\x02" +
		"\x02\x02\u1A67\u1A6A\x03\x02\x02\x02\u1A68\u1A66\x03\x02\x02\x02\u1A69" +
		"\u1A60\x03\x02\x02\x02\u1A69\u1A6A\x03\x02\x02\x02\u1A6A\u0267\x03\x02" +
		"\x02\x02\u1A6B\u1A73\x07\x93\x02\x02\u1A6C\u1A6E\x07\xA6\x02\x02\u1A6D" +
		"\u1A6F\x07\u02AC\x02\x02\u1A6E\u1A6D\x03\x02\x02\x02\u1A6E\u1A6F\x03\x02" +
		"\x02\x02\u1A6F\u1A70\x03\x02\x02\x02\u1A70\u1A74\x05\u02D0\u0169\x02\u1A71" +
		"\u1A74\x07\u037B\x02\x02\u1A72\u1A74\x07\u037C\x02\x02\u1A73\u1A6C\x03" +
		"\x02\x02\x02\u1A73\u1A71\x03\x02\x02\x02\u1A73\u1A72\x03\x02\x02\x02\u1A73" +
		"\u1A74\x03\x02\x02\x02\u1A74\u1A7E\x03\x02\x02\x02\u1A75\u1A76\x07\x9D" +
		"\x02\x02\u1A76\u1A7B\x05\u026A\u0136\x02\u1A77\u1A78\x07\u0366\x02\x02" +
		"\u1A78\u1A7A\x05\u026A\u0136\x02\u1A79\u1A77\x03\x02\x02\x02\u1A7A\u1A7D" +
		"\x03\x02\x02\x02\u1A7B\u1A79\x03\x02\x02\x02\u1A7B\u1A7C\x03\x02\x02\x02" +
		"\u1A7C\u1A7F\x03\x02\x02\x02\u1A7D\u1A7B\x03\x02\x02\x02\u1A7E\u1A75\x03" +
		"\x02\x02\x02\u1A7E\u1A7F\x03\x02\x02\x02\u1A7F\u0269\x03\x02\x02\x02\u1A80" +
		"\u1A81\tl\x02\x02\u1A81\u1A86\x07\u035B\x02\x02\u1A82\u1A87\x05\u02D0" +
		"\u0169\x02\u1A83\u1A87\x07\u0375\x02\x02\u1A84\u1A87\x05\u02B2\u015A\x02" +
		"\u1A85\u1A87\x05\u02C8\u0165\x02\u1A86\u1A82\x03\x02\x02\x02\u1A86\u1A83" +
		"\x03\x02\x02\x02\u1A86\u1A84\x03\x02\x02\x02\u1A86\u1A85\x03\x02\x02\x02" +
		"\u1A87\u026B\x03\x02\x02\x02\u1A88\u1A8A\x07\xC4\x02\x02\u1A89\u1A8B\x07" +
		"\u022A\x02\x02\u1A8A\u1A89\x03\x02\x02\x02\u1A8A\u1A8B\x03\x02\x02\x02" +
		"\u1A8B\u1A8C\x03\x02\x02\x02\u1A8C\u1A91\x052\x1A\x02\u1A8D\u1A8E\x07" +
		"\u0366\x02\x02\u1A8E\u1A90\x052\x1A\x02\u1A8F\u1A8D\x03\x02\x02\x02\u1A90" +
		"\u1A93\x03\x02\x02\x02\u1A91\u1A8F\x03\x02\x02\x02\u1A91\u1A92\x03\x02" +
		"\x02\x02\u1A92\u026D\x03\x02\x02\x02\u1A93\u1A91\x03\x02\x02\x02\u1A94" +
		"\u1A95\x07\xAF\x02\x02\u1A95\u1A97\x05\u0290\u0149\x02\u1A96\u1A98\x05" +
		"\xFE\x80\x02\u1A97\u1A96\x03\x02\x02\x02\u1A97\u1A98\x03\x02\x02\x02\u1A98" +
		"\u1A9A\x03\x02\x02\x02\u1A99\u1A9B\x05\u0140\xA1\x02\u1A9A\u1A99\x03\x02" +
		"\x02\x02\u1A9A\u1A9B\x03\x02\x02\x02\u1A9B\u026F\x03\x02\x02\x02\u1A9C" +
		"\u1A9E\x07J\x02\x02\u1A9D\u1A9F\tm\x02\x02\u1A9E\u1A9D\x03\x02\x02\x02" +
		"\u1A9E\u1A9F\x03\x02\x02\x02\u1A9F\u1AA0\x03\x02\x02\x02\u1AA0\u1AC0\x07" +
		"2\x02\x02\u1AA1\u1AA2\x05\u0232\u011A\x02\u1AA2\u1AA3\x07\u035B\x02\x02" +
		"\u1AA3\u1AAB\tn\x02\x02\u1AA4\u1AA5\x07\u0366\x02\x02\u1AA5\u1AA6\x05" +
		"\u0232\u011A\x02\u1AA6\u1AA7\x07\u035B\x02\x02\u1AA7\u1AA8\tn\x02\x02" +
		"\u1AA8\u1AAA\x03\x02\x02\x02\u1AA9\u1AA4\x03\x02\x02\x02\u1AAA\u1AAD\x03" +
		"\x02\x02\x02\u1AAB\u1AA9\x03\x02\x02\x02\u1AAB\u1AAC\x03\x02\x02\x02\u1AAC" +
		"\u1AC1\x03\x02\x02\x02\u1AAD\u1AAB\x03\x02\x02\x02\u1AAE\u1AB1\x07 \x02" +
		"\x02\u1AAF\u1AB2\x05\u02CC\u0167\x02\u1AB0\u1AB2\x05\u0232\u011A\x02\u1AB1" +
		"\u1AAF\x03\x02\x02\x02\u1AB1\u1AB0\x03\x02\x02\x02\u1AB2\u1AB3\x03\x02" +
		"\x02\x02\u1AB3\u1AB4\x05\u0232\u011A\x02\u1AB4\u1AB5\x07\u035B\x02\x02" +
		"\u1AB5\u1ABD\x05\u0272\u013A\x02\u1AB6\u1AB7\x07\u0366\x02\x02\u1AB7\u1AB8" +
		"\x05\u0232\u011A\x02\u1AB8\u1AB9\x07\u035B\x02\x02\u1AB9\u1ABA\x05\u0272" +
		"\u013A\x02\u1ABA\u1ABC\x03\x02\x02\x02\u1ABB\u1AB6\x03\x02\x02\x02\u1ABC" +
		"\u1ABF\x03\x02\x02\x02\u1ABD\u1ABB\x03\x02\x02\x02\u1ABD\u1ABE\x03\x02" +
		"\x02\x02\u1ABE\u1AC1\x03\x02\x02\x02\u1ABF\u1ABD\x03\x02\x02\x02\u1AC0" +
		"\u1AA1\x03\x02\x02\x02\u1AC0\u1AAE\x03\x02\x02\x02\u1AC1\u0271\x03\x02" +
		"\x02\x02\u1AC2\u1AC3\to\x02\x02\u1AC3\u0273\x03\x02\x02\x02\u1AC4\u1ACA" +
		"\x05\xCEh\x02\u1AC5\u1ACA\x05\xB6\\\x02\u1AC6\u1ACA\x05\xBC_\x02\u1AC7" +
		"\u1ACA\x05\xCCg\x02\u1AC8\u1ACA\x05\xD8m\x02\u1AC9\u1AC4\x03\x02\x02\x02" +
		"\u1AC9\u1AC5\x03\x02\x02\x02\u1AC9\u1AC6\x03\x02\x02\x02\u1AC9\u1AC7\x03" +
		"\x02\x02\x02\u1AC9\u1AC8\x03\x02\x02\x02\u1ACA\u1ACF\x03\x02\x02\x02\u1ACB" +
		"\u1ACC\x07C\x02\x02\u1ACC\u1ACD\x07\u015F\x02\x02\u1ACD\u1ACF\x05\u02C6" +
		"\u0164\x02\u1ACE\u1AC9\x03\x02\x02\x02\u1ACE\u1ACB\x03\x02\x02\x02\u1ACF" +
		"\u0275\x03\x02\x02\x02\u1AD0\u1AD1\x05\u02C2\u0162\x02\u1AD1\u0277\x03" +
		"\x02\x02\x02\u1AD2\u1AD3\x05\u02C2\u0162\x02\u1AD3\u0279\x03\x02\x02\x02" +
		"\u1AD4\u1AD5\x05\u02C2\u0162\x02\u1AD5\u027B\x03\x02\x02\x02\u1AD6\u1AD7" +
		"\x05\u02C2\u0162\x02\u1AD7\u027D\x03\x02\x02\x02\u1AD8\u1AD9\x05\u02C2" +
		"\u0162\x02\u1AD9\u027F\x03\x02\x02\x02\u1ADA\u1ADB\x05\u02C2\u0162\x02" +
		"\u1ADB\u0281\x03\x02\x02\x02\u1ADC\u1ADD\x05\u02C6\u0164\x02\u1ADD\u0283" +
		"\x03\x02\x02\x02\u1ADE\u1AE3\x05\u0286\u0144\x02\u1ADF\u1AE0\x07\u0366" +
		"\x02\x02\u1AE0\u1AE2\x05\u0286\u0144\x02\u1AE1\u1ADF\x03\x02\x02\x02\u1AE2" +
		"\u1AE5\x03\x02\x02\x02\u1AE3\u1AE1\x03\x02\x02\x02\u1AE3\u1AE4\x03\x02" +
		"\x02\x02\u1AE4\u0285\x03\x02\x02\x02\u1AE5\u1AE3\x03\x02\x02\x02\u1AE6" +
		"\u1AE7\x05\u02C6\u0164\x02\u1AE7\u0287\x03\x02\x02\x02\u1AE8\u1AE9\x05" +
		"\u02C6\u0164\x02\u1AE9\u0289\x03\x02\x02\x02\u1AEA\u1AEB\x05\u02C6\u0164" +
		"\x02\u1AEB\u028B\x03\x02\x02\x02\u1AEC\u1AED\x05\u02C2\u0162\x02\u1AED" +
		"\u028D\x03\x02\x02\x02\u1AEE\u1AF3\x05\u0290\u0149\x02\u1AEF\u1AF0\x07" +
		"\u0366\x02\x02\u1AF0\u1AF2\x05\u0290\u0149\x02\u1AF1\u1AEF\x03\x02\x02" +
		"\x02\u1AF2\u1AF5\x03\x02\x02\x02\u1AF3\u1AF1\x03\x02\x02\x02\u1AF3\u1AF4" +
		"\x03\x02\x02\x02\u1AF4\u028F\x03\x02\x02\x02\u1AF5\u1AF3\x03\x02\x02\x02" +
		"\u1AF6\u1AF7\x05\u02C2\u0162\x02\u1AF7\u0291\x03\x02\x02\x02\u1AF8\u1AFD" +
		"\x05\u0294\u014B\x02\u1AF9\u1AFA\x07\u0366\x02\x02\u1AFA\u1AFC\x05\u0294" +
		"\u014B\x02\u1AFB\u1AF9\x03\x02\x02\x02\u1AFC\u1AFF\x03\x02\x02\x02\u1AFD" +
		"\u1AFB\x03\x02\x02\x02\u1AFD\u1AFE\x03\x02\x02\x02\u1AFE\u0293\x03\x02" +
		"\x02\x02\u1AFF\u1AFD\x03\x02\x02\x02\u1B00\u1B03\x05\u02B0\u0159\x02\u1B01" +
		"\u1B03\x05\u02C6\u0164\x02\u1B02\u1B00\x03\x02\x02\x02\u1B02\u1B01\x03" +
		"\x02\x02\x02\u1B03\u0295\x03\x02\x02\x02\u1B04\u1B09\x05\u02C6\u0164\x02" +
		"\u1B05\u1B07\x05\u02CA\u0166\x02\u1B06\u1B08\x05\u02CA\u0166\x02\u1B07" +
		"\u1B06\x03\x02\x02\x02\u1B07\u1B08\x03\x02\x02\x02\u1B08\u1B0A\x03\x02" +
		"\x02\x02\u1B09\u1B05\x03\x02\x02\x02\u1B09\u1B0A\x03\x02\x02\x02\u1B0A" +
		"\u1B13\x03\x02\x02\x02\u1B0B\u1B0D\v\x02\x02\x02\u1B0C\u1B0B\x03\x02\x02" +
		"\x02\u1B0C\u1B0D\x03\x02\x02\x02\u1B0D\u1B0E\x03\x02\x02\x02\u1B0E\u1B10" +
		"\x05\u02CA\u0166\x02\u1B0F\u1B11\x05\u02CA\u0166\x02\u1B10\u1B0F\x03\x02" +
		"\x02\x02\u1B10\u1B11\x03\x02\x02\x02\u1B11\u1B13\x03\x02\x02\x02\u1B12" +
		"\u1B04\x03\x02\x02\x02\u1B12\u1B0C\x03\x02\x02\x02\u1B13\u0297\x03\x02" +
		"\x02\x02\u1B14\u1B19\x05\u029A\u014E\x02\u1B15\u1B16\x07\u0366\x02\x02" +
		"\u1B16\u1B18\x05\u029A\u014E\x02\u1B17\u1B15\x03\x02\x02\x02\u1B18\u1B1B" +
		"\x03\x02\x02\x02\u1B19\u1B17\x03\x02\x02\x02\u1B19\u1B1A\x03\x02\x02\x02" +
		"\u1B1A\u0299\x03\x02\x02\x02\u1B1B\u1B19\x03\x02\x02\x02\u1B1C\u1B21\x05" +
		"\u02C6\u0164\x02\u1B1D\u1B1F\x05\u02CA\u0166\x02\u1B1E\u1B20\x05\u02CA" +
		"\u0166\x02\u1B1F\u1B1E\x03\x02\x02\x02\u1B1F\u1B20\x03\x02\x02\x02\u1B20" +
		"\u1B22\x03\x02\x02\x02\u1B21\u1B1D\x03\x02\x02\x02\u1B21\u1B22\x03\x02" +
		"\x02\x02\u1B22\u1B2B\x03\x02\x02\x02\u1B23\u1B25\v\x02\x02\x02\u1B24\u1B23" +
		"\x03\x02\x02\x02\u1B24\u1B25\x03\x02\x02\x02\u1B25\u1B26\x03\x02\x02\x02" +
		"\u1B26\u1B28\x05\u02CA\u0166\x02\u1B27\u1B29\x05\u02CA\u0166\x02\u1B28" +
		"\u1B27\x03\x02\x02\x02\u1B28\u1B29\x03\x02\x02\x02\u1B29\u1B2B\x03\x02" +
		"\x02\x02\u1B2A\u1B1C\x03\x02\x02\x02\u1B2A\u1B24\x03\x02\x02\x02\u1B2B" +
		"\u029B\x03\x02\x02\x02\u1B2C\u1B2D\x05\u02C6\u0164\x02\u1B2D\u029D\x03" +
		"\x02\x02\x02\u1B2E\u1B2F\x05\u02C6\u0164\x02\u1B2F\u029F\x03\x02\x02\x02" +
		"\u1B30\u1B31\x05\u02C6\u0164\x02\u1B31\u02A1\x03\x02\x02\x02\u1B32\u1B37" +
		"\x05\u02A4\u0153\x02\u1B33\u1B34\x07\u0366\x02\x02\u1B34\u1B36\x05\u02A4" +
		"\u0153\x02\u1B35\u1B33\x03\x02\x02\x02\u1B36\u1B39\x03\x02\x02\x02\u1B37" +
		"\u1B35\x03\x02\x02\x02\u1B37\u1B38\x03\x02\x02\x02\u1B38\u02A3\x03\x02" +
		"\x02\x02\u1B39\u1B37\x03\x02\x02\x02\u1B3A\u1B3B\x05\u02C6\u0164\x02\u1B3B" +
		"\u02A5\x03\x02\x02\x02\u1B3C\u1B41\x05\u02C6\u0164\x02\u1B3D\u1B3E\x07" +
		"\u0364\x02\x02\u1B3E\u1B3F\x05\u02CC\u0167\x02\u1B3F\u1B40\x07\u0365\x02" +
		"\x02\u1B40\u1B42\x03\x02\x02\x02\u1B41\u1B3D\x03\x02\x02\x02\u1B41\u1B42" +
		"\x03\x02\x02\x02\u1B42\u1B45\x03\x02\x02\x02\u1B43\u1B45\x05\u0328\u0195" +
		"\x02\u1B44\u1B3C\x03\x02\x02\x02\u1B44\u1B43\x03\x02\x02\x02\u1B45\u1B47" +
		"\x03\x02\x02\x02\u1B46\u1B48\t8\x02\x02\u1B47\u1B46\x03\x02\x02\x02\u1B47" +
		"\u1B48\x03\x02\x02\x02\u1B48\u02A7\x03\x02\x02\x02\u1B49\u1B4A\x05\u02AA" +
		"\u0156\x02\u1B4A\u1B4B\x07\u0370\x02\x02\u1B4B\u1B4C\x05\u02CC\u0167\x02" +
		"\u1B4C\u02A9\x03\x02\x02\x02\u1B4D\u1B4E\x05\u02AC\u0157\x02\u1B4E\u1B4F" +
		"\x07\u037D\x02\x02\u1B4F\u02AB\x03\x02\x02\x02\u1B50\u1B55\x07\u0374\x02" +
		"\x02\u1B51\u1B55\x07\u037B\x02\x02\u1B52\u1B55\x07\u02C2\x02\x02\u1B53" +
		"\u1B55\x05\u0346\u01A4\x02\u1B54\u1B50\x03\x02\x02\x02\u1B54\u1B51\x03" +
		"\x02\x02\x02\u1B54\u1B52\x03\x02\x02\x02\u1B54\u1B53\x03\x02\x02\x02\u1B55" +
		"\u02AD\x03\x02\x02\x02\u1B56\u1B57\tp\x02\x02\u1B57\u02AF\x03\x02\x02" +
		"\x02\u1B58\u1B5A\x05\u02AC\u0157\x02\u1B59\u1B5B\x05\u02AE\u0158\x02\u1B5A" +
		"\u1B59\x03\x02\x02\x02\u1B5A\u1B5B\x03\x02\x02\x02\u1B5B\u1B5E\x03\x02" +
		"\x02\x02\u1B5C\u1B5E\x05:\x1E\x02\u1B5D\u1B58\x03\x02\x02\x02\u1B5D\u1B5C" +
		"\x03\x02\x02\x02\u1B5E\u02B1\x03\x02\x02\x02\u1B5F\u1B60\tq\x02\x02\u1B60" +
		"\u02B3\x03\x02\x02\x02\u1B61\u1B66\x07\xE6\x02\x02\u1B62\u1B66\x05\u033C" +
		"\u019F\x02\u1B63\u1B66\x07\u0374\x02\x02\u1B64\u1B66\x07\u0371\x02\x02" +
		"\u1B65\u1B61\x03\x02\x02\x02\u1B65\u1B62\x03\x02\x02\x02\u1B65\u1B63\x03" +
		"\x02\x02\x02\u1B65\u1B64\x03\x02\x02\x02\u1B66\u02B5\x03\x02\x02\x02\u1B67" +
		"\u1B68\x05\u02C6\u0164\x02\u1B68\u02B7\x03\x02\x02\x02\u1B69\u1B6D\x05" +
		"\u02BA\u015E\x02\u1B6A\u1B6D\x07\u037B\x02\x02\u1B6B\u1B6D\x07\u0374\x02" +
		"\x02\u1B6C\u1B69\x03\x02\x02\x02\u1B6C\u1B6A\x03\x02\x02\x02\u1B6C\u1B6B" +
		"\x03\x02\x02\x02\u1B6D\u02B9\x03\x02\x02\x02\u1B6E\u1B6F\tr\x02\x02\u1B6F" +
		"\u02BB\x03\x02\x02\x02\u1B70\u1B71\x05\u02CC\u0167\x02\u1B71\u1B72\x07" +
		"\u0358\x02\x02\u1B72\u1B73\x05\u02CC\u0167\x02\u1B73\u1B74\x07\u0358\x02" +
		"\x02\u1B74\u1B75\x05\u02CC\u0167\x02\u1B75\u1B76\x07\u0358\x02\x02\u1B76" +
		"\u1B77\x05\u02CC\u0167\x02\u1B77\u1B78\x07\u0358\x02\x02\u1B78\u1B7E\x05" +
		"\u02CC\u0167\x02\u1B79\u1B7A\x07\u0370\x02\x02\u1B7A\u1B7B\x05\u02CC\u0167" +
		"\x02\u1B7B\u1B7C\x07\u0358\x02\x02\u1B7C\u1B7D\x05\u02CC\u0167\x02\u1B7D" +
		"\u1B7F\x03\x02\x02\x02\u1B7E\u1B79\x03\x02\x02\x02\u1B7F\u1B80\x03\x02" +
		"\x02\x02\u1B80\u1B7E\x03\x02\x02\x02\u1B80\u1B81\x03\x02\x02\x02\u1B81" +
		"\u02BD\x03\x02\x02\x02\u1B82\u1B89\x05\u02C0\u0161\x02\u1B83\u1B84\x07" +
		"\u0366\x02\x02\u1B84\u1B87\x05\u02C0\u0161\x02\u1B85\u1B86\x07\u0366\x02" +
		"\x02\u1B86\u1B88\x05\u02CC\u0167\x02\u1B87\u1B85\x03\x02\x02\x02\u1B87" +
		"\u1B88\x03\x02\x02\x02\u1B88\u1B8A\x03\x02\x02\x02\u1B89\u1B83\x03\x02" +
		"\x02\x02\u1B89\u1B8A\x03\x02\x02\x02\u1B8A\u02BF\x03\x02\x02\x02\u1B8B" +
		"\u1B93\x07\u0374\x02\x02\u1B8C\u1B93\x07\u0379\x02\x02\u1B8D\u1B8F\x07" +
		"\u0376\x02\x02\u1B8E\u1B8D\x03\x02\x02\x02\u1B8F\u1B90\x03\x02\x02\x02" +
		"\u1B90\u1B8E\x03\x02\x02\x02\u1B90\u1B91\x03\x02\x02\x02\u1B91\u1B93\x03" +
		"\x02\x02\x02\u1B92\u1B8B\x03\x02\x02\x02\u1B92\u1B8C\x03\x02\x02\x02\u1B92" +
		"\u1B8E\x03\x02\x02\x02\u1B93\u02C1\x03\x02\x02\x02\u1B94\u1B96\x05\u02C6" +
		"\u0164\x02\u1B95\u1B97\x05\u02CA\u0166\x02\u1B96\u1B95\x03\x02\x02\x02" +
		"\u1B96\u1B97\x03\x02\x02\x02\u1B97\u02C3\x03\x02\x02\x02\u1B98\u1B9D\x05" +
		"\u02C6\u0164\x02\u1B99\u1B9A\x07\u0366\x02\x02\u1B9A\u1B9C\x05\u02C6\u0164" +
		"\x02\u1B9B\u1B99\x03\x02\x02\x02\u1B9C\u1B9F\x03\x02\x02\x02\u1B9D\u1B9B" +
		"\x03\x02\x02\x02\u1B9D\u1B9E\x03\x02\x02\x02\u1B9E\u02C5\x03\x02\x02\x02" +
		"\u1B9F\u1B9D\x03\x02\x02\x02\u1BA0\u1BA4\x05\u02C8\u0165\x02\u1BA1\u1BA4" +
		"\x07\u0371\x02\x02\u1BA2\u1BA4\x07\u0374\x02\x02\u1BA3\u1BA0\x03\x02\x02" +
		"\x02\u1BA3\u1BA1\x03\x02\x02\x02\u1BA3\u1BA2\x03\x02\x02\x02\u1BA4\u02C7" +
		"\x03\x02\x02\x02\u1BA5\u1BAF\x07\u037B\x02\x02\u1BA6\u1BAF\x05\u033C\u019F" +
		"\x02\u1BA7\u1BAF\x05\u033E\u01A0\x02\u1BA8\u1BAF\x05\u02BA\u015E\x02\u1BA9" +
		"\u1BAF\x05\u0340\u01A1\x02\u1BAA\u1BAF\x05\u0342\u01A2\x02\u1BAB\u1BAF" +
		"\x05\u0344\u01A3\x02\u1BAC\u1BAF\x05\u0346\u01A4\x02\u1BAD\u1BAF\x05\u0320" +
		"\u0191\x02\u1BAE\u1BA5\x03\x02\x02\x02\u1BAE\u1BA6\x03\x02\x02\x02\u1BAE" +
		"\u1BA7\x03\x02\x02\x02\u1BAE\u1BA8\x03\x02\x02\x02\u1BAE\u1BA9\x03\x02" +
		"\x02\x02\u1BAE\u1BAA\x03\x02\x02\x02\u1BAE\u1BAB\x03\x02\x02\x02\u1BAE" +
		"\u1BAC\x03\x02\x02\x02\u1BAE\u1BAD\x03\x02\x02\x02\u1BAF\u02C9\x03\x02" +
		"\x02\x02\u1BB0\u1BB1\x07\u0363\x02\x02\u1BB1\u1BB5\x07\u037B\x02\x02\u1BB2" +
		"\u1BB3\x07\u0363\x02\x02\u1BB3\u1BB5\x05\u02C6\u0164\x02\u1BB4\u1BB0\x03" +
		"\x02\x02\x02\u1BB4\u1BB2\x03\x02\x02\x02\u1BB5\u02CB\x03\x02\x02\x02\u1BB6" +
		"\u1BB7\ts\x02\x02\u1BB7\u02CD\x03\x02\x02\x02\u1BB8\u1BBB\x07\u0372\x02" +
		"\x02\u1BB9\u1BBB\x05\u02CC\u0167\x02\u1BBA\u1BB8\x03\x02\x02\x02\u1BBA" +
		"\u1BB9\x03\x02\x02\x02\u1BBB\u02CF\x03\x02\x02\x02\u1BBC\u1BBE\x07\u037A" +
		"\x02\x02\u1BBD\u1BBC\x03\x02\x02\x02\u1BBD\u1BBE\x03\x02\x02\x02\u1BBE" +
		"\u1BBF\x03\x02\x02\x02\u1BBF\u1BC2\x07\u0374\x02\x02\u1BC0\u1BC2\x07\u0373" +
		"\x02\x02\u1BC1\u1BBD\x03\x02\x02\x02\u1BC1\u1BC0\x03\x02\x02\x02\u1BC2" +
		"\u1BC4\x03\x02\x02\x02\u1BC3\u1BC5\x07\u0374\x02\x02\u1BC4\u1BC3\x03\x02" +
		"\x02\x02\u1BC5\u1BC6\x03\x02\x02\x02\u1BC6\u1BC4\x03\x02\x02\x02\u1BC6" +
		"\u1BC7\x03\x02\x02\x02\u1BC7\u1BD4\x03\x02\x02\x02\u1BC8\u1BCA\x07\u037A" +
		"\x02\x02\u1BC9\u1BC8\x03\x02\x02\x02\u1BC9\u1BCA\x03\x02\x02\x02\u1BCA" +
		"\u1BCB\x03\x02\x02\x02\u1BCB\u1BCE\x07\u0374\x02\x02\u1BCC\u1BCE\x07\u0373" +
		"\x02\x02\u1BCD\u1BC9\x03\x02\x02\x02\u1BCD\u1BCC\x03\x02\x02\x02\u1BCE" +
		"\u1BD1\x03\x02\x02\x02\u1BCF\u1BD0\x07\x1E\x02\x02\u1BD0\u1BD2\x05\u02B6" +
		"\u015C\x02\u1BD1\u1BCF\x03\x02\x02\x02\u1BD1\u1BD2\x03\x02\x02\x02\u1BD2" +
		"\u1BD4\x03\x02\x02\x02\u1BD3\u1BC1\x03\x02\x02\x02\u1BD3\u1BCD\x03\x02" +
		"\x02\x02\u1BD4\u02D1\x03\x02\x02\x02\u1BD5\u1BD6\tt\x02\x02\u1BD6\u02D3" +
		"\x03\x02\x02\x02\u1BD7\u1BD9\x07\u037A\x02\x02\u1BD8\u1BD7\x03\x02\x02" +
		"\x02\u1BD8\u1BD9\x03\x02\x02\x02\u1BD9\u1BDA\x03\x02\x02\x02\u1BDA\u1BDB" +
		"\x07\u0376\x02\x02\u1BDB\u02D5\x03\x02\x02\x02\u1BDC\u1BDE\x07t\x02\x02" +
		"\u1BDD\u1BDC\x03\x02\x02\x02\u1BDD\u1BDE\x03\x02\x02\x02\u1BDE\u1BDF\x03" +
		"\x02\x02\x02\u1BDF\u1BE0\tu\x02\x02\u1BE0\u02D7\x03\x02\x02\x02\u1BE1" +
		"\u1BEE\x05\u02D0\u0169\x02\u1BE2\u1BEE\x05\u02CC\u0167\x02\u1BE3\u1BE4" +
		"\x07\u0358\x02\x02\u1BE4\u1BEE\x05\u02CC\u0167\x02\u1BE5\u1BEE\x05\u02D4" +
		"\u016B\x02\u1BE6\u1BEE\x05\u02D2\u016A\x02\u1BE7\u1BEE\x07\u0377\x02\x02" +
		"\u1BE8\u1BEE\x07\u0379\x02\x02\u1BE9\u1BEB\x07t\x02\x02\u1BEA\u1BE9\x03" +
		"\x02\x02\x02\u1BEA\u1BEB\x03\x02\x02\x02\u1BEB\u1BEC\x03\x02\x02\x02\u1BEC" +
		"\u1BEE\tu\x02\x02\u1BED\u1BE1\x03\x02\x02\x02\u1BED\u1BE2\x03\x02\x02" +
		"\x02\u1BED\u1BE3\x03\x02\x02\x02\u1BED\u1BE5\x03\x02\x02\x02\u1BED\u1BE6" +
		"\x03\x02\x02\x02\u1BED\u1BE7\x03\x02\x02\x02\u1BED\u1BE8\x03\x02\x02\x02" +
		"\u1BED\u1BEA\x03\x02\x02\x02\u1BEE\u02D9\x03\x02\x02\x02\u1BEF\u1BF1\t" +
		"v\x02\x02\u1BF0\u1BF2\x07\xF2\x02\x02\u1BF1\u1BF0\x03\x02\x02\x02\u1BF1" +
		"\u1BF2\x03\x02\x02\x02\u1BF2\u1BF4\x03\x02\x02\x02\u1BF3\u1BF5\x05\u02E0" +
		"\u0171\x02\u1BF4\u1BF3\x03\x02\x02\x02\u1BF4\u1BF5\x03\x02\x02\x02\u1BF5" +
		"\u1BF7\x03\x02\x02\x02\u1BF6\u1BF8\x07\xE6\x02\x02\u1BF7\u1BF6\x03\x02" +
		"\x02\x02\u1BF7\u1BF8\x03\x02\x02\x02\u1BF8\u1BFC\x03\x02\x02\x02\u1BF9" +
		"\u1BFA\x058\x1D\x02\u1BFA\u1BFB\x05\u02B4\u015B\x02\u1BFB\u1BFD\x03\x02" +
		"\x02\x02\u1BFC\u1BF9\x03\x02\x02\x02\u1BFC\u1BFD\x03\x02\x02\x02\u1BFD" +
		"\u1C01\x03\x02\x02\x02\u1BFE\u1BFF\x07\x1E\x02\x02\u1BFF\u1C02\x05\u02B6" +
		"\u015C\x02\u1C00\u1C02\x07\xE6\x02\x02\u1C01\u1BFE\x03\x02\x02\x02\u1C01" +
		"\u1C00\x03\x02\x02\x02\u1C01\u1C02\x03\x02\x02\x02\u1C02\u1C6E\x03\x02" +
		"\x02\x02\u1C03\u1C04\x07\xE5\x02\x02\u1C04\u1C05\tw\x02\x02\u1C05\u1C07" +
		"\x07\xF2\x02\x02\u1C06\u1C08\x05\u02E0\u0171\x02\u1C07\u1C06\x03\x02\x02" +
		"\x02\u1C07\u1C08\x03\x02\x02\x02\u1C08\u1C0A\x03\x02\x02\x02\u1C09\u1C0B" +
		"\x07\xE6\x02\x02\u1C0A\u1C09\x03\x02\x02\x02\u1C0A\u1C0B\x03\x02\x02\x02" +
		"\u1C0B\u1C6E\x03\x02\x02\x02\u1C0C\u1C0D\x07\xE5\x02\x02\u1C0D\u1C0F\t" +
		"x\x02\x02\u1C0E\u1C10\x05\u02E0\u0171\x02\u1C0F\u1C0E\x03\x02\x02\x02" +
		"\u1C0F\u1C10\x03\x02\x02\x02\u1C10\u1C12\x03\x02\x02\x02\u1C11\u1C13\x07" +
		"\xE6\x02\x02\u1C12\u1C11\x03\x02\x02\x02\u1C12\u1C13\x03\x02\x02\x02\u1C13" +
		"\u1C6E\x03\x02\x02\x02\u1C14\u1C15\x07\u01F4\x02\x02\u1C15\u1C17\x07\xE3" +
		"\x02\x02\u1C16\u1C18\x05\u02E0\u0171\x02\u1C17\u1C16\x03\x02\x02\x02\u1C17" +
		"\u1C18\x03\x02\x02\x02\u1C18\u1C1A\x03\x02\x02\x02\u1C19\u1C1B\x07\xE6" +
		"\x02\x02\u1C1A\u1C19\x03\x02\x02\x02\u1C1A\u1C1B\x03\x02\x02\x02\u1C1B" +
		"\u1C6E\x03\x02\x02\x02\u1C1C\u1C1E\ty\x02\x02\u1C1D\u1C1F\x05\u02E0\u0171" +
		"\x02\u1C1E\u1C1D\x03\x02\x02\x02\u1C1E\u1C1F\x03\x02\x02\x02\u1C1F\u1C23" +
		"\x03\x02\x02\x02\u1C20\u1C22\tz\x02\x02\u1C21\u1C20\x03\x02\x02\x02\u1C22" +
		"\u1C25\x03\x02\x02\x02\u1C23\u1C21\x03\x02\x02\x02\u1C23\u1C24\x03\x02" +
		"\x02\x02\u1C24\u1C6E\x03\x02\x02\x02\u1C25\u1C23\x03\x02\x02\x02\u1C26" +
		"\u1C28\x07\xD4\x02\x02\u1C27\u1C29\x05\u02E2\u0172\x02\u1C28\u1C27\x03" +
		"\x02";
	private static readonly _serializedATNSegment14: string =
		"\x02\x02\u1C28\u1C29\x03\x02\x02\x02\u1C29\u1C2D\x03\x02\x02\x02\u1C2A" +
		"\u1C2C\tz\x02\x02\u1C2B\u1C2A\x03\x02\x02\x02\u1C2C\u1C2F\x03\x02\x02" +
		"\x02\u1C2D\u1C2B\x03\x02\x02\x02\u1C2D\u1C2E\x03\x02\x02\x02\u1C2E\u1C6E" +
		"\x03\x02\x02\x02\u1C2F\u1C2D\x03\x02\x02\x02\u1C30\u1C32\x07\xD5\x02\x02" +
		"\u1C31\u1C33\x07\xD6\x02\x02\u1C32\u1C31\x03\x02\x02\x02\u1C32\u1C33\x03" +
		"\x02\x02\x02\u1C33\u1C35\x03\x02\x02\x02\u1C34\u1C36\x05\u02E2\u0172\x02" +
		"\u1C35\u1C34\x03\x02\x02\x02\u1C35\u1C36\x03\x02\x02\x02\u1C36\u1C3A\x03" +
		"\x02\x02\x02\u1C37\u1C39\tz\x02\x02\u1C38\u1C37\x03\x02\x02\x02\u1C39" +
		"\u1C3C\x03\x02\x02\x02\u1C3A\u1C38\x03\x02\x02\x02\u1C3A\u1C3B\x03\x02" +
		"\x02\x02\u1C3B\u1C6E\x03\x02\x02\x02\u1C3C\u1C3A\x03\x02\x02\x02\u1C3D" +
		"\u1C3F\t{\x02\x02\u1C3E\u1C40\x05\u02E4\u0173\x02\u1C3F\u1C3E\x03\x02" +
		"\x02\x02\u1C3F\u1C40\x03\x02\x02\x02\u1C40\u1C44\x03\x02\x02\x02\u1C41" +
		"\u1C43\tz\x02\x02\u1C42\u1C41\x03\x02\x02\x02\u1C43\u1C46\x03\x02\x02" +
		"\x02\u1C44\u1C42\x03\x02\x02\x02\u1C44\u1C45\x03\x02\x02\x02\u1C45\u1C6E" +
		"\x03\x02\x02\x02\u1C46\u1C44\x03\x02\x02\x02\u1C47\u1C6E\t|\x02\x02\u1C48" +
		"\u1C4A\t}\x02\x02\u1C49\u1C4B\x05\u02E0\u0171\x02\u1C4A\u1C49\x03\x02" +
		"\x02\x02\u1C4A\u1C4B\x03\x02\x02\x02\u1C4B\u1C6E\x03\x02\x02\x02\u1C4C" +
		"\u1C4D\t~\x02\x02\u1C4D\u1C4F\x05\u02DC\u016F\x02\u1C4E\u1C50\x07\xE6" +
		"\x02\x02\u1C4F\u1C4E\x03\x02\x02\x02\u1C4F\u1C50\x03\x02\x02\x02\u1C50" +
		"\u1C54\x03\x02\x02\x02\u1C51\u1C52\x058\x1D\x02\u1C52\u1C53\x05\u02B4" +
		"\u015B\x02\u1C53\u1C55\x03\x02\x02\x02\u1C54\u1C51\x03\x02\x02\x02\u1C54" +
		"\u1C55\x03\x02\x02\x02\u1C55\u1C6E\x03\x02\x02\x02\u1C56\u1C59\t\x7F\x02" +
		"\x02\u1C57\u1C58\x07\u0344\x02\x02\u1C58\u1C5A\x05\u02CC\u0167\x02\u1C59" +
		"\u1C57\x03\x02\x02\x02\u1C59\u1C5A\x03\x02\x02\x02\u1C5A\u1C6E\x03\x02" +
		"\x02\x02\u1C5B\u1C5D\x07\xEB\x02\x02\u1C5C\u1C5E\x07\xE3\x02\x02\u1C5D" +
		"\u1C5C\x03\x02\x02\x02\u1C5D\u1C5E\x03\x02\x02\x02\u1C5E\u1C60\x03\x02" +
		"\x02\x02\u1C5F\u1C61\x07\xE6\x02\x02\u1C60\u1C5F\x03\x02\x02\x02\u1C60" +
		"\u1C61\x03\x02\x02\x02\u1C61\u1C65\x03\x02\x02\x02\u1C62\u1C63\x058\x1D" +
		"\x02\u1C63\u1C64\x05\u02B4\u015B\x02\u1C64\u1C66\x03\x02\x02\x02\u1C65" +
		"\u1C62\x03\x02\x02\x02\u1C65\u1C66\x03\x02\x02\x02\u1C66\u1C69\x03\x02" +
		"\x02\x02\u1C67\u1C68\x07\x1E\x02\x02\u1C68\u1C6A\x05\u02B6\u015C\x02\u1C69" +
		"\u1C67\x03\x02\x02\x02\u1C69\u1C6A\x03\x02\x02\x02\u1C6A\u1C6E\x03\x02" +
		"\x02\x02\u1C6B\u1C6C\x07\xEB\x02\x02\u1C6C\u1C6E\x07\xE7\x02\x02\u1C6D" +
		"\u1BEF\x03\x02\x02\x02\u1C6D\u1C03\x03\x02\x02\x02\u1C6D\u1C0C\x03\x02" +
		"\x02\x02\u1C6D\u1C14\x03\x02\x02\x02\u1C6D\u1C1C\x03\x02\x02\x02\u1C6D" +
		"\u1C26\x03\x02\x02\x02\u1C6D\u1C30\x03\x02\x02\x02\u1C6D\u1C3D\x03\x02" +
		"\x02\x02\u1C6D\u1C47\x03\x02\x02\x02\u1C6D\u1C48\x03\x02\x02\x02\u1C6D" +
		"\u1C4C\x03\x02\x02\x02\u1C6D\u1C56\x03\x02\x02\x02\u1C6D\u1C5B\x03\x02" +
		"\x02\x02\u1C6D\u1C6B\x03\x02\x02\x02\u1C6E\u02DB\x03\x02\x02\x02\u1C6F" +
		"\u1C70\x07\u0364\x02\x02\u1C70\u1C75\x07\u0374\x02\x02\u1C71\u1C72\x07" +
		"\u0366\x02\x02\u1C72\u1C74\x07\u0374\x02\x02\u1C73\u1C71\x03\x02\x02\x02" +
		"\u1C74\u1C77\x03\x02\x02\x02\u1C75\u1C73\x03\x02\x02\x02\u1C75\u1C76\x03" +
		"\x02\x02\x02\u1C76\u1C78\x03\x02\x02\x02\u1C77\u1C75\x03\x02\x02\x02\u1C78" +
		"\u1C79\x07\u0365\x02\x02\u1C79\u02DD\x03\x02\x02\x02\u1C7A\u1C7C\t\x80" +
		"\x02\x02\u1C7B\u1C7D\x05\u02E0\u0171\x02\u1C7C\u1C7B\x03\x02\x02\x02\u1C7C" +
		"\u1C7D\x03\x02\x02\x02\u1C7D\u1C91\x03\x02\x02\x02\u1C7E\u1C80\x07\xE2" +
		"\x02\x02\u1C7F\u1C81\x05\u02E0\u0171\x02\u1C80\u1C7F\x03\x02\x02\x02\u1C80" +
		"\u1C81\x03\x02\x02\x02\u1C81\u1C85\x03\x02\x02\x02\u1C82\u1C83\x058\x1D" +
		"\x02\u1C83\u1C84\x05\u02B4\u015B\x02\u1C84\u1C86\x03\x02\x02\x02\u1C85" +
		"\u1C82\x03\x02\x02\x02\u1C85\u1C86\x03\x02\x02\x02\u1C86\u1C91\x03\x02" +
		"\x02\x02\u1C87\u1C91\t\x81\x02\x02\u1C88\u1C8A\t\x82\x02\x02\u1C89\u1C8B" +
		"\x05\u02E4\u0173\x02\u1C8A\u1C89\x03\x02\x02\x02\u1C8A\u1C8B\x03\x02\x02" +
		"\x02\u1C8B\u1C91\x03\x02\x02\x02\u1C8C\u1C8E\t\x83\x02\x02\u1C8D\u1C8F" +
		"\t\x84\x02\x02\u1C8E\u1C8D\x03\x02\x02\x02\u1C8E\u1C8F\x03\x02\x02\x02" +
		"\u1C8F\u1C91\x03\x02\x02\x02\u1C90\u1C7A\x03\x02\x02\x02\u1C90\u1C7E\x03" +
		"\x02\x02\x02\u1C90\u1C87\x03\x02\x02\x02\u1C90\u1C88\x03\x02\x02\x02\u1C90" +
		"\u1C8C\x03\x02\x02\x02\u1C91\u1C93\x03\x02\x02\x02\u1C92\u1C94\x07\x0E" +
		"\x02\x02\u1C93\u1C92\x03\x02\x02\x02\u1C93\u1C94\x03\x02\x02\x02\u1C94" +
		"\u02DF\x03\x02\x02\x02\u1C95\u1C96\x07\u0364\x02\x02\u1C96\u1C97\x05\u02CC" +
		"\u0167\x02\u1C97\u1C98\x07\u0365\x02\x02\u1C98\u02E1\x03\x02\x02\x02\u1C99" +
		"\u1C9A\x07\u0364\x02\x02\u1C9A\u1C9B\x05\u02CC\u0167\x02\u1C9B\u1C9C\x07" +
		"\u0366\x02\x02\u1C9C\u1C9D\x05\u02CC\u0167\x02\u1C9D\u1C9E\x07\u0365\x02" +
		"\x02\u1C9E\u02E3\x03\x02\x02\x02\u1C9F\u1CA0\x07\u0364\x02\x02\u1CA0\u1CA3" +
		"\x05\u02CC\u0167\x02\u1CA1\u1CA2\x07\u0366\x02\x02\u1CA2\u1CA4\x05\u02CC" +
		"\u0167\x02\u1CA3\u1CA1\x03\x02\x02\x02\u1CA3\u1CA4\x03\x02\x02\x02\u1CA4" +
		"\u1CA5\x03\x02\x02\x02\u1CA5\u1CA6\x07\u0365\x02\x02\u1CA6\u02E5\x03\x02" +
		"\x02\x02\u1CA7\u1CA8\x07\u0364\x02\x02\u1CA8\u1CAD\x05\u02A6\u0154\x02" +
		"\u1CA9\u1CAA\x07\u0366\x02\x02\u1CAA\u1CAC\x05\u02A6\u0154\x02\u1CAB\u1CA9" +
		"\x03\x02\x02\x02\u1CAC\u1CAF\x03\x02\x02\x02\u1CAD\u1CAB\x03\x02\x02\x02" +
		"\u1CAD\u1CAE\x03\x02\x02\x02\u1CAE\u1CB0\x03\x02\x02\x02\u1CAF\u1CAD\x03" +
		"\x02\x02\x02\u1CB0\u1CB1\x07\u0365\x02\x02\u1CB1\u02E7\x03\x02\x02\x02" +
		"\u1CB2\u1CB7\x05\u0328\u0195\x02\u1CB3\u1CB4\x07\u0366\x02\x02\u1CB4\u1CB6" +
		"\x05\u0328\u0195\x02\u1CB5\u1CB3\x03\x02\x02\x02\u1CB6\u1CB9\x03\x02\x02" +
		"\x02\u1CB7\u1CB5\x03\x02\x02\x02\u1CB7\u1CB8\x03\x02\x02\x02\u1CB8\u02E9" +
		"\x03\x02\x02\x02\u1CB9\u1CB7\x03\x02\x02\x02\u1CBA\u1CBB\t\x85\x02\x02" +
		"\u1CBB\u1CC0\x05\u02EC\u0177\x02\u1CBC\u1CBD\x07\u0366\x02\x02\u1CBD\u1CBF" +
		"\x05\u02EC\u0177\x02\u1CBE\u1CBC\x03\x02\x02\x02\u1CBF\u1CC2\x03\x02\x02" +
		"\x02\u1CC0\u1CBE\x03\x02\x02\x02\u1CC0\u1CC1\x03\x02\x02\x02\u1CC1\u02EB" +
		"\x03\x02\x02\x02\u1CC2\u1CC0\x03\x02\x02\x02\u1CC3\u1CC4\x07\u0364\x02" +
		"\x02\u1CC4\u1CC9\x05\u02EE\u0178\x02\u1CC5\u1CC6\x07\u0366\x02\x02\u1CC6" +
		"\u1CC8\x05\u02EE\u0178\x02\u1CC7\u1CC5\x03\x02\x02\x02\u1CC8\u1CCB\x03" +
		"\x02\x02\x02\u1CC9\u1CC7\x03\x02\x02\x02\u1CC9\u1CCA\x03\x02\x02\x02\u1CCA" +
		"\u1CCC\x03\x02\x02\x02\u1CCB\u1CC9\x03\x02\x02\x02\u1CCC\u1CCD\x07\u0365" +
		"\x02\x02\u1CCD\u02ED\x03\x02\x02\x02\u1CCE\u1CD1\x05\u0328\u0195\x02\u1CCF" +
		"\u1CD1\x07,\x02\x02\u1CD0\u1CCE\x03\x02\x02\x02\u1CD0\u1CCF\x03\x02\x02" +
		"\x02\u1CD1\u02EF\x03\x02\x02\x02\u1CD2\u1CD7\x05\u02D8\u016D\x02\u1CD3" +
		"\u1CD4\x07\u0366\x02\x02\u1CD4\u1CD6\x05\u02D8\u016D\x02\u1CD5\u1CD3\x03" +
		"\x02\x02\x02\u1CD6\u1CD9\x03\x02\x02\x02\u1CD7\u1CD5\x03\x02\x02\x02\u1CD7" +
		"\u1CD8\x03\x02\x02\x02\u1CD8\u02F1\x03\x02\x02\x02\u1CD9\u1CD7\x03\x02" +
		"\x02\x02\u1CDA\u1CDF\x07\u0374\x02\x02\u1CDB\u1CDC\x07\u0366\x02\x02\u1CDC" +
		"\u1CDE\x07\u0374\x02\x02\u1CDD\u1CDB\x03\x02\x02\x02\u1CDE\u1CE1\x03\x02" +
		"\x02\x02\u1CDF\u1CDD\x03\x02\x02\x02\u1CDF\u1CE0\x03\x02\x02\x02\u1CE0" +
		"\u02F3\x03\x02\x02\x02\u1CE1\u1CDF\x03\x02\x02\x02\u1CE2\u1CE7\x07\u037E" +
		"\x02\x02\u1CE3\u1CE4\x07\u0366\x02\x02\u1CE4\u1CE6\x07\u037E\x02\x02\u1CE5" +
		"\u1CE3\x03\x02\x02\x02\u1CE6\u1CE9\x03\x02\x02\x02\u1CE7\u1CE5\x03\x02" +
		"\x02\x02\u1CE7\u1CE8\x03\x02\x02\x02\u1CE8\u02F5\x03\x02\x02\x02\u1CE9" +
		"\u1CE7\x03\x02\x02\x02\u1CEA\u1D05\x07v\x02\x02\u1CEB\u1CEC\x07\x1A\x02" +
		"\x02\u1CEC\u1CED\x07\u0364\x02\x02\u1CED\u1CEE\x05\u0328\u0195\x02\u1CEE" +
		"\u1CEF\x07\x0F\x02\x02\u1CEF\u1CF0\x05\u02DE\u0170\x02\u1CF0\u1CF1\x07" +
		"\u0365\x02\x02\u1CF1\u1D05\x03\x02\x02\x02\u1CF2\u1CF4\x05\u032E\u0198" +
		"\x02\u1CF3\u1CF2\x03\x02\x02\x02\u1CF3\u1CF4\x03\x02\x02\x02\u1CF4\u1CF5" +
		"\x03\x02\x02\x02\u1CF5\u1D05\x05\u02D8\u016D\x02\u1CF6\u1CFA\x05\u02F8" +
		"\u017D\x02\u1CF7\u1CF8\x07y\x02\x02\u1CF8\u1CF9\x07\xBB\x02\x02\u1CF9" +
		"\u1CFB\x05\u02F8\u017D\x02\u1CFA\u1CF7\x03\x02\x02\x02\u1CFA\u1CFB\x03" +
		"\x02\x02\x02\u1CFB\u1D05\x03\x02\x02\x02\u1CFC\u1CFD\x07\u0364\x02\x02" +
		"\u1CFD\u1CFE\x05\u0328\u0195\x02\u1CFE\u1CFF\x07\u0365\x02\x02\u1CFF\u1D05" +
		"\x03\x02\x02\x02\u1D00\u1D01\x07\u0364\x02\x02\u1D01\u1D02\x05\u02C2\u0162" +
		"\x02\u1D02\u1D03\x07\u0365\x02\x02\u1D03\u1D05\x03\x02\x02\x02\u1D04\u1CEA" +
		"\x03\x02\x02\x02\u1D04\u1CEB\x03\x02\x02\x02\u1D04\u1CF3\x03\x02\x02\x02" +
		"\u1D04\u1CF6\x03\x02\x02\x02\u1D04\u1CFC\x03\x02\x02\x02\u1D04\u1D00\x03" +
		"\x02\x02\x02\u1D05\u02F7\x03\x02\x02\x02\u1D06\u1D0C\t\x86\x02\x02\u1D07" +
		"\u1D09\x07\u0364\x02\x02\u1D08\u1D0A\x05\u02CC\u0167\x02\u1D09\u1D08\x03" +
		"\x02\x02\x02\u1D09\u1D0A\x03\x02\x02\x02\u1D0A\u1D0B\x03\x02\x02\x02\u1D0B" +
		"\u1D0D\x07\u0365\x02\x02\u1D0C\u1D07\x03\x02\x02\x02\u1D0C\u1D0D\x03\x02" +
		"\x02\x02\u1D0D\u1D15\x03\x02\x02\x02\u1D0E\u1D0F\x07\u0129\x02\x02\u1D0F" +
		"\u1D11\x07\u0364\x02\x02\u1D10\u1D12\x05\u02CC\u0167\x02\u1D11\u1D10\x03" +
		"\x02\x02\x02\u1D11\u1D12\x03\x02\x02\x02\u1D12\u1D13\x03\x02\x02\x02\u1D13" +
		"\u1D15\x07\u0365\x02\x02\u1D14\u1D06\x03\x02\x02\x02\u1D14\u1D0E\x03\x02" +
		"\x02\x02\u1D15\u02F9\x03\x02\x02\x02\u1D16\u1D17\x07P\x02\x02\u1D17\u1D18" +
		"\x07>\x02\x02\u1D18\u02FB\x03\x02\x02\x02\u1D19\u1D1A\x07P\x02\x02\u1D1A" +
		"\u1D1B\x07t\x02\x02\u1D1B\u1D1C\x07>\x02\x02\u1D1C\u02FD\x03\x02\x02\x02" +
		"\u1D1D\u1D1E\x07~\x02\x02\u1D1E\u1D1F\x07\x91\x02\x02\u1D1F\u02FF\x03" +
		"\x02\x02\x02\u1D20\u1D33\x05\u0302\u0182\x02\u1D21\u1D33\x05\u030A\u0186" +
		"\x02\u1D22\u1D33\x05\u030C\u0187\x02\u1D23\u1D24\x05\u0320\u0191\x02\u1D24" +
		"\u1D26\x07\u0364\x02\x02\u1D25\u1D27\x05\u0324\u0193\x02\u1D26\u1D25\x03" +
		"\x02\x02\x02\u1D26\u1D27\x03\x02\x02\x02\u1D27\u1D28\x03\x02\x02\x02\u1D28" +
		"\u1D29\x07\u0365\x02\x02\u1D29\u1D33\x03\x02\x02\x02\u1D2A\u1D2B\x05\u027C" +
		"\u013F\x02\u1D2B\u1D2D\x07\u0364\x02\x02\u1D2C\u1D2E\x05\u0324\u0193\x02" +
		"\u1D2D\u1D2C\x03\x02\x02\x02\u1D2D\u1D2E\x03\x02\x02\x02\u1D2E\u1D2F\x03" +
		"\x02\x02\x02\u1D2F\u1D30\x07\u0365\x02\x02\u1D30\u1D33\x03\x02\x02\x02" +
		"\u1D31\u1D33\x05\u0322\u0192\x02\u1D32\u1D20\x03\x02\x02\x02\u1D32\u1D21" +
		"\x03\x02\x02\x02\u1D32\u1D22\x03\x02\x02\x02\u1D32\u1D23\x03\x02\x02\x02" +
		"\u1D32\u1D2A\x03\x02\x02\x02\u1D32\u1D31\x03\x02\x02\x02\u1D33\u0301\x03" +
		"\x02\x02\x02\u1D34\u1D37\t\x87\x02\x02\u1D35\u1D36\x07\u0364\x02\x02\u1D36" +
		"\u1D38\x07\u0365\x02\x02\u1D37\u1D35\x03\x02\x02\x02\u1D37\u1D38\x03\x02" +
		"\x02\x02\u1D38\u1DE8\x03\x02\x02\x02\u1D39\u1DE8\x05:\x1E\x02\u1D3A\u1D3B" +
		"\x07#\x02\x02\u1D3B\u1D3C\x07\u0364\x02\x02\u1D3C\u1D3D\x05\u0328\u0195" +
		"\x02\u1D3D\u1D3E\x07\u0366\x02\x02\u1D3E\u1D3F\x05\u02DE\u0170\x02\u1D3F" +
		"\u1D40\x07\u0365\x02\x02\u1D40\u1DE8\x03\x02\x02\x02\u1D41\u1D42\x07#" +
		"\x02\x02\u1D42\u1D43\x07\u0364\x02\x02\u1D43\u1D44\x05\u0328\u0195\x02" +
		"\u1D44\u1D45\x07\xBE\x02\x02\u1D45\u1D46\x05\u02B4\u015B\x02\u1D46\u1D47" +
		"\x07\u0365\x02\x02\u1D47\u1DE8\x03\x02\x02\x02\u1D48\u1D49\x07\x1A\x02" +
		"\x02\u1D49\u1D4A\x07\u0364\x02\x02\u1D4A\u1D4B\x05\u0328\u0195\x02\u1D4B" +
		"\u1D4C\x07\x0F\x02\x02\u1D4C\u1D4D\x05\u02DE\u0170\x02\u1D4D\u1D4E\x07" +
		"\u0365\x02\x02\u1D4E\u1DE8\x03\x02\x02\x02\u1D4F\u1D50\x07\xBF\x02\x02" +
		"\u1D50\u1D51\x07\u0364\x02\x02\u1D51\u1D52\x05\u029A\u014E\x02\u1D52\u1D53" +
		"\x07\u0365\x02\x02\u1D53\u1DE8\x03\x02\x02\x02\u1D54\u1D55\x07\x19\x02" +
		"\x02\u1D55\u1D57\x05\u0328\u0195\x02\u1D56\u1D58\x05\u0304\u0183\x02\u1D57" +
		"\u1D56\x03\x02\x02\x02\u1D58\u1D59\x03\x02\x02\x02\u1D59\u1D57\x03\x02" +
		"\x02\x02\u1D59\u1D5A\x03\x02\x02\x02\u1D5A\u1D5D\x03\x02\x02\x02\u1D5B" +
		"\u1D5C\x077\x02\x02\u1D5C\u1D5E\x05\u0326\u0194\x02\u1D5D\u1D5B\x03\x02" +
		"\x02\x02\u1D5D\u1D5E\x03\x02\x02\x02\u1D5E\u1D5F\x03\x02\x02\x02\u1D5F" +
		"\u1D60\x07\u017C\x02\x02\u1D60\u1DE8\x03\x02\x02\x02\u1D61\u1D63\x07\x19" +
		"\x02\x02\u1D62\u1D64\x05\u0304\u0183\x02\u1D63\u1D62\x03\x02\x02\x02\u1D64" +
		"\u1D65\x03\x02\x02\x02\u1D65\u1D63\x03\x02\x02\x02\u1D65\u1D66\x03\x02" +
		"\x02\x02\u1D66\u1D69\x03\x02\x02\x02\u1D67\u1D68\x077\x02\x02\u1D68\u1D6A" +
		"\x05\u0326\u0194\x02\u1D69\u1D67\x03\x02\x02\x02\u1D69\u1D6A\x03\x02\x02" +
		"\x02\u1D6A\u1D6B\x03\x02\x02\x02\u1D6B\u1D6C\x07\u017C\x02\x02\u1D6C\u1DE8" +
		"\x03\x02\x02\x02\u1D6D\u1D6E\x07\xE2\x02\x02\u1D6E\u1D6F\x07\u0364\x02" +
		"\x02\u1D6F\u1D72\x05\u0324\u0193\x02\u1D70\u1D71\x07\xBE\x02\x02\u1D71" +
		"\u1D73\x05\u02B4\u015B\x02\u1D72\u1D70\x03\x02\x02\x02\u1D72\u1D73\x03" +
		"\x02\x02\x02\u1D73\u1D74\x03\x02\x02\x02\u1D74\u1D75\x07\u0365\x02\x02" +
		"\u1D75\u1DE8\x03\x02\x02\x02\u1D76\u1D77\x07\u012A\x02\x02\u1D77\u1D7A" +
		"\x07\u0364\x02\x02\u1D78\u1D7B\x05\u02D0\u0169\x02\u1D79\u1D7B\x05\u0328" +
		"\u0195\x02\u1D7A\u1D78\x03\x02\x02\x02\u1D7A\u1D79\x03\x02\x02\x02\u1D7B" +
		"\u1D7C\x03\x02\x02\x02\u1D7C\u1D7F\x07R\x02\x02\u1D7D\u1D80\x05\u02D0" +
		"\u0169\x02\u1D7E\u1D80\x05\u0328\u0195\x02\u1D7F\u1D7D\x03\x02\x02\x02" +
		"\u1D7F\u1D7E\x03\x02\x02\x02\u1D80\u1D81\x03\x02\x02\x02\u1D81\u1D82\x07" +
		"\u0365\x02\x02\u1D82\u1DE8\x03\x02\x02\x02\u1D83\u1D84\t\x88\x02\x02\u1D84" +
		"\u1D87\x07\u0364\x02\x02\u1D85\u1D88\x05\u02D0\u0169\x02\u1D86\u1D88\x05" +
		"\u0328\u0195\x02\u1D87\u1D85\x03\x02\x02\x02\u1D87\u1D86\x03\x02\x02\x02" +
		"\u1D88\u1D89\x03\x02\x02\x02\u1D89\u1D8C\x07F\x02\x02\u1D8A\u1D8D\x05" +
		"\u02CC\u0167\x02\u1D8B\u1D8D\x05\u0328\u0195\x02\u1D8C\u1D8A\x03\x02\x02" +
		"\x02\u1D8C\u1D8B\x03\x02\x02\x02\u1D8D\u1D93\x03\x02\x02\x02\u1D8E\u1D91" +
		"\x07C\x02\x02\u1D8F\u1D92\x05\u02CC\u0167\x02\u1D90\u1D92\x05\u0328\u0195" +
		"\x02\u1D91\u1D8F\x03\x02\x02\x02\u1D91\u1D90\x03\x02\x02\x02\u1D92\u1D94" +
		"\x03\x02\x02\x02\u1D93\u1D8E\x03\x02\x02\x02\u1D93\u1D94\x03\x02\x02\x02" +
		"\u1D94\u1D95\x03\x02\x02\x02\u1D95\u1D96\x07\u0365\x02\x02\u1D96\u1DE8" +
		"\x03\x02\x02\x02\u1D97\u1D98\x07\u012E\x02\x02\u1D98\u1D99\x07\u0364\x02" +
		"\x02\u1D99\u1D9C\t\x89\x02\x02\u1D9A\u1D9D\x05\u02D0\u0169\x02\u1D9B\u1D9D" +
		"\x05\u0328\u0195\x02\u1D9C\u1D9A\x03\x02\x02\x02\u1D9C\u1D9B\x03\x02\x02" +
		"\x02\u1D9C\u1D9D\x03\x02\x02\x02\u1D9D\u1D9E\x03\x02\x02\x02\u1D9E\u1DA1" +
		"\x07F\x02\x02\u1D9F\u1DA2\x05\u02D0\u0169\x02\u1DA0\u1DA2\x05\u0328\u0195" +
		"\x02\u1DA1\u1D9F\x03\x02\x02\x02\u1DA1\u1DA0\x03\x02\x02\x02\u1DA2\u1DA3" +
		"\x03\x02\x02\x02\u1DA3\u1DA4\x07\u0365\x02\x02\u1DA4\u1DE8\x03\x02\x02" +
		"\x02\u1DA5\u1DA6\x07\u012E\x02\x02\u1DA6\u1DA9\x07\u0364\x02\x02\u1DA7" +
		"\u1DAA\x05\u02D0\u0169\x02\u1DA8\u1DAA\x05\u0328\u0195\x02\u1DA9\u1DA7" +
		"\x03\x02\x02\x02\u1DA9\u1DA8\x03\x02\x02\x02\u1DAA\u1DAB\x03\x02\x02\x02" +
		"\u1DAB\u1DAE\x07F\x02\x02\u1DAC\u1DAF\x05\u02D0\u0169\x02\u1DAD\u1DAF" +
		"\x05\u0328\u0195\x02\u1DAE\u1DAC\x03\x02\x02\x02\u1DAE\u1DAD\x03\x02\x02" +
		"\x02\u1DAF\u1DB0\x03\x02\x02\x02\u1DB0\u1DB1\x07\u0365\x02\x02\u1DB1\u1DE8" +
		"\x03\x02\x02\x02\u1DB2\u1DB3\x07\u034A\x02\x02\u1DB3\u1DB6\x07\u0364\x02" +
		"\x02\u1DB4\u1DB7\x05\u02D0\u0169\x02\u1DB5\u1DB7\x05\u0328\u0195\x02\u1DB6" +
		"\u1DB4\x03\x02\x02\x02\u1DB6\u1DB5\x03\x02\x02\x02\u1DB7\u1DBE\x03\x02" +
		"\x02\x02\u1DB8\u1DB9\x07\x0F\x02\x02\u1DB9\u1DBA\t\x8A\x02\x02\u1DBA\u1DBB" +
		"\x07\u0364\x02\x02\u1DBB\u1DBC\x05\u02CC\u0167\x02\u1DBC\u1DBD\x07\u0365" +
		"\x02\x02\u1DBD\u1DBF\x03\x02\x02\x02\u1DBE\u1DB8\x03\x02\x02\x02\u1DBE" +
		"\u1DBF\x03\x02\x02\x02\u1DBF\u1DC1\x03\x02\x02\x02\u1DC0\u1DC2\x05\u0306" +
		"\u0184\x02\u1DC1\u1DC0\x03\x02\x02\x02\u1DC1\u1DC2\x03\x02\x02\x02\u1DC2" +
		"\u1DC3\x03\x02\x02\x02\u1DC3\u1DC4\x07\u0365\x02\x02\u1DC4\u1DE8\x03\x02" +
		"\x02\x02\u1DC5\u1DC6\x07\u0127\x02\x02\u1DC6\u1DC7\x07\u0364\x02\x02\u1DC7" +
		"\u1DC8\x05D#\x02\u1DC8\u1DCB\x07F\x02\x02\u1DC9\u1DCC\x05\u02D0\u0169" +
		"\x02\u1DCA\u1DCC\x05\u0328\u0195\x02\u1DCB\u1DC9\x03\x02\x02\x02\u1DCB" +
		"\u1DCA\x03\x02\x02\x02\u1DCC\u1DCD\x03\x02\x02\x02\u1DCD\u1DCE\x07\u0365" +
		"\x02\x02\u1DCE\u1DE8\x03\x02\x02\x02\u1DCF\u1DD0\x07\u033D\x02\x02\u1DD0" +
		"\u1DD1\x07\u0364\x02\x02\u1DD1\u1DD2\t\x8B\x02\x02\u1DD2\u1DD3\x07\u0366" +
		"\x02\x02\u1DD3\u1DD4\x05\u02D0\u0169\x02\u1DD4\u1DD5\x07\u0365\x02\x02" +
		"\u1DD5\u1DE8\x03\x02\x02\x02\u1DD6\u1DD7\x07\u0100\x02\x02\u1DD7\u1DD8" +
		"\x07\u0364\x02\x02\u1DD8\u1DD9\x05\u0328\u0195\x02\u1DD9\u1DDA\x07\u0366" +
		"\x02\x02\u1DDA\u1DDD\x05\u0328\u0195\x02\u1DDB\u1DDC\x07\u0245\x02\x02" +
		"\u1DDC\u1DDE\x05\u02DE\u0170\x02\u1DDD\u1DDB\x03\x02\x02\x02\u1DDD\u1DDE" +
		"\x03\x02\x02\x02\u1DDE\u1DE0\x03\x02\x02\x02\u1DDF\u1DE1\x05\u0126\x94" +
		"\x02\u1DE0\u1DDF\x03\x02\x02\x02\u1DE0\u1DE1\x03\x02\x02\x02\u1DE1\u1DE3" +
		"\x03\x02\x02\x02\u1DE2\u1DE4\x05\u0128\x95\x02\u1DE3\u1DE2\x03\x02\x02" +
		"\x02\u1DE3\u1DE4\x03\x02\x02\x02\u1DE4\u1DE5\x03\x02\x02\x02\u1DE5\u1DE6" +
		"\x07\u0365\x02\x02\u1DE6\u1DE8\x03\x02\x02\x02\u1DE7\u1D34\x03\x02\x02" +
		"\x02\u1DE7\u1D39\x03\x02\x02\x02\u1DE7\u1D3A\x03\x02\x02\x02\u1DE7\u1D41" +
		"\x03\x02\x02\x02\u1DE7\u1D48\x03\x02\x02\x02\u1DE7\u1D4F\x03\x02\x02\x02" +
		"\u1DE7\u1D54\x03\x02\x02\x02\u1DE7\u1D61\x03\x02\x02\x02\u1DE7\u1D6D\x03" +
		"\x02\x02\x02\u1DE7\u1D76\x03\x02\x02\x02\u1DE7\u1D83\x03\x02\x02\x02\u1DE7" +
		"\u1D97\x03\x02\x02\x02\u1DE7\u1DA5\x03\x02\x02\x02\u1DE7\u1DB2\x03\x02" +
		"\x02\x02\u1DE7\u1DC5\x03\x02\x02\x02\u1DE7\u1DCF\x03\x02\x02\x02\u1DE7" +
		"\u1DD6\x03\x02\x02\x02\u1DE8\u0303\x03\x02\x02\x02\u1DE9\u1DEA\x07\xC1" +
		"\x02\x02\u1DEA\u1DEB\x05\u0326\u0194\x02\u1DEB\u1DEC\x07\xB1\x02\x02\u1DEC" +
		"\u1DED\x05\u0326\u0194\x02\u1DED\u0305\x03\x02\x02\x02\u1DEE\u1DEF\x07" +
		"\u01C2\x02\x02\u1DEF\u1DF4\x05\u0308\u0185\x02\u1DF0\u1DF1\x07\u0366\x02" +
		"\x02\u1DF1\u1DF3\x05\u0308\u0185\x02\u1DF2\u1DF0\x03\x02\x02\x02\u1DF3" +
		"\u1DF6\x03\x02\x02\x02\u1DF4\u1DF2\x03\x02\x02\x02\u1DF4\u1DF5\x03\x02" +
		"\x02\x02\u1DF5\u1DFD\x03\x02\x02\x02\u1DF6\u1DF4\x03\x02\x02\x02\u1DF7" +
		"\u1DF8\x07\u01C2\x02\x02\u1DF8\u1DF9\x05\u02CC\u0167\x02\u1DF9\u1DFA\x07" +
		"\u0358\x02\x02\u1DFA\u1DFB\x05\u02CC\u0167\x02\u1DFB\u1DFD\x03\x02\x02" +
		"\x02\u1DFC\u1DEE\x03\x02\x02\x02\u1DFC\u1DF7\x03\x02\x02\x02\u1DFD\u0307" +
		"\x03\x02\x02\x02\u1DFE\u1E00\x05\u02CC\u0167\x02\u1DFF\u1E01\t\x8C\x02" +
		"\x02\u1E00\u1DFF\x03\x02\x02\x02\u1E00\u1E01\x03\x02\x02\x02\u1E01\u0309" +
		"\x03\x02\x02\x02\u1E02\u1E03\t\x8D\x02\x02\u1E03\u1E05\x07\u0364\x02\x02" +
		"\u1E04\u1E06\t.\x02\x02\u1E05\u1E04\x03\x02\x02\x02\u1E05\u1E06\x03\x02" +
		"\x02\x02\u1E06\u1E07\x03\x02\x02\x02\u1E07\u1E08\x05\u0326\u0194\x02\u1E08" +
		"\u1E0A\x07\u0365\x02\x02\u1E09\u1E0B\x05\u030E\u0188\x02\u1E0A\u1E09\x03" +
		"\x02\x02\x02\u1E0A\u1E0B\x03\x02\x02\x02\u1E0B\u1E3E\x03\x02\x02\x02\u1E0C" +
		"\u1E0D\x07\u0108\x02\x02\u1E0D\u1E15\x07\u0364\x02\x02\u1E0E\u1E16\x07" +
		"\u0354\x02\x02\u1E0F\u1E11\x07\t\x02\x02\u1E10\u1E0F\x03\x02\x02\x02\u1E10" +
		"\u1E11\x03\x02\x02\x02\u1E11\u1E12\x03\x02\x02\x02\u1E12\u1E16\x05\u0326" +
		"\u0194\x02\u1E13\u1E14\x073\x02\x02\u1E14\u1E16\x05\u0324\u0193\x02\u1E15" +
		"\u1E0E\x03\x02\x02\x02\u1E15\u1E10\x03\x02\x02\x02\u1E15\u1E13\x03\x02" +
		"\x02\x02\u1E16\u1E17\x03\x02\x02\x02\u1E17\u1E19\x07\u0365\x02\x02\u1E18" +
		"\u1E1A\x05\u030E\u0188\x02\u1E19\u1E18\x03\x02\x02\x02\u1E19\u1E1A\x03" +
		"\x02\x02\x02\u1E1A\u1E3E\x03\x02\x02\x02\u1E1B\u1E1C\t\x8E\x02\x02\u1E1C" +
		"\u1E1E\x07\u0364\x02\x02\u1E1D\u1E1F\x07\t\x02\x02\u1E1E\u1E1D\x03\x02" +
		"\x02\x02\u1E1E\u1E1F\x03\x02\x02\x02\u1E1F\u1E20\x03\x02\x02\x02\u1E20" +
		"\u1E21\x05\u0326\u0194\x02\u1E21\u1E23\x07\u0365\x02\x02\u1E22\u1E24\x05" +
		"\u030E\u0188\x02\u1E23\u1E22\x03\x02\x02\x02\u1E23\u1E24\x03\x02\x02\x02" +
		"\u1E24\u1E3E\x03\x02\x02\x02\u1E25\u1E26\x07\u010C\x02\x02\u1E26\u1E28" +
		"\x07\u0364\x02\x02\u1E27\u1E29\x073\x02\x02\u1E28\u1E27\x03\x02\x02\x02" +
		"\u1E28\u1E29\x03\x02\x02\x02\u1E29\u1E2A\x03\x02\x02\x02\u1E2A\u1E35\x05" +
		"\u0324\u0193\x02\u1E2B\u1E2C\x07\x7F\x02\x02\u1E2C\u1E2D\x07\x16\x02\x02" +
		"\u1E2D\u1E32\x05\u0100\x81\x02\u1E2E\u1E2F\x07\u0366\x02\x02\u1E2F\u1E31" +
		"\x05\u0100\x81\x02\u1E30\u1E2E\x03\x02\x02\x02\u1E31\u1E34\x03\x02\x02" +
		"\x02\u1E32\u1E30\x03\x02\x02\x02\u1E32\u1E33\x03\x02\x02\x02\u1E33\u1E36" +
		"\x03\x02\x02\x02\u1E34\u1E32\x03\x02\x02\x02\u1E35\u1E2B\x03\x02\x02\x02" +
		"\u1E35\u1E36\x03\x02\x02\x02\u1E36\u1E39\x03\x02\x02\x02\u1E37\u1E38\x07" +
		"\x9E\x02\x02\u1E38\u1E3A\x07\u0374\x02\x02\u1E39\u1E37\x03\x02\x02\x02" +
		"\u1E39\u1E3A\x03\x02\x02\x02\u1E3A\u1E3B\x03\x02\x02\x02\u1E3B\u1E3C\x07" +
		"\u0365\x02\x02\u1E3C\u1E3E\x03\x02\x02\x02\u1E3D\u1E02\x03\x02\x02\x02" +
		"\u1E3D\u1E0C\x03\x02\x02\x02\u1E3D\u1E1B\x03\x02\x02\x02\u1E3D\u1E25\x03" +
		"\x02\x02\x02\u1E3E\u030B\x03\x02\x02\x02\u1E3F\u1E40\t\x8F\x02\x02\u1E40" +
		"\u1E41\x07\u0364\x02\x02\u1E41\u1E44\x05\u0328\u0195\x02\u1E42\u1E43\x07" +
		"\u0366\x02\x02\u1E43\u1E45\x05\u02CC\u0167\x02\u1E44\u1E42\x03\x02\x02" +
		"\x02\u1E44\u1E45\x03\x02\x02\x02\u1E45\u1E48\x03\x02\x02\x02\u1E46\u1E47" +
		"\x07\u0366\x02\x02\u1E47\u1E49\x05\u02CC\u0167\x02\u1E48\u1E46\x03\x02" +
		"\x02\x02\u1E48\u1E49\x03\x02\x02\x02\u1E49\u1E4A\x03\x02\x02\x02\u1E4A" +
		"\u1E4B\x07\u0365\x02\x02\u1E4B\u1E4C\x05\u030E\u0188\x02\u1E4C\u1E66\x03" +
		"\x02\x02\x02\u1E4D\u1E4E\t\x90\x02\x02\u1E4E\u1E4F\x07\u0364\x02\x02\u1E4F" +
		"\u1E50\x05\u0328\u0195\x02\u1E50\u1E51\x07\u0365\x02\x02\u1E51\u1E52\x05" +
		"\u030E\u0188\x02\u1E52\u1E66\x03\x02\x02\x02\u1E53\u1E54\t\x91\x02\x02" +
		"\u1E54\u1E55\x07\u0364\x02\x02\u1E55\u1E56\x07\u0365\x02\x02\u1E56\u1E66" +
		"\x05\u030E\u0188\x02\u1E57\u1E58\x07\u0113\x02\x02\u1E58\u1E59\x07\u0364" +
		"\x02\x02\u1E59\u1E5A\x05\u0328\u0195\x02\u1E5A\u1E5B\x07\u0366\x02\x02" +
		"\u1E5B\u1E5C\x05\u02CC\u0167\x02\u1E5C\u1E5D\x07\u0365\x02\x02\u1E5D\u1E5E" +
		"\x05\u030E\u0188\x02\u1E5E\u1E66\x03\x02\x02\x02\u1E5F\u1E60\x07\u0112" +
		"\x02\x02\u1E60\u1E61\x07\u0364\x02\x02\u1E61\u1E62\x05\u02CC\u0167\x02" +
		"\u1E62\u1E63\x07\u0365\x02\x02\u1E63\u1E64\x05\u030E\u0188\x02\u1E64\u1E66" +
		"\x03\x02\x02\x02\u1E65\u1E3F\x03\x02\x02\x02\u1E65\u1E4D\x03\x02\x02\x02" +
		"\u1E65\u1E53\x03\x02\x02\x02\u1E65\u1E57\x03\x02\x02\x02\u1E65\u1E5F\x03" +
		"\x02\x02\x02\u1E66\u030D\x03\x02\x02\x02\u1E67\u1E6D\x07\x83\x02\x02\u1E68" +
		"\u1E69\x07\u0364\x02\x02\u1E69\u1E6A\x05\u0310\u0189\x02\u1E6A\u1E6B\x07" +
		"\u0365\x02\x02\u1E6B\u1E6E\x03\x02\x02\x02\u1E6C\u1E6E\x05\u0312\u018A" +
		"\x02\u1E6D\u1E68\x03\x02\x02\x02\u1E6D\u1E6C\x03\x02\x02\x02\u1E6E\u030F" +
		"\x03\x02\x02\x02\u1E6F\u1E71\x05\u0312\u018A\x02\u1E70\u1E6F\x03\x02\x02" +
		"\x02\u1E70\u1E71\x03\x02\x02\x02\u1E71\u1E73\x03\x02\x02\x02\u1E72\u1E74" +
		"\x05\u031E\u0190\x02\u1E73\u1E72\x03\x02\x02\x02\u1E73\u1E74\x03\x02\x02" +
		"\x02\u1E74\u1E76\x03\x02\x02\x02\u1E75\u1E77\x05\xFE\x80\x02\u1E76\u1E75" +
		"\x03\x02\x02\x02\u1E76\u1E77\x03\x02\x02\x02\u1E77\u1E79\x03\x02\x02\x02" +
		"\u1E78\u1E7A\x05\u0314\u018B\x02\u1E79\u1E78\x03\x02\x02\x02\u1E79\u1E7A" +
		"\x03\x02\x02\x02\u1E7A\u0311\x03\x02\x02\x02\u1E7B\u1E7C\x05\u02C6\u0164" +
		"\x02\u1E7C\u0313\x03\x02\x02\x02\u1E7D\u1E7E\x05\u0316\u018C\x02\u1E7E" +
		"\u1E7F\x05\u0318\u018D\x02\u1E7F\u0315\x03\x02\x02\x02\u1E80\u1E81\t\x92" +
		"\x02\x02\u1E81\u0317\x03\x02\x02\x02\u1E82\u1E85\x05\u031C\u018F\x02\u1E83" +
		"\u1E85\x05\u031A\u018E\x02\u1E84\u1E82\x03\x02\x02\x02\u1E84\u1E83\x03" +
		"\x02\x02\x02\u1E85\u0319\x03\x02\x02\x02\u1E86\u1E87\x07\x13\x02\x02\u1E87" +
		"\u1E88\x05\u031C\u018F\x02\u1E88\u1E89\x07\r\x02\x02\u1E89\u1E8A\x05\u031C" +
		"\u018F\x02\u1E8A\u031B\x03\x02\x02\x02\u1E8B\u1E8C\x07&\x02\x02\u1E8C" +
		"\u1E93\x07\u024C\x02\x02\u1E8D\u1E8E\x07\u029F\x02\x02\u1E8E\u1E93\t\x93" +
		"\x02\x02\u1E8F\u1E90\x05\u0328\u0195\x02\u1E90\u1E91\t\x93\x02\x02\u1E91" +
		"\u1E93\x03\x02\x02\x02\u1E92\u1E8B\x03\x02\x02\x02\u1E92\u1E8D\x03\x02" +
		"\x02\x02\u1E92\u1E8F\x03\x02\x02\x02\u1E93\u031D\x03\x02\x02\x02\u1E94" +
		"\u1E95\x07\x84\x02\x02\u1E95\u1E96\x07\x16\x02\x02\u1E96\u1E9B\x05\u0328" +
		"\u0195\x02\u1E97\u1E98\x07\u0366\x02\x02\u1E98\u1E9A\x05\u0328\u0195\x02" +
		"\u1E99\u1E97\x03\x02\x02\x02\u1E9A\u1E9D\x03\x02\x02\x02\u1E9B\u1E99\x03" +
		"\x02\x02\x02\u1E9B\u1E9C\x03\x02\x02\x02\u1E9C\u031F\x03\x02\x02\x02\u1E9D" +
		"\u1E9B\x03\x02\x02\x02\u1E9E\u1EB7\x05\u0348\u01A5\x02\u1E9F\u1EB7\x07" +
		"\u02F7\x02\x02\u1EA0\u1EB7\x07\u0123\x02\x02\u1EA1\u1EB7\x07\u011F\x02" +
		"\x02\u1EA2\u1EB7\x07\u0120\x02\x02\u1EA3\u1EB7\x07\u0121\x02\x02\u1EA4" +
		"\u1EB7\x07\u0124\x02\x02\u1EA5\u1EB7\x07\u0125\x02\x02\u1EA6\u1EB7\x07" +
		"\u0126\x02\x02\u1EA7\u1EB7\x07P\x02\x02\u1EA8\u1EB7\x07X\x02\x02\u1EA9" +
		"\u1EB7\x07\u0122\x02\x02\u1EAA\u1EB7\x07\u0128\x02\x02\u1EAB\u1EB7\x07" +
		"\u01EA\x02\x02\u1EAC\u1EB7\x07\u0129\x02\x02\u1EAD\u1EB7\x07\x90\x02\x02" +
		"\u1EAE\u1EB7\x07\x91\x02\x02\u1EAF\u1EB7\x07\u012B\x02\x02\u1EB0\u1EB7" +
		"\x07\u012C\x02\x02\u1EB1\u1EB7\x07\u012D\x02\x02\u1EB2\u1EB7\x07\u012E" +
		"\x02\x02\u1EB3\u1EB7\x07\u012F\x02\x02\u1EB4\u1EB7\x07\u0130\x02\x02\u1EB5" +
		"\u1EB7\x07\u0131\x02\x02\u1EB6\u1E9E\x03\x02\x02\x02\u1EB6\u1E9F\x03\x02" +
		"\x02\x02\u1EB6\u1EA0\x03\x02\x02\x02\u1EB6\u1EA1\x03\x02\x02\x02\u1EB6" +
		"\u1EA2\x03\x02\x02\x02\u1EB6\u1EA3\x03\x02\x02\x02\u1EB6\u1EA4\x03\x02" +
		"\x02\x02\u1EB6\u1EA5\x03\x02\x02\x02\u1EB6\u1EA6\x03\x02\x02\x02\u1EB6" +
		"\u1EA7\x03\x02\x02\x02\u1EB6\u1EA8\x03\x02\x02\x02\u1EB6\u1EA9\x03\x02" +
		"\x02\x02\u1EB6\u1EAA\x03\x02\x02\x02\u1EB6\u1EAB\x03\x02\x02\x02\u1EB6" +
		"\u1EAC\x03\x02\x02\x02\u1EB6\u1EAD\x03\x02\x02\x02\u1EB6\u1EAE\x03\x02" +
		"\x02\x02\u1EB6\u1EAF\x03\x02\x02\x02\u1EB6\u1EB0\x03\x02\x02\x02\u1EB6" +
		"\u1EB1\x03\x02\x02\x02\u1EB6\u1EB2\x03\x02\x02\x02\u1EB6\u1EB3\x03\x02" +
		"\x02\x02\u1EB6\u1EB4\x03\x02\x02\x02\u1EB6\u1EB5\x03\x02\x02\x02\u1EB7" +
		"\u0321\x03\x02\x02\x02\u1EB8\u1EB9\t\x94\x02\x02\u1EB9\u1EBA\x07\u0364" +
		"\x02\x02\u1EBA\u1EBB\x05\u0326\u0194\x02\u1EBB\u1EBC\x07\u0365\x02\x02" +
		"\u1EBC\u0323\x03\x02\x02\x02\u1EBD\u1EC2\x05\u0326\u0194\x02\u1EBE\u1EBF" +
		"\x07\u0366\x02\x02\u1EBF\u1EC1\x05\u0326\u0194\x02\u1EC0\u1EBE\x03\x02" +
		"\x02\x02\u1EC1\u1EC4\x03\x02\x02\x02\u1EC2\u1EC0\x03\x02\x02\x02\u1EC2" +
		"\u1EC3\x03\x02\x02\x02\u1EC3\u0325\x03\x02\x02\x02\u1EC4\u1EC2\x03\x02" +
		"\x02\x02\u1EC5\u1ECA\x05\u02D8\u016D\x02\u1EC6\u1ECA\x05\u029A\u014E\x02";
	private static readonly _serializedATNSegment15: string =
		"\u1EC7\u1ECA\x05\u0300\u0181\x02\u1EC8\u1ECA\x05\u0328\u0195\x02\u1EC9" +
		"\u1EC5\x03\x02\x02\x02\u1EC9\u1EC6\x03\x02\x02\x02\u1EC9\u1EC7\x03\x02" +
		"\x02\x02\u1EC9\u1EC8\x03\x02\x02\x02\u1ECA\u0327\x03\x02\x02\x02\u1ECB" +
		"\u1ECC\b\u0195\x01\x02\u1ECC\u1ECD\t\x95\x02\x02\u1ECD\u1ED7\x05\u0328" +
		"\u0195\x06\u1ECE\u1ECF\x05\u032A\u0196\x02\u1ECF\u1ED1\x07[\x02\x02\u1ED0" +
		"\u1ED2\x07t\x02\x02\u1ED1\u1ED0\x03\x02\x02\x02\u1ED1\u1ED2\x03\x02\x02" +
		"\x02\u1ED2\u1ED3\x03\x02\x02\x02\u1ED3\u1ED4\t\x96\x02\x02\u1ED4\u1ED7" +
		"\x03\x02\x02\x02\u1ED5\u1ED7\x05\u032A\u0196\x02\u1ED6\u1ECB\x03\x02\x02" +
		"\x02\u1ED6\u1ECE\x03\x02\x02\x02\u1ED6\u1ED5\x03\x02\x02\x02\u1ED7\u1EDE" +
		"\x03\x02\x02\x02\u1ED8\u1ED9\f\x05\x02\x02\u1ED9\u1EDA\x05\u0334\u019B" +
		"\x02\u1EDA\u1EDB\x05\u0328\u0195\x06\u1EDB\u1EDD\x03\x02\x02\x02\u1EDC" +
		"\u1ED8\x03\x02\x02\x02\u1EDD\u1EE0\x03\x02\x02\x02\u1EDE\u1EDC\x03\x02" +
		"\x02\x02\u1EDE\u1EDF\x03\x02\x02\x02\u1EDF\u0329\x03\x02\x02\x02\u1EE0" +
		"\u1EDE\x03\x02\x02\x02\u1EE1\u1EE2\b\u0196\x01\x02\u1EE2\u1EE3\x05\u032C" +
		"\u0197\x02\u1EE3\u1F24\x03\x02\x02\x02\u1EE4\u1EE5\f\n\x02\x02\u1EE5\u1EE6" +
		"\x05\u0330\u0199\x02\u1EE6\u1EE7\x05\u032A\u0196\v\u1EE7\u1F23\x03\x02" +
		"\x02\x02\u1EE8\u1EEA\f\b\x02\x02\u1EE9\u1EEB\x07t\x02\x02\u1EEA\u1EE9" +
		"\x03\x02\x02\x02\u1EEA\u1EEB\x03\x02\x02\x02\u1EEB\u1EEC\x03\x02\x02\x02" +
		"\u1EEC\u1EED\x07\x13\x02\x02\u1EED\u1EEE\x05\u032A\u0196\x02\u1EEE\u1EEF" +
		"\x07\r\x02\x02\u1EEF\u1EF0\x05\u032A\u0196\t\u1EF0\u1F23\x03\x02\x02\x02" +
		"\u1EF1\u1EF2\f\x07\x02\x02\u1EF2\u1EF3\x07\u025E\x02\x02\u1EF3\u1EF4\x07" +
		"e\x02\x02\u1EF4\u1F23\x05\u032A\u0196\b\u1EF5\u1EF7\f\x05\x02\x02\u1EF6" +
		"\u1EF8\x07t\x02\x02\u1EF7\u1EF6\x03\x02\x02\x02\u1EF7\u1EF8\x03\x02\x02" +
		"\x02\u1EF8\u1EF9\x03\x02\x02\x02\u1EF9\u1EFA\t\x97\x02\x02\u1EFA\u1F23" +
		"\x05\u032A\u0196\x06\u1EFB\u1EFD\f\f\x02\x02\u1EFC\u1EFE\x07t\x02\x02" +
		"\u1EFD\u1EFC\x03\x02\x02\x02\u1EFD\u1EFE\x03\x02\x02\x02\u1EFE\u1EFF\x03" +
		"\x02\x02\x02\u1EFF\u1F00\x07R\x02\x02\u1F00\u1F03\x07\u0364\x02\x02\u1F01" +
		"\u1F04\x05\xCEh\x02\u1F02\u1F04\x05\u02E8\u0175\x02\u1F03\u1F01\x03\x02" +
		"\x02\x02\u1F03\u1F02\x03\x02\x02\x02\u1F04\u1F05\x03\x02\x02\x02\u1F05" +
		"\u1F06\x07\u0365\x02\x02\u1F06\u1F23\x03\x02\x02\x02\u1F07\u1F08\f\v\x02" +
		"\x02\u1F08\u1F09\x07[\x02\x02\u1F09\u1F23\x05\u02D6\u016C\x02\u1F0A\u1F0B" +
		"\f\t\x02\x02\u1F0B\u1F0C\x05\u0330\u0199\x02\u1F0C\u1F0D\t\x98\x02\x02" +
		"\u1F0D\u1F0E\x07\u0364\x02\x02\u1F0E\u1F0F\x05\xCEh\x02\u1F0F\u1F10\x07" +
		"\u0365\x02\x02\u1F10\u1F23\x03\x02\x02\x02\u1F11\u1F13\f\x06\x02\x02\u1F12" +
		"\u1F14\x07t\x02\x02\u1F13\u1F12\x03\x02\x02\x02\u1F13\u1F14\x03\x02\x02" +
		"\x02\u1F14\u1F15\x03\x02\x02\x02\u1F15\u1F16\x07e\x02\x02\u1F16\u1F19" +
		"\x05\u032A\u0196\x02\u1F17\u1F18\x07\u0182\x02\x02\u1F18\u1F1A\x07\u0374" +
		"\x02\x02\u1F19\u1F17\x03\x02\x02\x02\u1F19\u1F1A\x03\x02\x02\x02\u1F1A" +
		"\u1F23\x03\x02\x02\x02\u1F1B\u1F1C\f\x04\x02\x02\u1F1C\u1F1D\x07\u01E7" +
		"\x02\x02\u1F1D\u1F1E\x07\u0200\x02\x02\u1F1E\u1F1F\x07\u0364\x02\x02\u1F1F" +
		"\u1F20\x05\u032A\u0196\x02\u1F20\u1F21\x07\u0365\x02\x02\u1F21\u1F23\x03" +
		"\x02\x02\x02\u1F22\u1EE4\x03\x02\x02\x02\u1F22\u1EE8\x03\x02\x02\x02\u1F22" +
		"\u1EF1\x03\x02\x02\x02\u1F22\u1EF5\x03\x02\x02\x02\u1F22\u1EFB\x03\x02" +
		"\x02\x02\u1F22\u1F07\x03\x02\x02\x02\u1F22\u1F0A\x03\x02\x02\x02\u1F22" +
		"\u1F11\x03\x02\x02\x02\u1F22\u1F1B\x03\x02\x02\x02\u1F23\u1F26\x03\x02" +
		"\x02\x02\u1F24\u1F22\x03\x02\x02\x02\u1F24\u1F25\x03\x02\x02\x02\u1F25" +
		"\u032B\x03\x02\x02\x02\u1F26\u1F24\x03\x02\x02\x02\u1F27\u1F28\b\u0197" +
		"\x01\x02\u1F28\u1F58\x05\u02D8\u016D\x02\u1F29\u1F58\x05\u029A\u014E\x02" +
		"\u1F2A\u1F58\x05\u0300\u0181\x02\u1F2B\u1F58\x05\u02B2\u015A\x02\u1F2C" +
		"\u1F2D\x05\u032E\u0198\x02\u1F2D\u1F2E\x05\u032C\u0197\r\u1F2E\u1F58\x03" +
		"\x02\x02\x02\u1F2F\u1F30\x07\xE6\x02\x02\u1F30\u1F58\x05\u032C\u0197\f" +
		"\u1F31\u1F32\x07\u037E\x02\x02\u1F32\u1F33\x07\u034B\x02\x02\u1F33\u1F58" +
		"\x05\u032C\u0197\v\u1F34\u1F35\x07\u0364\x02\x02\u1F35\u1F3A\x05\u0328" +
		"\u0195\x02\u1F36\u1F37\x07\u0366\x02\x02\u1F37\u1F39\x05\u0328\u0195\x02" +
		"\u1F38\u1F36\x03\x02\x02\x02\u1F39\u1F3C\x03\x02\x02\x02\u1F3A\u1F38\x03" +
		"\x02\x02\x02\u1F3A\u1F3B\x03\x02\x02\x02\u1F3B\u1F3D\x03\x02\x02\x02\u1F3C" +
		"\u1F3A\x03\x02\x02\x02\u1F3D\u1F3E\x07\u0365\x02\x02\u1F3E\u1F58\x03\x02" +
		"\x02\x02\u1F3F\u1F40\x07\u024C\x02\x02\u1F40\u1F41\x07\u0364\x02\x02\u1F41" +
		"\u1F44\x05\u0328\u0195\x02\u1F42\u1F43\x07\u0366\x02\x02\u1F43\u1F45\x05" +
		"\u0328\u0195\x02\u1F44\u1F42\x03\x02\x02\x02\u1F45\u1F46\x03\x02\x02\x02" +
		"\u1F46\u1F44\x03\x02\x02\x02\u1F46\u1F47\x03\x02\x02\x02\u1F47\u1F48\x03" +
		"\x02\x02\x02\u1F48\u1F49\x07\u0365\x02\x02\u1F49\u1F58\x03\x02\x02\x02" +
		"\u1F4A\u1F4B\x07>\x02\x02\u1F4B\u1F4C\x07\u0364\x02\x02\u1F4C\u1F4D\x05" +
		"\xCEh\x02\u1F4D\u1F4E\x07\u0365\x02\x02\u1F4E\u1F58\x03\x02\x02\x02\u1F4F" +
		"\u1F50\x07\u0364\x02\x02\u1F50\u1F51\x05\xCEh\x02\u1F51\u1F52\x07\u0365" +
		"\x02\x02\u1F52\u1F58\x03\x02\x02\x02\u1F53\u1F54\x07Y\x02\x02\u1F54\u1F55" +
		"\x05\u0328\u0195\x02\u1F55\u1F56\x05D#\x02\u1F56\u1F58\x03\x02\x02\x02" +
		"\u1F57\u1F27\x03\x02\x02\x02\u1F57\u1F29\x03\x02\x02\x02\u1F57\u1F2A\x03" +
		"\x02\x02\x02\u1F57\u1F2B\x03\x02\x02\x02\u1F57\u1F2C\x03\x02\x02\x02\u1F57" +
		"\u1F2F\x03\x02\x02\x02\u1F57\u1F31\x03\x02\x02\x02\u1F57\u1F34\x03\x02" +
		"\x02\x02\u1F57\u1F3F\x03\x02\x02\x02\u1F57\u1F4A\x03\x02\x02\x02\u1F57" +
		"\u1F4F\x03\x02\x02\x02\u1F57\u1F53\x03\x02\x02\x02\u1F58\u1F6A\x03\x02" +
		"\x02\x02\u1F59\u1F5A\f\x05\x02\x02\u1F5A\u1F5B\x05\u0336\u019C\x02\u1F5B" +
		"\u1F5C\x05\u032C\u0197\x06\u1F5C\u1F69\x03\x02\x02\x02\u1F5D\u1F5E\f\x04" +
		"\x02\x02\u1F5E\u1F5F\x05\u0338\u019D\x02\u1F5F\u1F60\x05\u032C\u0197\x05" +
		"\u1F60\u1F69\x03\x02\x02\x02\u1F61\u1F62\f\x03\x02\x02\u1F62\u1F63\x05" +
		"\u033A\u019E\x02\u1F63\u1F64\x05\u032C\u0197\x04\u1F64\u1F69\x03\x02\x02" +
		"\x02\u1F65\u1F66\f\x0F\x02\x02\u1F66\u1F67\x07\x1E\x02\x02\u1F67\u1F69" +
		"\x05\u02B6\u015C\x02\u1F68\u1F59\x03\x02\x02\x02\u1F68\u1F5D\x03\x02\x02" +
		"\x02\u1F68\u1F61\x03\x02\x02\x02\u1F68\u1F65\x03\x02\x02\x02\u1F69\u1F6C" +
		"\x03\x02\x02\x02\u1F6A\u1F68\x03\x02\x02\x02\u1F6A\u1F6B\x03\x02\x02\x02" +
		"\u1F6B\u032D\x03\x02\x02\x02\u1F6C\u1F6A\x03\x02\x02\x02\u1F6D\u1F6E\t" +
		"\x99\x02\x02\u1F6E\u032F\x03\x02\x02\x02\u1F6F\u1F78\x05\u0332\u019A\x02" +
		"\u1F70\u1F71\x07\u035D\x02\x02\u1F71\u1F78\x07\u035C\x02\x02\u1F72\u1F73" +
		"\x07\u035E\x02\x02\u1F73\u1F78\x07\u035B\x02\x02\u1F74\u1F75\x07\u035D" +
		"\x02\x02\u1F75\u1F76\x07\u035B\x02\x02\u1F76\u1F78\x07\u035C\x02\x02\u1F77" +
		"\u1F6F\x03\x02\x02\x02\u1F77\u1F70\x03\x02\x02\x02\u1F77\u1F72\x03\x02" +
		"\x02\x02\u1F77\u1F74\x03\x02\x02\x02\u1F78\u0331\x03\x02\x02\x02\u1F79" +
		"\u1F81\x07\u035B\x02\x02\u1F7A\u1F81\x07\u035C\x02\x02\u1F7B\u1F81\x07" +
		"\u035D\x02\x02\u1F7C\u1F7D\x07\u035D\x02\x02\u1F7D\u1F81\x07\u035B\x02" +
		"\x02\u1F7E\u1F7F\x07\u035C\x02\x02\u1F7F\u1F81\x07\u035B\x02\x02\u1F80" +
		"\u1F79\x03\x02\x02\x02\u1F80\u1F7A\x03\x02\x02\x02\u1F80\u1F7B\x03\x02" +
		"\x02\x02\u1F80\u1F7C\x03\x02\x02\x02\u1F80\u1F7E\x03\x02\x02\x02\u1F81" +
		"\u0333\x03\x02\x02\x02\u1F82\u1F8A\x07\r\x02\x02\u1F83\u1F84\x07\u0361" +
		"\x02\x02\u1F84\u1F8A\x07\u0361\x02\x02\u1F85\u1F8A\x07\xC6\x02\x02\u1F86" +
		"\u1F8A\x07~\x02\x02\u1F87\u1F88\x07\u0360\x02\x02\u1F88\u1F8A\x07\u0360" +
		"\x02\x02\u1F89\u1F82\x03\x02\x02\x02\u1F89\u1F83\x03\x02\x02\x02\u1F89" +
		"\u1F85\x03\x02\x02\x02\u1F89\u1F86\x03\x02\x02\x02\u1F89\u1F87\x03\x02" +
		"\x02\x02\u1F8A\u0335\x03\x02\x02\x02\u1F8B\u1F8C\x07\u035D\x02\x02\u1F8C" +
		"\u1F93\x07\u035D\x02\x02\u1F8D\u1F8E\x07\u035C\x02\x02\u1F8E\u1F93\x07" +
		"\u035C\x02\x02\u1F8F\u1F93\x07\u0361\x02\x02\u1F90\u1F93\x07\u0362\x02" +
		"\x02\u1F91\u1F93\x07\u0360\x02\x02\u1F92\u1F8B\x03\x02\x02\x02\u1F92\u1F8D" +
		"\x03\x02\x02\x02\u1F92\u1F8F\x03\x02\x02\x02\u1F92\u1F90\x03\x02\x02\x02" +
		"\u1F92\u1F91\x03\x02\x02\x02\u1F93\u0337\x03\x02\x02\x02\u1F94\u1F95\t" +
		"\x9A\x02\x02\u1F95\u0339\x03\x02\x02\x02\u1F96\u1F97\x07\u0358\x02\x02" +
		"\u1F97\u1F9C\x07\u035C\x02\x02\u1F98\u1F99\x07\u0358\x02\x02\u1F99\u1F9A" +
		"\x07\u035C\x02\x02\u1F9A\u1F9C\x07\u035C\x02\x02\u1F9B\u1F96\x03\x02\x02" +
		"\x02\u1F9B\u1F98\x03\x02\x02\x02\u1F9C\u033B\x03\x02\x02\x02\u1F9D\u1F9E" +
		"\t\x9B\x02\x02\u1F9E\u033D\x03\x02\x02\x02\u1F9F\u1FA0\t\x9C\x02\x02\u1FA0" +
		"\u033F\x03\x02\x02\x02\u1FA1\u1FA2\t\x9D\x02\x02\u1FA2\u0341\x03\x02\x02" +
		"\x02\u1FA3\u1FA4\t\x9E\x02\x02\u1FA4\u0343\x03\x02\x02\x02\u1FA5\u1FA6" +
		"\t\x9F\x02\x02\u1FA6\u0345\x03\x02\x02\x02\u1FA7\u1FA8\t\xA0\x02\x02\u1FA8" +
		"\u0347\x03\x02\x02\x02\u1FA9\u1FAA\t\xA1\x02\x02\u1FAA\u0349\x03\x02\x02" +
		"\x02\u0495\u034D\u0354\u0357\u0360\u038B\u039E\u03A9\u03B9\u03BE\u03CA" +
		"\u03ED\u03F7\u03FC\u0402\u0407\u040B\u0414\u0417\u041A\u041E\u0425\u0428" +
		"\u042D\u0435\u043A\u043F\u0442\u0444\u0450\u0453\u0457\u045A\u045E\u0461" +
		"\u0465\u0468\u046B\u046F\u0472\u0476\u047C\u0480\u0485\u048B\u0492\u049A" +
		"\u04AC\u04B3\u04B7\u04BD\u04C2\u04C5\u04C8\u04CC\u04D0\u04D4\u04D8\u04DD" +
		"\u04E0\u04E3\u04E6\u04E9\u04EF\u04F3\u04FD\u04FF\u0503\u050A\u050E\u0511" +
		"\u0516\u051A\u051D\u0521\u0524\u0528\u0535\u0538\u053C\u053F\u0543\u0546" +
		"\u054A\u054D\u0551\u0554\u0557\u055B\u055E\u0562\u0568\u056C\u0578\u057E" +
		"\u0589\u058E\u0596\u059A\u059F\u05A2\u05A7\u05AF\u05B4\u05BA\u05BF\u05C3" +
		"\u05C5\u05C8\u05CC\u05D0\u05D3\u05D7\u05DB\u05DF\u05E5\u05E8\u05EF\u05F4" +
		"\u05FA\u0601\u0607\u060F\u0612\u0619\u061C\u061E\u0624\u062A\u063B\u0642" +
		"\u0649\u0655\u065A\u065D\u0660\u066A\u0677\u067C\u068C\u0694\u069E\u06A1" +
		"\u06A7\u06AC\u06AF\u06B5\u06B9\u06BE\u06C4\u06C8\u06CC\u06CF\u06D2\u06D8" +
		"\u06DC\u06E1\u06EC\u06EF\u06F6\u06F9\u06FD\u0703\u070F\u0712\u0717\u0724" +
		"\u072B\u0731\u0736\u073A\u073D\u0745\u074D\u074F\u0759\u075D\u0760\u0764" +
		"\u0769\u076E\u0773\u0777\u077B\u077F\u0783\u0787\u078B\u0790\u0795\u079A" +
		"\u07A0\u07A5\u07AA\u07AF\u07B4\u07B9\u07BF\u07C4\u07C9\u07CE\u07D3\u07D8" +
		"\u07DD\u07E2\u07E9\u07EE\u07F3\u07F8\u07FC\u0801\u0809\u080E\u0814\u0820" +
		"\u0827\u0829\u0831\u0836\u0839\u0841\u0847\u084B\u0858\u0864\u0866\u0869" +
		"\u0871\u0877\u087D\u088A\u0891\u089A\u089F\u08AA\u08B3\u08B8\u08C4\u08CB" +
		"\u08D4\u08D9\u08E5\u08EC\u08F5\u08FA\u0901\u090A\u090F\u0911\u0916\u091E" +
		"\u0927\u092B\u092E\u0932\u0937\u093D\u0943\u0948\u094D\u0952\u0957\u095A" +
		"\u095F\u0964\u096E\u0972\u0979\u097E\u0981\u0986\u0989\u098D\u0991\u0999" +
		"\u09AC\u09AF\u09B2\u09B6\u09C0\u09CD\u09DA\u09DD\u09E3\u09E6\u09EA\u09F3" +
		"\u09F6\u09F9\u09FE\u0A02\u0A05\u0A09\u0A0D\u0A10\u0A14\u0A17\u0A1B\u0A1E" +
		"\u0A24\u0A27\u0A2C\u0A34\u0A3A\u0A3E\u0A42\u0A47\u0A4C\u0A53\u0A57\u0A62" +
		"\u0A6A\u0A6D\u0A73\u0A79\u0A7C\u0A82\u0A88\u0A8A\u0A8F\u0A95\u0A9B\u0A9D" +
		"\u0AA1\u0AA4\u0AA7\u0AAD\u0AB3\u0AB5\u0ABA\u0AC1\u0ACA\u0ACD\u0AD1\u0AD6" +
		"\u0AE0\u0AE9\u0AF1\u0AF4\u0AFC\u0AFF\u0B06\u0B0B\u0B13\u0B23\u0B28\u0B2F" +
		"\u0B42\u0B48\u0B52\u0B5E\u0B65\u0B6C\u0B7B\u0B88\u0B8E\u0B94\u0B9A\u0BA0" +
		"\u0BA6\u0BAC\u0BB1\u0BB8\u0BBF\u0BC6\u0BCB\u0BCE\u0BD0\u0BD9\u0BE0\u0BE7" +
		"\u0BEE\u0BF7\u0BFD\u0C01\u0C05\u0C09\u0C0F\u0C12\u0C17\u0C1E\u0C25\u0C29" +
		"\u0C2E\u0C38\u0C40\u0C46\u0C4F\u0C58\u0C61\u0C64\u0C68\u0C71\u0C75\u0C78" +
		"\u0C7B\u0C81\u0C84\u0C87\u0C8B\u0C8E\u0C91\u0C94\u0C9F\u0CA2\u0CA7\u0CAD" +
		"\u0CB2\u0CB7\u0CBA\u0CBE\u0CC3\u0CC6\u0CCB\u0CD5\u0CDA\u0CE0\u0CE2\u0CE8" +
		"\u0CEA\u0CF0\u0CF8\u0CFD\u0D05\u0D08\u0D0D\u0D10\u0D15\u0D1D\u0D23\u0D27" +
		"\u0D29\u0D2F\u0D37\u0D3C\u0D44\u0D47\u0D4C\u0D4F\u0D53\u0D56\u0D59\u0D5D" +
		"\u0D60\u0D68\u0D6E\u0D72\u0D76\u0D7A\u0D7D\u0D81\u0D87\u0D8B\u0D8F\u0D91" +
		"\u0D94\u0D97\u0D9A\u0DA0\u0DA4\u0DA7\u0DAA\u0DAD\u0DB0\u0DB7\u0DB9\u0DBC" +
		"\u0DC0\u0DC3\u0DC6\u0DCE\u0DD4\u0DD7\u0DD9\u0DE2\u0DE7\u0DEE\u0DF1\u0DF4" +
		"\u0DF8\u0DFC\u0E02\u0E06\u0E0D\u0E11\u0E14\u0E17\u0E1C\u0E23\u0E2D\u0E36" +
		"\u0E3F\u0E49\u0E4C\u0E50\u0E56\u0E5A\u0E5D\u0E60\u0E65\u0E68\u0E6F\u0E73" +
		"\u0E76\u0E7A\u0E7E\u0E81\u0E84\u0E89\u0E8F\u0E93\u0E9D\u0EA3\u0EA7\u0EAD" +
		"\u0EB1\u0EB7\u0EBA\u0EC6\u0ECA\u0ECE\u0ED6\u0EDA\u0EE8\u0EED\u0EF0\u0EF4" +
		"\u0EF7\u0EFF\u0F04\u0F07\u0F0A\u0F0E\u0F11\u0F1A\u0F1F\u0F28\u0F2D\u0F34" +
		"\u0F3B\u0F43\u0F49\u0F51\u0F54\u0F57\u0F5E\u0F61\u0F64\u0F6B\u0F6E\u0F72" +
		"\u0F78\u0F82\u0F86\u0F8F\u0F92\u0F96\u0F9C\u0FA4\u0FA9\u0FAD\u0FB3\u0FB9" +
		"\u0FBC\u0FBE\u0FC2\u0FCB\u0FD5\u0FDF\u0FE5\u0FEA\u0FEE\u0FF1\u0FF4\u0FF7" +
		"\u0FFA\u1000\u1006\u1009\u100C\u100F\u1012\u1015\u1017\u101D\u1023\u1026" +
		"\u1029\u102C\u102F\u1033\u1039\u103D\u1045\u1049\u104C\u104E\u105B\u105E" +
		"\u1065\u106F\u1072\u1077\u1079\u107D\u1085\u108B\u1094\u10A1\u10A5\u10AB" +
		"\u10B4\u10B7\u10BB\u10BE\u10C2\u10C6\u10C9\u10CB\u10D3\u10DF\u10E5\u10E7" +
		"\u10ED\u10EF\u10F1\u10F7\u10FF\u1107\u110B\u110F\u1118\u111D\u1131\u1136" +
		"\u113C\u1143\u1148\u1151\u1154\u1158\u115C\u1160\u1163\u1166\u1169\u116D" +
		"\u1171\u1174\u1177\u117A\u1181\u1185\u1194\u11A1\u11A9\u11B3\u11B7\u11BA" +
		"\u11C0\u11C3\u11C6\u11CF\u11D8\u11E2\u11E6\u11F0\u11F4\u11FF\u1203\u120C" +
		"\u1215\u1218\u121C\u1221\u1225\u122E\u1231\u1234\u123B\u1241\u1247\u1261" +
		"\u1264\u1267\u127A\u127C\u1293\u1296\u1299\u12AC\u12AE\u12BC\u12C9\u12EE" +
		"\u12F3\u1316\u1324\u132B\u132F\u1335\u133D\u133F\u134A\u1354\u135B\u1361" +
		"\u1369\u136E\u1376\u137E\u1386\u138E\u1394\u1399\u139E\u13A3\u13A9\u13AB" +
		"\u13B6\u13BB\u13C2\u13C4\u13D2\u13D8\u13DD\u13E2\u13E8\u13EF\u13F7\u13FF" +
		"\u1404\u140A\u140D\u1415\u141C\u1425\u1428\u1439\u1441\u1449\u144D\u1454" +
		"\u145A\u1462\u1467\u146E\u1476\u147D\u1482\u1485\u1487\u148D\u148F\u1493" +
		"\u1495\u149A\u14A1\u14A6\u14AA\u14AF\u14B3\u14B9\u14BF\u14C4\u14C7\u14C9" +
		"\u14CF\u14D1\u14D5\u14D7\u14DC\u14E1\u14E8\u14F1\u14F6\u14FF\u1503\u1509" +
		"\u150E\u1511\u1513\u1519\u151B\u151E\u1525\u1527\u152C\u1533\u153C\u1542" +
		"\u1544\u154B\u154E\u155A\u1560\u1568\u156B\u156F\u1572\u1576\u1578\u1583" +
		"\u1586\u158A\u158D\u1590\u1597\u15A3\u15A6\u15AD\u15B3\u15BD\u15C2\u15C9" +
		"\u15CE\u15D4\u15D8\u15DC\u15E4\u15E8\u15EC\u15F2\u15F4\u1600\u1605\u160B" +
		"\u1611\u1615\u161A\u161C\u163C\u1640\u1644\u1647\u1650\u1654\u165D\u1661" +
		"\u1665\u166B\u166D\u1676\u1680\u169B\u169F\u16A4\u16AB\u16AE\u16B4\u16BE" +
		"\u16C8\u16D2\u16D8\u16E1\u16E7\u16EE\u16F0\u16F8\u16FE\u1702\u1713\u171D" +
		"\u1721\u1725\u172F\u1734\u177C\u178E\u1796\u179C\u17A8\u17AC\u17B7\u17BB" +
		"\u17C4\u17CC\u17D3\u17D7\u17DE\u17E3\u17E6\u17E9\u17F4\u17F8\u17FC\u180B" +
		"\u1814\u1817\u1825\u1837\u1844\u1847\u184B\u184E\u1850\u1857\u185E\u1862" +
		"\u1869\u1870\u1873\u1883\u1886\u1890\u1894\u189A\u189D\u18A0\u18A5\u18A9" +
		"\u18AC\u18B3\u18B6\u18BC\u18E0\u18E3\u18EF\u18F2\u1902\u1904\u1908\u190F" +
		"\u1913\u191A\u191D\u1926\u1929\u192E\u1934\u1936\u193C\u1940\u1946\u1949" +
		"\u194C\u1959\u195C\u1962\u1965\u196D\u1975\u197B\u197E\u1982\u1990\u199C" +
		"\u19A4\u19A8\u19AF\u19B6\u19BB\u19C8\u19D1\u19D9\u19DE\u19E1\u19E6\u19E9" +
		"\u19F5\u19FA\u1A07\u1A09\u1A0E\u1A12\u1A15\u1A17\u1A1E\u1A25\u1A28\u1A2B" +
		"\u1A31\u1A35\u1A3B\u1A43\u1A4C\u1A59\u1A5E\u1A66\u1A69\u1A6E\u1A73\u1A7B" +
		"\u1A7E\u1A86\u1A8A\u1A91\u1A97\u1A9A\u1A9E\u1AAB\u1AB1\u1ABD\u1AC0\u1AC9" +
		"\u1ACE\u1AE3\u1AF3\u1AFD\u1B02\u1B07\u1B09\u1B0C\u1B10\u1B12\u1B19\u1B1F" +
		"\u1B21\u1B24\u1B28\u1B2A\u1B37\u1B41\u1B44\u1B47\u1B54\u1B5A\u1B5D\u1B65" +
		"\u1B6C\u1B80\u1B87\u1B89\u1B90\u1B92\u1B96\u1B9D\u1BA3\u1BAE\u1BB4\u1BBA" +
		"\u1BBD\u1BC1\u1BC6\u1BC9\u1BCD\u1BD1\u1BD3\u1BD8\u1BDD\u1BEA\u1BED\u1BF1" +
		"\u1BF4\u1BF7\u1BFC\u1C01\u1C07\u1C0A\u1C0F\u1C12\u1C17\u1C1A\u1C1E\u1C23" +
		"\u1C28\u1C2D\u1C32\u1C35\u1C3A\u1C3F\u1C44\u1C4A\u1C4F\u1C54\u1C59\u1C5D" +
		"\u1C60\u1C65\u1C69\u1C6D\u1C75\u1C7C\u1C80\u1C85\u1C8A\u1C8E\u1C90\u1C93" +
		"\u1CA3\u1CAD\u1CB7\u1CC0\u1CC9\u1CD0\u1CD7\u1CDF\u1CE7\u1CF3\u1CFA\u1D04" +
		"\u1D09\u1D0C\u1D11\u1D14\u1D26\u1D2D\u1D32\u1D37\u1D59\u1D5D\u1D65\u1D69" +
		"\u1D72\u1D7A\u1D7F\u1D87\u1D8C\u1D91\u1D93\u1D9C\u1DA1\u1DA9\u1DAE\u1DB6" +
		"\u1DBE\u1DC1\u1DCB\u1DDD\u1DE0\u1DE3\u1DE7\u1DF4\u1DFC\u1E00\u1E05\u1E0A" +
		"\u1E10\u1E15\u1E19\u1E1E\u1E23\u1E28\u1E32\u1E35\u1E39\u1E3D\u1E44\u1E48" +
		"\u1E65\u1E6D\u1E70\u1E73\u1E76\u1E79\u1E84\u1E92\u1E9B\u1EB6\u1EC2\u1EC9" +
		"\u1ED1\u1ED6\u1EDE\u1EEA\u1EF7\u1EFD\u1F03\u1F13\u1F19\u1F22\u1F24\u1F3A" +
		"\u1F46\u1F57\u1F68\u1F6A\u1F77\u1F80\u1F89\u1F92\u1F9B";
	public static readonly _serializedATN: string = Utils.join(
		[
			MySqlParser._serializedATNSegment0,
			MySqlParser._serializedATNSegment1,
			MySqlParser._serializedATNSegment2,
			MySqlParser._serializedATNSegment3,
			MySqlParser._serializedATNSegment4,
			MySqlParser._serializedATNSegment5,
			MySqlParser._serializedATNSegment6,
			MySqlParser._serializedATNSegment7,
			MySqlParser._serializedATNSegment8,
			MySqlParser._serializedATNSegment9,
			MySqlParser._serializedATNSegment10,
			MySqlParser._serializedATNSegment11,
			MySqlParser._serializedATNSegment12,
			MySqlParser._serializedATNSegment13,
			MySqlParser._serializedATNSegment14,
			MySqlParser._serializedATNSegment15,
		],
		"",
	);
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!MySqlParser.__ATN) {
			MySqlParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(MySqlParser._serializedATN));
		}

		return MySqlParser.__ATN;
	}

}

export class ProgramContext extends ParserRuleContext {
	public EOF(): TerminalNode { return this.getToken(MySqlParser.EOF, 0); }
	public singleStatement(): SingleStatementContext[];
	public singleStatement(i: number): SingleStatementContext;
	public singleStatement(i?: number): SingleStatementContext | SingleStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SingleStatementContext);
		} else {
			return this.getRuleContext(i, SingleStatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_program; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterProgram) {
			listener.enterProgram(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitProgram) {
			listener.exitProgram(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitProgram) {
			return visitor.visitProgram(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleStatementContext extends ParserRuleContext {
	public sqlStatement(): SqlStatementContext | undefined {
		return this.tryGetRuleContext(0, SqlStatementContext);
	}
	public SEMI(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.SEMI, 0); }
	public emptyStatement_(): EmptyStatement_Context | undefined {
		return this.tryGetRuleContext(0, EmptyStatement_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_singleStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSingleStatement) {
			listener.enterSingleStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSingleStatement) {
			listener.exitSingleStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSingleStatement) {
			return visitor.visitSingleStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SqlStatementContext extends ParserRuleContext {
	public ddlStatement(): DdlStatementContext | undefined {
		return this.tryGetRuleContext(0, DdlStatementContext);
	}
	public dmlStatement(): DmlStatementContext | undefined {
		return this.tryGetRuleContext(0, DmlStatementContext);
	}
	public transactionStatement(): TransactionStatementContext | undefined {
		return this.tryGetRuleContext(0, TransactionStatementContext);
	}
	public replicationStatement(): ReplicationStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplicationStatementContext);
	}
	public preparedStatement(): PreparedStatementContext | undefined {
		return this.tryGetRuleContext(0, PreparedStatementContext);
	}
	public administrationStatement(): AdministrationStatementContext | undefined {
		return this.tryGetRuleContext(0, AdministrationStatementContext);
	}
	public utilityStatement(): UtilityStatementContext | undefined {
		return this.tryGetRuleContext(0, UtilityStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_sqlStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSqlStatement) {
			listener.enterSqlStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSqlStatement) {
			listener.exitSqlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSqlStatement) {
			return visitor.visitSqlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EmptyStatement_Context extends ParserRuleContext {
	public SEMI(): TerminalNode { return this.getToken(MySqlParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_emptyStatement_; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterEmptyStatement_) {
			listener.enterEmptyStatement_(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitEmptyStatement_) {
			listener.exitEmptyStatement_(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitEmptyStatement_) {
			return visitor.visitEmptyStatement_(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DdlStatementContext extends ParserRuleContext {
	public createDatabase(): CreateDatabaseContext | undefined {
		return this.tryGetRuleContext(0, CreateDatabaseContext);
	}
	public createEvent(): CreateEventContext | undefined {
		return this.tryGetRuleContext(0, CreateEventContext);
	}
	public createIndex(): CreateIndexContext | undefined {
		return this.tryGetRuleContext(0, CreateIndexContext);
	}
	public createLogfileGroup(): CreateLogfileGroupContext | undefined {
		return this.tryGetRuleContext(0, CreateLogfileGroupContext);
	}
	public createProcedure(): CreateProcedureContext | undefined {
		return this.tryGetRuleContext(0, CreateProcedureContext);
	}
	public createFunction(): CreateFunctionContext | undefined {
		return this.tryGetRuleContext(0, CreateFunctionContext);
	}
	public createServer(): CreateServerContext | undefined {
		return this.tryGetRuleContext(0, CreateServerContext);
	}
	public createTable(): CreateTableContext | undefined {
		return this.tryGetRuleContext(0, CreateTableContext);
	}
	public createTablespaceInnodb(): CreateTablespaceInnodbContext | undefined {
		return this.tryGetRuleContext(0, CreateTablespaceInnodbContext);
	}
	public createTablespaceNdb(): CreateTablespaceNdbContext | undefined {
		return this.tryGetRuleContext(0, CreateTablespaceNdbContext);
	}
	public createTrigger(): CreateTriggerContext | undefined {
		return this.tryGetRuleContext(0, CreateTriggerContext);
	}
	public createView(): CreateViewContext | undefined {
		return this.tryGetRuleContext(0, CreateViewContext);
	}
	public createRole(): CreateRoleContext | undefined {
		return this.tryGetRuleContext(0, CreateRoleContext);
	}
	public alterDatabase(): AlterDatabaseContext | undefined {
		return this.tryGetRuleContext(0, AlterDatabaseContext);
	}
	public alterEvent(): AlterEventContext | undefined {
		return this.tryGetRuleContext(0, AlterEventContext);
	}
	public alterFunction(): AlterFunctionContext | undefined {
		return this.tryGetRuleContext(0, AlterFunctionContext);
	}
	public alterInstance(): AlterInstanceContext | undefined {
		return this.tryGetRuleContext(0, AlterInstanceContext);
	}
	public alterLogfileGroup(): AlterLogfileGroupContext | undefined {
		return this.tryGetRuleContext(0, AlterLogfileGroupContext);
	}
	public alterProcedure(): AlterProcedureContext | undefined {
		return this.tryGetRuleContext(0, AlterProcedureContext);
	}
	public alterServer(): AlterServerContext | undefined {
		return this.tryGetRuleContext(0, AlterServerContext);
	}
	public alterTable(): AlterTableContext | undefined {
		return this.tryGetRuleContext(0, AlterTableContext);
	}
	public alterTablespace(): AlterTablespaceContext | undefined {
		return this.tryGetRuleContext(0, AlterTablespaceContext);
	}
	public alterView(): AlterViewContext | undefined {
		return this.tryGetRuleContext(0, AlterViewContext);
	}
	public dropDatabase(): DropDatabaseContext | undefined {
		return this.tryGetRuleContext(0, DropDatabaseContext);
	}
	public dropEvent(): DropEventContext | undefined {
		return this.tryGetRuleContext(0, DropEventContext);
	}
	public dropIndex(): DropIndexContext | undefined {
		return this.tryGetRuleContext(0, DropIndexContext);
	}
	public dropLogfileGroup(): DropLogfileGroupContext | undefined {
		return this.tryGetRuleContext(0, DropLogfileGroupContext);
	}
	public dropProcedure(): DropProcedureContext | undefined {
		return this.tryGetRuleContext(0, DropProcedureContext);
	}
	public dropFunction(): DropFunctionContext | undefined {
		return this.tryGetRuleContext(0, DropFunctionContext);
	}
	public dropServer(): DropServerContext | undefined {
		return this.tryGetRuleContext(0, DropServerContext);
	}
	public dropSpatial(): DropSpatialContext | undefined {
		return this.tryGetRuleContext(0, DropSpatialContext);
	}
	public dropTable(): DropTableContext | undefined {
		return this.tryGetRuleContext(0, DropTableContext);
	}
	public dropTablespace(): DropTablespaceContext | undefined {
		return this.tryGetRuleContext(0, DropTablespaceContext);
	}
	public dropTrigger(): DropTriggerContext | undefined {
		return this.tryGetRuleContext(0, DropTriggerContext);
	}
	public dropView(): DropViewContext | undefined {
		return this.tryGetRuleContext(0, DropViewContext);
	}
	public dropRole(): DropRoleContext | undefined {
		return this.tryGetRuleContext(0, DropRoleContext);
	}
	public setRole(): SetRoleContext | undefined {
		return this.tryGetRuleContext(0, SetRoleContext);
	}
	public renameTable(): RenameTableContext | undefined {
		return this.tryGetRuleContext(0, RenameTableContext);
	}
	public truncateTable(): TruncateTableContext | undefined {
		return this.tryGetRuleContext(0, TruncateTableContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_ddlStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDdlStatement) {
			listener.enterDdlStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDdlStatement) {
			listener.exitDdlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDdlStatement) {
			return visitor.visitDdlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DmlStatementContext extends ParserRuleContext {
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public setOperations(): SetOperationsContext | undefined {
		return this.tryGetRuleContext(0, SetOperationsContext);
	}
	public insertStatement(): InsertStatementContext | undefined {
		return this.tryGetRuleContext(0, InsertStatementContext);
	}
	public updateStatement(): UpdateStatementContext | undefined {
		return this.tryGetRuleContext(0, UpdateStatementContext);
	}
	public deleteStatement(): DeleteStatementContext | undefined {
		return this.tryGetRuleContext(0, DeleteStatementContext);
	}
	public replaceStatement(): ReplaceStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplaceStatementContext);
	}
	public callStatement(): CallStatementContext | undefined {
		return this.tryGetRuleContext(0, CallStatementContext);
	}
	public interSectStatement(): InterSectStatementContext | undefined {
		return this.tryGetRuleContext(0, InterSectStatementContext);
	}
	public loadDataStatement(): LoadDataStatementContext | undefined {
		return this.tryGetRuleContext(0, LoadDataStatementContext);
	}
	public loadXmlStatement(): LoadXmlStatementContext | undefined {
		return this.tryGetRuleContext(0, LoadXmlStatementContext);
	}
	public parenthesizedQuery(): ParenthesizedQueryContext | undefined {
		return this.tryGetRuleContext(0, ParenthesizedQueryContext);
	}
	public doStatement(): DoStatementContext | undefined {
		return this.tryGetRuleContext(0, DoStatementContext);
	}
	public handlerStatement(): HandlerStatementContext | undefined {
		return this.tryGetRuleContext(0, HandlerStatementContext);
	}
	public importTableStatement(): ImportTableStatementContext | undefined {
		return this.tryGetRuleContext(0, ImportTableStatementContext);
	}
	public valuesStatement(): ValuesStatementContext | undefined {
		return this.tryGetRuleContext(0, ValuesStatementContext);
	}
	public withStatement(): WithStatementContext | undefined {
		return this.tryGetRuleContext(0, WithStatementContext);
	}
	public tableStatement(): TableStatementContext | undefined {
		return this.tryGetRuleContext(0, TableStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dmlStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDmlStatement) {
			listener.enterDmlStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDmlStatement) {
			listener.exitDmlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDmlStatement) {
			return visitor.visitDmlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionStatementContext extends ParserRuleContext {
	public startTransaction(): StartTransactionContext | undefined {
		return this.tryGetRuleContext(0, StartTransactionContext);
	}
	public beginWork(): BeginWorkContext | undefined {
		return this.tryGetRuleContext(0, BeginWorkContext);
	}
	public commitWork(): CommitWorkContext | undefined {
		return this.tryGetRuleContext(0, CommitWorkContext);
	}
	public rollbackWork(): RollbackWorkContext | undefined {
		return this.tryGetRuleContext(0, RollbackWorkContext);
	}
	public savepointStatement(): SavepointStatementContext | undefined {
		return this.tryGetRuleContext(0, SavepointStatementContext);
	}
	public rollbackStatement(): RollbackStatementContext | undefined {
		return this.tryGetRuleContext(0, RollbackStatementContext);
	}
	public releaseStatement(): ReleaseStatementContext | undefined {
		return this.tryGetRuleContext(0, ReleaseStatementContext);
	}
	public lockTables(): LockTablesContext | undefined {
		return this.tryGetRuleContext(0, LockTablesContext);
	}
	public unlockTables(): UnlockTablesContext | undefined {
		return this.tryGetRuleContext(0, UnlockTablesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_transactionStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTransactionStatement) {
			listener.enterTransactionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTransactionStatement) {
			listener.exitTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionStatement) {
			return visitor.visitTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplicationStatementContext extends ParserRuleContext {
	public changeMaster(): ChangeMasterContext | undefined {
		return this.tryGetRuleContext(0, ChangeMasterContext);
	}
	public changeReplicationFilter(): ChangeReplicationFilterContext | undefined {
		return this.tryGetRuleContext(0, ChangeReplicationFilterContext);
	}
	public changeReplicationSource(): ChangeReplicationSourceContext | undefined {
		return this.tryGetRuleContext(0, ChangeReplicationSourceContext);
	}
	public purgeBinaryLogs(): PurgeBinaryLogsContext | undefined {
		return this.tryGetRuleContext(0, PurgeBinaryLogsContext);
	}
	public startSlaveOrReplica(): StartSlaveOrReplicaContext | undefined {
		return this.tryGetRuleContext(0, StartSlaveOrReplicaContext);
	}
	public stopSlaveOrReplica(): StopSlaveOrReplicaContext | undefined {
		return this.tryGetRuleContext(0, StopSlaveOrReplicaContext);
	}
	public startGroupReplication(): StartGroupReplicationContext | undefined {
		return this.tryGetRuleContext(0, StartGroupReplicationContext);
	}
	public stopGroupReplication(): StopGroupReplicationContext | undefined {
		return this.tryGetRuleContext(0, StopGroupReplicationContext);
	}
	public xaStartTransaction(): XaStartTransactionContext | undefined {
		return this.tryGetRuleContext(0, XaStartTransactionContext);
	}
	public xaEndTransaction(): XaEndTransactionContext | undefined {
		return this.tryGetRuleContext(0, XaEndTransactionContext);
	}
	public xaPrepareStatement(): XaPrepareStatementContext | undefined {
		return this.tryGetRuleContext(0, XaPrepareStatementContext);
	}
	public xaCommitWork(): XaCommitWorkContext | undefined {
		return this.tryGetRuleContext(0, XaCommitWorkContext);
	}
	public xaRollbackWork(): XaRollbackWorkContext | undefined {
		return this.tryGetRuleContext(0, XaRollbackWorkContext);
	}
	public xaRecoverWork(): XaRecoverWorkContext | undefined {
		return this.tryGetRuleContext(0, XaRecoverWorkContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_replicationStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReplicationStatement) {
			listener.enterReplicationStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReplicationStatement) {
			listener.exitReplicationStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReplicationStatement) {
			return visitor.visitReplicationStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PreparedStatementContext extends ParserRuleContext {
	public prepareStatement(): PrepareStatementContext | undefined {
		return this.tryGetRuleContext(0, PrepareStatementContext);
	}
	public executeStatement(): ExecuteStatementContext | undefined {
		return this.tryGetRuleContext(0, ExecuteStatementContext);
	}
	public deallocatePrepare(): DeallocatePrepareContext | undefined {
		return this.tryGetRuleContext(0, DeallocatePrepareContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_preparedStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPreparedStatement) {
			listener.enterPreparedStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPreparedStatement) {
			listener.exitPreparedStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPreparedStatement) {
			return visitor.visitPreparedStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompoundStatementContext extends ParserRuleContext {
	public blockStatement(): BlockStatementContext | undefined {
		return this.tryGetRuleContext(0, BlockStatementContext);
	}
	public caseStatement(): CaseStatementContext | undefined {
		return this.tryGetRuleContext(0, CaseStatementContext);
	}
	public ifStatement(): IfStatementContext | undefined {
		return this.tryGetRuleContext(0, IfStatementContext);
	}
	public leaveStatement(): LeaveStatementContext | undefined {
		return this.tryGetRuleContext(0, LeaveStatementContext);
	}
	public loopStatement(): LoopStatementContext | undefined {
		return this.tryGetRuleContext(0, LoopStatementContext);
	}
	public repeatStatement(): RepeatStatementContext | undefined {
		return this.tryGetRuleContext(0, RepeatStatementContext);
	}
	public whileStatement(): WhileStatementContext | undefined {
		return this.tryGetRuleContext(0, WhileStatementContext);
	}
	public iterateStatement(): IterateStatementContext | undefined {
		return this.tryGetRuleContext(0, IterateStatementContext);
	}
	public returnStatement(): ReturnStatementContext | undefined {
		return this.tryGetRuleContext(0, ReturnStatementContext);
	}
	public cursorStatement(): CursorStatementContext | undefined {
		return this.tryGetRuleContext(0, CursorStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_compoundStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCompoundStatement) {
			listener.enterCompoundStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCompoundStatement) {
			listener.exitCompoundStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCompoundStatement) {
			return visitor.visitCompoundStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AdministrationStatementContext extends ParserRuleContext {
	public alterUser(): AlterUserContext | undefined {
		return this.tryGetRuleContext(0, AlterUserContext);
	}
	public createUser(): CreateUserContext | undefined {
		return this.tryGetRuleContext(0, CreateUserContext);
	}
	public dropUser(): DropUserContext | undefined {
		return this.tryGetRuleContext(0, DropUserContext);
	}
	public grantStatement(): GrantStatementContext | undefined {
		return this.tryGetRuleContext(0, GrantStatementContext);
	}
	public grantProxy(): GrantProxyContext | undefined {
		return this.tryGetRuleContext(0, GrantProxyContext);
	}
	public renameUser(): RenameUserContext | undefined {
		return this.tryGetRuleContext(0, RenameUserContext);
	}
	public revokeStatement(): RevokeStatementContext | undefined {
		return this.tryGetRuleContext(0, RevokeStatementContext);
	}
	public alterResourceGroup(): AlterResourceGroupContext | undefined {
		return this.tryGetRuleContext(0, AlterResourceGroupContext);
	}
	public createResourceGroup(): CreateResourceGroupContext | undefined {
		return this.tryGetRuleContext(0, CreateResourceGroupContext);
	}
	public dropResourceGroup(): DropResourceGroupContext | undefined {
		return this.tryGetRuleContext(0, DropResourceGroupContext);
	}
	public setResourceGroup(): SetResourceGroupContext | undefined {
		return this.tryGetRuleContext(0, SetResourceGroupContext);
	}
	public analyzeTable(): AnalyzeTableContext | undefined {
		return this.tryGetRuleContext(0, AnalyzeTableContext);
	}
	public checkTable(): CheckTableContext | undefined {
		return this.tryGetRuleContext(0, CheckTableContext);
	}
	public checksumTable(): ChecksumTableContext | undefined {
		return this.tryGetRuleContext(0, ChecksumTableContext);
	}
	public optimizeTable(): OptimizeTableContext | undefined {
		return this.tryGetRuleContext(0, OptimizeTableContext);
	}
	public repairTable(): RepairTableContext | undefined {
		return this.tryGetRuleContext(0, RepairTableContext);
	}
	public installComponent(): InstallComponentContext | undefined {
		return this.tryGetRuleContext(0, InstallComponentContext);
	}
	public uninstallComponent(): UninstallComponentContext | undefined {
		return this.tryGetRuleContext(0, UninstallComponentContext);
	}
	public installPlugin(): InstallPluginContext | undefined {
		return this.tryGetRuleContext(0, InstallPluginContext);
	}
	public uninstallPlugin(): UninstallPluginContext | undefined {
		return this.tryGetRuleContext(0, UninstallPluginContext);
	}
	public cloneStatement(): CloneStatementContext | undefined {
		return this.tryGetRuleContext(0, CloneStatementContext);
	}
	public setStatement(): SetStatementContext | undefined {
		return this.tryGetRuleContext(0, SetStatementContext);
	}
	public showStatement(): ShowStatementContext | undefined {
		return this.tryGetRuleContext(0, ShowStatementContext);
	}
	public binlogStatement(): BinlogStatementContext | undefined {
		return this.tryGetRuleContext(0, BinlogStatementContext);
	}
	public cacheIndexStatement(): CacheIndexStatementContext | undefined {
		return this.tryGetRuleContext(0, CacheIndexStatementContext);
	}
	public flushStatement(): FlushStatementContext | undefined {
		return this.tryGetRuleContext(0, FlushStatementContext);
	}
	public killStatement(): KillStatementContext | undefined {
		return this.tryGetRuleContext(0, KillStatementContext);
	}
	public loadIndexIntoCache(): LoadIndexIntoCacheContext | undefined {
		return this.tryGetRuleContext(0, LoadIndexIntoCacheContext);
	}
	public resetStatement(): ResetStatementContext | undefined {
		return this.tryGetRuleContext(0, ResetStatementContext);
	}
	public resetPersist(): ResetPersistContext | undefined {
		return this.tryGetRuleContext(0, ResetPersistContext);
	}
	public resetAllChannel(): ResetAllChannelContext | undefined {
		return this.tryGetRuleContext(0, ResetAllChannelContext);
	}
	public reStartStatement(): ReStartStatementContext | undefined {
		return this.tryGetRuleContext(0, ReStartStatementContext);
	}
	public shutdownStatement(): ShutdownStatementContext | undefined {
		return this.tryGetRuleContext(0, ShutdownStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_administrationStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAdministrationStatement) {
			listener.enterAdministrationStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAdministrationStatement) {
			listener.exitAdministrationStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAdministrationStatement) {
			return visitor.visitAdministrationStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UtilityStatementContext extends ParserRuleContext {
	public simpleDescribeStatement(): SimpleDescribeStatementContext | undefined {
		return this.tryGetRuleContext(0, SimpleDescribeStatementContext);
	}
	public fullDescribeStatement(): FullDescribeStatementContext | undefined {
		return this.tryGetRuleContext(0, FullDescribeStatementContext);
	}
	public analyzeDescribeStatement(): AnalyzeDescribeStatementContext | undefined {
		return this.tryGetRuleContext(0, AnalyzeDescribeStatementContext);
	}
	public helpStatement(): HelpStatementContext | undefined {
		return this.tryGetRuleContext(0, HelpStatementContext);
	}
	public useStatement(): UseStatementContext | undefined {
		return this.tryGetRuleContext(0, UseStatementContext);
	}
	public signalStatement(): SignalStatementContext | undefined {
		return this.tryGetRuleContext(0, SignalStatementContext);
	}
	public resignalStatement(): ResignalStatementContext | undefined {
		return this.tryGetRuleContext(0, ResignalStatementContext);
	}
	public diagnosticsStatement(): DiagnosticsStatementContext | undefined {
		return this.tryGetRuleContext(0, DiagnosticsStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_utilityStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUtilityStatement) {
			listener.enterUtilityStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUtilityStatement) {
			listener.exitUtilityStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUtilityStatement) {
			return visitor.visitUtilityStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDatabaseContext extends ParserRuleContext {
	public _dbFormat!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public databaseNameCreate(): DatabaseNameCreateContext {
		return this.getRuleContext(0, DatabaseNameCreateContext);
	}
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public createDatabaseOption(): CreateDatabaseOptionContext[];
	public createDatabaseOption(i: number): CreateDatabaseOptionContext;
	public createDatabaseOption(i?: number): CreateDatabaseOptionContext | CreateDatabaseOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CreateDatabaseOptionContext);
		} else {
			return this.getRuleContext(i, CreateDatabaseOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createDatabase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateDatabase) {
			listener.enterCreateDatabase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateDatabase) {
			listener.exitCreateDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDatabase) {
			return visitor.visitCreateDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateEventContext extends ParserRuleContext {
	public _event_name!: FullIdContext;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_EVENT(): TerminalNode { return this.getToken(MySqlParser.KW_EVENT, 0); }
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ON);
		} else {
			return this.getToken(MySqlParser.KW_ON, i);
		}
	}
	public KW_SCHEDULE(): TerminalNode { return this.getToken(MySqlParser.KW_SCHEDULE, 0); }
	public scheduleExpression(): ScheduleExpressionContext {
		return this.getRuleContext(0, ScheduleExpressionContext);
	}
	public KW_DO(): TerminalNode { return this.getToken(MySqlParser.KW_DO, 0); }
	public routineBody(): RoutineBodyContext {
		return this.getRuleContext(0, RoutineBodyContext);
	}
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public ownerStatement(): OwnerStatementContext | undefined {
		return this.tryGetRuleContext(0, OwnerStatementContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public KW_COMPLETION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPLETION, 0); }
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRESERVE, 0); }
	public enableType(): EnableTypeContext | undefined {
		return this.tryGetRuleContext(0, EnableTypeContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createEvent; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateEvent) {
			listener.enterCreateEvent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateEvent) {
			listener.exitCreateEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateEvent) {
			return visitor.visitCreateEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateIndexContext extends ParserRuleContext {
	public _intimeAction!: Token;
	public _indexCategory!: Token;
	public _algType!: Token;
	public _lockType!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public indexNameCreate(): IndexNameCreateContext {
		return this.getRuleContext(0, IndexNameCreateContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getRuleContext(0, IndexColumnNamesContext);
	}
	public indexType(): IndexTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexTypeContext);
	}
	public indexOption(): IndexOptionContext[];
	public indexOption(i: number): IndexOptionContext;
	public indexOption(i?: number): IndexOptionContext | IndexOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexOptionContext);
		} else {
			return this.getRuleContext(i, IndexOptionContext);
		}
	}
	public KW_ALGORITHM(): TerminalNode[];
	public KW_ALGORITHM(i: number): TerminalNode;
	public KW_ALGORITHM(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ALGORITHM);
		} else {
			return this.getToken(MySqlParser.KW_ALGORITHM, i);
		}
	}
	public KW_LOCK(): TerminalNode[];
	public KW_LOCK(i: number): TerminalNode;
	public KW_LOCK(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_LOCK);
		} else {
			return this.getToken(MySqlParser.KW_LOCK, i);
		}
	}
	public KW_ONLINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLINE, 0); }
	public KW_OFFLINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFFLINE, 0); }
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNIQUE, 0); }
	public KW_FULLTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULLTEXT, 0); }
	public KW_SPATIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SPATIAL, 0); }
	public KW_DEFAULT(): TerminalNode[];
	public KW_DEFAULT(i: number): TerminalNode;
	public KW_DEFAULT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_DEFAULT);
		} else {
			return this.getToken(MySqlParser.KW_DEFAULT, i);
		}
	}
	public KW_INPLACE(): TerminalNode[];
	public KW_INPLACE(i: number): TerminalNode;
	public KW_INPLACE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_INPLACE);
		} else {
			return this.getToken(MySqlParser.KW_INPLACE, i);
		}
	}
	public KW_COPY(): TerminalNode[];
	public KW_COPY(i: number): TerminalNode;
	public KW_COPY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_COPY);
		} else {
			return this.getToken(MySqlParser.KW_COPY, i);
		}
	}
	public KW_NONE(): TerminalNode[];
	public KW_NONE(i: number): TerminalNode;
	public KW_NONE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_NONE);
		} else {
			return this.getToken(MySqlParser.KW_NONE, i);
		}
	}
	public KW_SHARED(): TerminalNode[];
	public KW_SHARED(i: number): TerminalNode;
	public KW_SHARED(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_SHARED);
		} else {
			return this.getToken(MySqlParser.KW_SHARED, i);
		}
	}
	public KW_EXCLUSIVE(): TerminalNode[];
	public KW_EXCLUSIVE(i: number): TerminalNode;
	public KW_EXCLUSIVE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_EXCLUSIVE);
		} else {
			return this.getToken(MySqlParser.KW_EXCLUSIVE, i);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createIndex; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateIndex) {
			listener.enterCreateIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateIndex) {
			listener.exitCreateIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateIndex) {
			return visitor.visitCreateIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateLogfileGroupContext extends ParserRuleContext {
	public _logfileGroupName!: UidContext;
	public _undoFile!: Token;
	public _initSize!: FileSizeLiteralContext;
	public _undoSize!: FileSizeLiteralContext;
	public _redoSize!: FileSizeLiteralContext;
	public _nodegroup!: UidContext;
	public _comment!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_LOGFILE(): TerminalNode { return this.getToken(MySqlParser.KW_LOGFILE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_UNDOFILE(): TerminalNode { return this.getToken(MySqlParser.KW_UNDOFILE, 0); }
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext {
		return this.getRuleContext(0, EngineNameContext);
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public KW_INITIAL_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INITIAL_SIZE, 0); }
	public KW_UNDO_BUFFER_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO_BUFFER_SIZE, 0); }
	public KW_REDO_BUFFER_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REDO_BUFFER_SIZE, 0); }
	public KW_NODEGROUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NODEGROUP, 0); }
	public KW_WAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WAIT, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public fileSizeLiteral(): FileSizeLiteralContext[];
	public fileSizeLiteral(i: number): FileSizeLiteralContext;
	public fileSizeLiteral(i?: number): FileSizeLiteralContext | FileSizeLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FileSizeLiteralContext);
		} else {
			return this.getRuleContext(i, FileSizeLiteralContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createLogfileGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateLogfileGroup) {
			listener.enterCreateLogfileGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateLogfileGroup) {
			listener.exitCreateLogfileGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateLogfileGroup) {
			return visitor.visitCreateLogfileGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateProcedureContext extends ParserRuleContext {
	public _sp_name!: FullIdContext;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_PROCEDURE(): TerminalNode { return this.getToken(MySqlParser.KW_PROCEDURE, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public routineBody(): RoutineBodyContext {
		return this.getRuleContext(0, RoutineBodyContext);
	}
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public ownerStatement(): OwnerStatementContext | undefined {
		return this.tryGetRuleContext(0, OwnerStatementContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public procedureParameter(): ProcedureParameterContext[];
	public procedureParameter(i: number): ProcedureParameterContext;
	public procedureParameter(i?: number): ProcedureParameterContext | ProcedureParameterContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureParameterContext);
		} else {
			return this.getRuleContext(i, ProcedureParameterContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public routineOption(): RoutineOptionContext[];
	public routineOption(i: number): RoutineOptionContext;
	public routineOption(i?: number): RoutineOptionContext | RoutineOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RoutineOptionContext);
		} else {
			return this.getRuleContext(i, RoutineOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createProcedure; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateProcedure) {
			listener.enterCreateProcedure(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateProcedure) {
			listener.exitCreateProcedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateProcedure) {
			return visitor.visitCreateProcedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateRoleContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(MySqlParser.KW_ROLE, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext {
		return this.getRuleContext(0, UserOrRoleNamesContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createRole; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateRole) {
			listener.enterCreateRole(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateRole) {
			listener.exitCreateRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateRole) {
			return visitor.visitCreateRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateServerContext extends ParserRuleContext {
	public _servername!: UidContext;
	public _wrapperName!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(MySqlParser.KW_SERVER, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(MySqlParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(MySqlParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode { return this.getToken(MySqlParser.KW_WRAPPER, 0); }
	public KW_OPTIONS(): TerminalNode { return this.getToken(MySqlParser.KW_OPTIONS, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public serverOption(): ServerOptionContext[];
	public serverOption(i: number): ServerOptionContext;
	public serverOption(i?: number): ServerOptionContext | ServerOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ServerOptionContext);
		} else {
			return this.getRuleContext(i, ServerOptionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_MYSQL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYSQL, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createServer; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateServer) {
			listener.enterCreateServer(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateServer) {
			listener.exitCreateServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateServer) {
			return visitor.visitCreateServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTableContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createTable; }
	public copyFrom(ctx: CreateTableContext): void {
		super.copyFrom(ctx);
	}
}
export class CopyCreateTableContext extends CreateTableContext {
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	public createDefinitions(): CreateDefinitionsContext {
		return this.getRuleContext(0, CreateDefinitionsContext);
	}
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPORARY, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public tableOption(): TableOptionContext[];
	public tableOption(i: number): TableOptionContext;
	public tableOption(i?: number): TableOptionContext | TableOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableOptionContext);
		} else {
			return this.getRuleContext(i, TableOptionContext);
		}
	}
	public partitionDefinitions(): PartitionDefinitionsContext | undefined {
		return this.tryGetRuleContext(0, PartitionDefinitionsContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: CreateTableContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCopyCreateTable) {
			listener.enterCopyCreateTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCopyCreateTable) {
			listener.exitCopyCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCopyCreateTable) {
			return visitor.visitCopyCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ColumnCreateTableContext extends CreateTableContext {
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPORARY, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public createDefinitions(): CreateDefinitionsContext | undefined {
		return this.tryGetRuleContext(0, CreateDefinitionsContext);
	}
	public tableOption(): TableOptionContext[];
	public tableOption(i: number): TableOptionContext;
	public tableOption(i?: number): TableOptionContext | TableOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableOptionContext);
		} else {
			return this.getRuleContext(i, TableOptionContext);
		}
	}
	public partitionDefinitions(): PartitionDefinitionsContext | undefined {
		return this.tryGetRuleContext(0, PartitionDefinitionsContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLACE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: CreateTableContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterColumnCreateTable) {
			listener.enterColumnCreateTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitColumnCreateTable) {
			listener.exitColumnCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitColumnCreateTable) {
			return visitor.visitColumnCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class QueryCreateTableContext extends CreateTableContext {
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIKE, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPORARY, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	constructor(ctx: CreateTableContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryCreateTable) {
			listener.enterQueryCreateTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryCreateTable) {
			listener.exitQueryCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryCreateTable) {
			return visitor.visitQueryCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablespaceInnodbContext extends ParserRuleContext {
	public _datafile!: Token;
	public _autoextendSize!: FileSizeLiteralContext;
	public _fileBlockSize!: FileSizeLiteralContext;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public tablespaceNameCreate(): TablespaceNameCreateContext {
		return this.getRuleContext(0, TablespaceNameCreateContext);
	}
	public KW_UNDO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ADD, 0); }
	public KW_DATAFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATAFILE, 0); }
	public KW_AUTOEXTEND_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTOEXTEND_SIZE, 0); }
	public KW_FILE_BLOCK_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FILE_BLOCK_SIZE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public KW_ENGINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext | undefined {
		return this.tryGetRuleContext(0, EngineNameContext);
	}
	public KW_ENGINE_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE_ATTRIBUTE, 0); }
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public fileSizeLiteral(): FileSizeLiteralContext[];
	public fileSizeLiteral(i: number): FileSizeLiteralContext;
	public fileSizeLiteral(i?: number): FileSizeLiteralContext | FileSizeLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FileSizeLiteralContext);
		} else {
			return this.getRuleContext(i, FileSizeLiteralContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createTablespaceInnodb; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateTablespaceInnodb) {
			listener.enterCreateTablespaceInnodb(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateTablespaceInnodb) {
			listener.exitCreateTablespaceInnodb(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablespaceInnodb) {
			return visitor.visitCreateTablespaceInnodb(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablespaceNdbContext extends ParserRuleContext {
	public _datafile!: Token;
	public _logfileGroupName!: UidContext;
	public _extentSize!: FileSizeLiteralContext;
	public _initialSize!: FileSizeLiteralContext;
	public _autoextendSize!: FileSizeLiteralContext;
	public _maxSize!: FileSizeLiteralContext;
	public _nodegroup!: UidContext;
	public _comment!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public tablespaceNameCreate(): TablespaceNameCreateContext {
		return this.getRuleContext(0, TablespaceNameCreateContext);
	}
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_DATAFILE(): TerminalNode { return this.getToken(MySqlParser.KW_DATAFILE, 0); }
	public KW_USE(): TerminalNode { return this.getToken(MySqlParser.KW_USE, 0); }
	public KW_LOGFILE(): TerminalNode { return this.getToken(MySqlParser.KW_LOGFILE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext {
		return this.getRuleContext(0, EngineNameContext);
	}
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public KW_UNDO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO, 0); }
	public KW_EXTENT_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENT_SIZE, 0); }
	public KW_INITIAL_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INITIAL_SIZE, 0); }
	public KW_AUTOEXTEND_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTOEXTEND_SIZE, 0); }
	public KW_MAX_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_SIZE, 0); }
	public KW_NODEGROUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NODEGROUP, 0); }
	public KW_WAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WAIT, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public fileSizeLiteral(): FileSizeLiteralContext[];
	public fileSizeLiteral(i: number): FileSizeLiteralContext;
	public fileSizeLiteral(i?: number): FileSizeLiteralContext | FileSizeLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FileSizeLiteralContext);
		} else {
			return this.getRuleContext(i, FileSizeLiteralContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createTablespaceNdb; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateTablespaceNdb) {
			listener.enterCreateTablespaceNdb(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateTablespaceNdb) {
			listener.exitCreateTablespaceNdb(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablespaceNdb) {
			return visitor.visitCreateTablespaceNdb(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTriggerContext extends ParserRuleContext {
	public _trigger_name!: FullIdContext;
	public _triggerTime!: Token;
	public _triggerEvent!: Token;
	public _triggerPlace!: Token;
	public _other_trigger_name!: FullIdContext;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(MySqlParser.KW_TRIGGER, 0); }
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_FOR(): TerminalNode { return this.getToken(MySqlParser.KW_FOR, 0); }
	public KW_EACH(): TerminalNode { return this.getToken(MySqlParser.KW_EACH, 0); }
	public KW_ROW(): TerminalNode { return this.getToken(MySqlParser.KW_ROW, 0); }
	public routineBody(): RoutineBodyContext {
		return this.getRuleContext(0, RoutineBodyContext);
	}
	public fullId(): FullIdContext[];
	public fullId(i: number): FullIdContext;
	public fullId(i?: number): FullIdContext | FullIdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FullIdContext);
		} else {
			return this.getRuleContext(i, FullIdContext);
		}
	}
	public KW_BEFORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BEFORE, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AFTER, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSERT, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DELETE, 0); }
	public ownerStatement(): OwnerStatementContext | undefined {
		return this.tryGetRuleContext(0, OwnerStatementContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public KW_FOLLOWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOLLOWS, 0); }
	public KW_PRECEDES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRECEDES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createTrigger; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateTrigger) {
			listener.enterCreateTrigger(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateTrigger) {
			listener.exitCreateTrigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTrigger) {
			return visitor.visitCreateTrigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithClauseContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(MySqlParser.KW_WITH, 0); }
	public commonTableExpressions(): CommonTableExpressionsContext {
		return this.getRuleContext(0, CommonTableExpressionsContext);
	}
	public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RECURSIVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_withClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWithClause) {
			listener.enterWithClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWithClause) {
			listener.exitWithClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWithClause) {
			return visitor.visitWithClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommonTableExpressionsContext extends ParserRuleContext {
	public _cteName!: UidContext;
	public _cteColumnName!: UidContext;
	public KW_AS(): TerminalNode { return this.getToken(MySqlParser.KW_AS, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public dmlStatement(): DmlStatementContext {
		return this.getRuleContext(0, DmlStatementContext);
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public commonTableExpressions(): CommonTableExpressionsContext | undefined {
		return this.tryGetRuleContext(0, CommonTableExpressionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_commonTableExpressions; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCommonTableExpressions) {
			listener.enterCommonTableExpressions(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCommonTableExpressions) {
			listener.exitCommonTableExpressions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCommonTableExpressions) {
			return visitor.visitCommonTableExpressions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateViewContext extends ParserRuleContext {
	public _algType!: Token;
	public _secContext!: Token;
	public _checkOption!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(MySqlParser.KW_VIEW, 0); }
	public viewNameCreate(): ViewNameCreateContext {
		return this.getRuleContext(0, ViewNameCreateContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(MySqlParser.KW_AS, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public orReplace(): OrReplaceContext | undefined {
		return this.tryGetRuleContext(0, OrReplaceContext);
	}
	public KW_ALGORITHM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALGORITHM, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public ownerStatement(): OwnerStatementContext | undefined {
		return this.tryGetRuleContext(0, OwnerStatementContext);
	}
	public KW_SQL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECURITY, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	public KW_UNDEFINED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDEFINED, 0); }
	public KW_MERGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MERGE, 0); }
	public KW_TEMPTABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPTABLE, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFINER, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVOKER, 0); }
	public withClause(): WithClauseContext | undefined {
		return this.tryGetRuleContext(0, WithClauseContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECK, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTION, 0); }
	public KW_CASCADED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CASCADED, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createView; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateView) {
			listener.enterCreateView(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateView) {
			listener.exitCreateView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateView) {
			return visitor.visitCreateView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDatabaseOptionContext extends ParserRuleContext {
	public charSet(): CharSetContext | undefined {
		return this.tryGetRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_DEFAULT(): TerminalNode[];
	public KW_DEFAULT(i: number): TerminalNode;
	public KW_DEFAULT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_DEFAULT);
		} else {
			return this.getToken(MySqlParser.KW_DEFAULT, i);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	public KW_ENCRYPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENCRYPTION, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLY, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createDatabaseOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateDatabaseOption) {
			listener.enterCreateDatabaseOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateDatabaseOption) {
			listener.exitCreateDatabaseOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDatabaseOption) {
			return visitor.visitCreateDatabaseOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharSetContext extends ParserRuleContext {
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_CHARSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARSET, 0); }
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_charSet; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCharSet) {
			listener.enterCharSet(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCharSet) {
			listener.exitCharSet(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCharSet) {
			return visitor.visitCharSet(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CurrentUserExpressionContext extends ParserRuleContext {
	public KW_CURRENT_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_USER, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_currentUserExpression; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCurrentUserExpression) {
			listener.enterCurrentUserExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCurrentUserExpression) {
			listener.exitCurrentUserExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCurrentUserExpression) {
			return visitor.visitCurrentUserExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OwnerStatementContext extends ParserRuleContext {
	public KW_DEFINER(): TerminalNode { return this.getToken(MySqlParser.KW_DEFINER, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public userName(): UserNameContext | undefined {
		return this.tryGetRuleContext(0, UserNameContext);
	}
	public currentUserExpression(): CurrentUserExpressionContext | undefined {
		return this.tryGetRuleContext(0, CurrentUserExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_ownerStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOwnerStatement) {
			listener.enterOwnerStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOwnerStatement) {
			listener.exitOwnerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOwnerStatement) {
			return visitor.visitOwnerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ScheduleExpressionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_scheduleExpression; }
	public copyFrom(ctx: ScheduleExpressionContext): void {
		super.copyFrom(ctx);
	}
}
export class PreciseScheduleContext extends ScheduleExpressionContext {
	public KW_AT(): TerminalNode { return this.getToken(MySqlParser.KW_AT, 0); }
	public timestampValue(): TimestampValueContext {
		return this.getRuleContext(0, TimestampValueContext);
	}
	public intervalExpr(): IntervalExprContext[];
	public intervalExpr(i: number): IntervalExprContext;
	public intervalExpr(i?: number): IntervalExprContext | IntervalExprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IntervalExprContext);
		} else {
			return this.getRuleContext(i, IntervalExprContext);
		}
	}
	constructor(ctx: ScheduleExpressionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPreciseSchedule) {
			listener.enterPreciseSchedule(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPreciseSchedule) {
			listener.exitPreciseSchedule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPreciseSchedule) {
			return visitor.visitPreciseSchedule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IntervalScheduleContext extends ScheduleExpressionContext {
	public _startTimestamp!: TimestampValueContext;
	public _intervalExpr!: IntervalExprContext;
	public _startIntervals: IntervalExprContext[] = [];
	public _endTimestamp!: TimestampValueContext;
	public _endIntervals: IntervalExprContext[] = [];
	public KW_EVERY(): TerminalNode { return this.getToken(MySqlParser.KW_EVERY, 0); }
	public intervalType(): IntervalTypeContext {
		return this.getRuleContext(0, IntervalTypeContext);
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_STARTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STARTS, 0); }
	public KW_ENDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENDS, 0); }
	public timestampValue(): TimestampValueContext[];
	public timestampValue(i: number): TimestampValueContext;
	public timestampValue(i?: number): TimestampValueContext | TimestampValueContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TimestampValueContext);
		} else {
			return this.getRuleContext(i, TimestampValueContext);
		}
	}
	public intervalExpr(): IntervalExprContext[];
	public intervalExpr(i: number): IntervalExprContext;
	public intervalExpr(i?: number): IntervalExprContext | IntervalExprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IntervalExprContext);
		} else {
			return this.getRuleContext(i, IntervalExprContext);
		}
	}
	constructor(ctx: ScheduleExpressionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIntervalSchedule) {
			listener.enterIntervalSchedule(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIntervalSchedule) {
			listener.exitIntervalSchedule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalSchedule) {
			return visitor.visitIntervalSchedule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TimestampValueContext extends ParserRuleContext {
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_TIMESTAMP, 0); }
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_timestampValue; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTimestampValue) {
			listener.enterTimestampValue(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTimestampValue) {
			listener.exitTimestampValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTimestampValue) {
			return visitor.visitTimestampValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalExprContext extends ParserRuleContext {
	public PLUS(): TerminalNode { return this.getToken(MySqlParser.PLUS, 0); }
	public KW_INTERVAL(): TerminalNode { return this.getToken(MySqlParser.KW_INTERVAL, 0); }
	public intervalType(): IntervalTypeContext {
		return this.getRuleContext(0, IntervalTypeContext);
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_intervalExpr; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIntervalExpr) {
			listener.enterIntervalExpr(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIntervalExpr) {
			listener.exitIntervalExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalExpr) {
			return visitor.visitIntervalExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalTypeContext extends ParserRuleContext {
	public intervalTypeBase(): IntervalTypeBaseContext | undefined {
		return this.tryGetRuleContext(0, IntervalTypeBaseContext);
	}
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_YEAR, 0); }
	public KW_YEAR_MONTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_YEAR_MONTH, 0); }
	public KW_DAY_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY_HOUR, 0); }
	public KW_DAY_MINUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY_MINUTE, 0); }
	public KW_DAY_SECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY_SECOND, 0); }
	public KW_HOUR_MINUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOUR_MINUTE, 0); }
	public KW_HOUR_SECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOUR_SECOND, 0); }
	public KW_MINUTE_SECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MINUTE_SECOND, 0); }
	public KW_SECOND_MICROSECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECOND_MICROSECOND, 0); }
	public KW_MINUTE_MICROSECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MINUTE_MICROSECOND, 0); }
	public KW_HOUR_MICROSECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOUR_MICROSECOND, 0); }
	public KW_DAY_MICROSECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY_MICROSECOND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_intervalType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIntervalType) {
			listener.enterIntervalType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIntervalType) {
			listener.exitIntervalType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalType) {
			return visitor.visitIntervalType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnableTypeContext extends ParserRuleContext {
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENABLE, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISABLE, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_enableType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterEnableType) {
			listener.enterEnableType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitEnableType) {
			listener.exitEnableType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitEnableType) {
			return visitor.visitEnableType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexTypeContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(MySqlParser.KW_USING, 0); }
	public KW_BTREE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BTREE, 0); }
	public KW_HASH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HASH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexType) {
			listener.enterIndexType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexType) {
			listener.exitIndexType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexType) {
			return visitor.visitIndexType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexOptionContext extends ParserRuleContext {
	public _parserName!: UidContext;
	public KW_KEY_BLOCK_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY_BLOCK_SIZE, 0); }
	public fileSizeLiteral(): FileSizeLiteralContext | undefined {
		return this.tryGetRuleContext(0, FileSizeLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public indexType(): IndexTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexTypeContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARSER, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_VISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VISIBLE, 0); }
	public KW_INVISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVISIBLE, 0); }
	public KW_ENGINE_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE_ATTRIBUTE, 0); }
	public KW_SECONDARY_ENGINE_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexOption) {
			listener.enterIndexOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexOption) {
			listener.exitIndexOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexOption) {
			return visitor.visitIndexOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureParameterContext extends ParserRuleContext {
	public _direction!: Token;
	public _paramName!: UidContext;
	public dataType(): DataTypeContext {
		return this.getRuleContext(0, DataTypeContext);
	}
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IN, 0); }
	public KW_OUT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OUT, 0); }
	public KW_INOUT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INOUT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_procedureParameter; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterProcedureParameter) {
			listener.enterProcedureParameter(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitProcedureParameter) {
			listener.exitProcedureParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitProcedureParameter) {
			return visitor.visitProcedureParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoutineOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_routineOption; }
	public copyFrom(ctx: RoutineOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class RoutineCommentContext extends RoutineOptionContext {
	public KW_COMMENT(): TerminalNode { return this.getToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: RoutineOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoutineComment) {
			listener.enterRoutineComment(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoutineComment) {
			listener.exitRoutineComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineComment) {
			return visitor.visitRoutineComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineLanguageContext extends RoutineOptionContext {
	public KW_LANGUAGE(): TerminalNode { return this.getToken(MySqlParser.KW_LANGUAGE, 0); }
	public KW_SQL(): TerminalNode { return this.getToken(MySqlParser.KW_SQL, 0); }
	constructor(ctx: RoutineOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoutineLanguage) {
			listener.enterRoutineLanguage(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoutineLanguage) {
			listener.exitRoutineLanguage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineLanguage) {
			return visitor.visitRoutineLanguage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineBehaviorContext extends RoutineOptionContext {
	public KW_DETERMINISTIC(): TerminalNode { return this.getToken(MySqlParser.KW_DETERMINISTIC, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(ctx: RoutineOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoutineBehavior) {
			listener.enterRoutineBehavior(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoutineBehavior) {
			listener.exitRoutineBehavior(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineBehavior) {
			return visitor.visitRoutineBehavior(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineDataContext extends RoutineOptionContext {
	public KW_CONTAINS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTAINS, 0); }
	public KW_SQL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NO, 0); }
	public KW_READS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READS, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATA, 0); }
	public KW_MODIFIES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MODIFIES, 0); }
	constructor(ctx: RoutineOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoutineData) {
			listener.enterRoutineData(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoutineData) {
			listener.exitRoutineData(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineData) {
			return visitor.visitRoutineData(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineSecurityContext extends RoutineOptionContext {
	public _context!: Token;
	public KW_SQL(): TerminalNode { return this.getToken(MySqlParser.KW_SQL, 0); }
	public KW_SECURITY(): TerminalNode { return this.getToken(MySqlParser.KW_SECURITY, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFINER, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVOKER, 0); }
	constructor(ctx: RoutineOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoutineSecurity) {
			listener.enterRoutineSecurity(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoutineSecurity) {
			listener.exitRoutineSecurity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineSecurity) {
			return visitor.visitRoutineSecurity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ServerOptionContext extends ParserRuleContext {
	public KW_HOST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOST, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_SOCKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOCKET, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OWNER, 0); }
	public KW_PORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PORT, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_serverOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterServerOption) {
			listener.enterServerOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitServerOption) {
			listener.exitServerOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitServerOption) {
			return visitor.visitServerOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDefinitionsContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public createDefinition(): CreateDefinitionContext[];
	public createDefinition(i: number): CreateDefinitionContext;
	public createDefinition(i?: number): CreateDefinitionContext | CreateDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CreateDefinitionContext);
		} else {
			return this.getRuleContext(i, CreateDefinitionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createDefinitions; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateDefinitions) {
			listener.enterCreateDefinitions(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateDefinitions) {
			listener.exitCreateDefinitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDefinitions) {
			return visitor.visitCreateDefinitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDefinitionContext extends ParserRuleContext {
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public columnDefinition(): ColumnDefinitionContext | undefined {
		return this.tryGetRuleContext(0, ColumnDefinitionContext);
	}
	public indexColumnNames(): IndexColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, IndexColumnNamesContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	public indexName(): IndexNameContext | undefined {
		return this.tryGetRuleContext(0, IndexNameContext);
	}
	public indexType(): IndexTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexTypeContext);
	}
	public indexOption(): IndexOptionContext[];
	public indexOption(i: number): IndexOptionContext;
	public indexOption(i?: number): IndexOptionContext | IndexOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexOptionContext);
		} else {
			return this.getRuleContext(i, IndexOptionContext);
		}
	}
	public KW_FULLTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULLTEXT, 0); }
	public KW_SPATIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SPATIAL, 0); }
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIMARY, 0); }
	public constraintSymbol(): ConstraintSymbolContext | undefined {
		return this.tryGetRuleContext(0, ConstraintSymbolContext);
	}
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNIQUE, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOREIGN, 0); }
	public referenceDefinition(): ReferenceDefinitionContext | undefined {
		return this.tryGetRuleContext(0, ReferenceDefinitionContext);
	}
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECK, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public checkConstraintDefinition(): CheckConstraintDefinitionContext | undefined {
		return this.tryGetRuleContext(0, CheckConstraintDefinitionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createDefinition; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateDefinition) {
			listener.enterCreateDefinition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateDefinition) {
			listener.exitCreateDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDefinition) {
			return visitor.visitCreateDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckConstraintDefinitionContext extends ParserRuleContext {
	public KW_CHECK(): TerminalNode { return this.getToken(MySqlParser.KW_CHECK, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public constraintSymbol(): ConstraintSymbolContext | undefined {
		return this.tryGetRuleContext(0, ConstraintSymbolContext);
	}
	public KW_ENFORCED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENFORCED, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_checkConstraintDefinition; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCheckConstraintDefinition) {
			listener.enterCheckConstraintDefinition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCheckConstraintDefinition) {
			listener.exitCheckConstraintDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCheckConstraintDefinition) {
			return visitor.visitCheckConstraintDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintSymbolContext extends ParserRuleContext {
	public _symbol!: UidContext;
	public KW_CONSTRAINT(): TerminalNode { return this.getToken(MySqlParser.KW_CONSTRAINT, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_constraintSymbol; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterConstraintSymbol) {
			listener.enterConstraintSymbol(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitConstraintSymbol) {
			listener.exitConstraintSymbol(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitConstraintSymbol) {
			return visitor.visitConstraintSymbol(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnDefinitionContext extends ParserRuleContext {
	public dataType(): DataTypeContext {
		return this.getRuleContext(0, DataTypeContext);
	}
	public columnConstraint(): ColumnConstraintContext[];
	public columnConstraint(i: number): ColumnConstraintContext;
	public columnConstraint(i?: number): ColumnConstraintContext | ColumnConstraintContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnConstraintContext);
		} else {
			return this.getRuleContext(i, ColumnConstraintContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_columnDefinition; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterColumnDefinition) {
			listener.enterColumnDefinition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitColumnDefinition) {
			listener.exitColumnDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitColumnDefinition) {
			return visitor.visitColumnDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnConstraintContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_columnConstraint; }
	public copyFrom(ctx: ColumnConstraintContext): void {
		super.copyFrom(ctx);
	}
}
export class NullColumnConstraintContext extends ColumnConstraintContext {
	public nullNotnull(): NullNotnullContext {
		return this.getRuleContext(0, NullNotnullContext);
	}
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNullColumnConstraint) {
			listener.enterNullColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNullColumnConstraint) {
			listener.exitNullColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNullColumnConstraint) {
			return visitor.visitNullColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefaultColumnConstraintContext extends ColumnConstraintContext {
	public KW_DEFAULT(): TerminalNode { return this.getToken(MySqlParser.KW_DEFAULT, 0); }
	public defaultValue(): DefaultValueContext {
		return this.getRuleContext(0, DefaultValueContext);
	}
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefaultColumnConstraint) {
			listener.enterDefaultColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefaultColumnConstraint) {
			listener.exitDefaultColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultColumnConstraint) {
			return visitor.visitDefaultColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class VisibilityColumnConstraintContext extends ColumnConstraintContext {
	public KW_VISIBLE(): TerminalNode { return this.getToken(MySqlParser.KW_VISIBLE, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterVisibilityColumnConstraint) {
			listener.enterVisibilityColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitVisibilityColumnConstraint) {
			listener.exitVisibilityColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitVisibilityColumnConstraint) {
			return visitor.visitVisibilityColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class InvisibilityColumnConstraintContext extends ColumnConstraintContext {
	public KW_INVISIBLE(): TerminalNode { return this.getToken(MySqlParser.KW_INVISIBLE, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInvisibilityColumnConstraint) {
			listener.enterInvisibilityColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInvisibilityColumnConstraint) {
			listener.exitInvisibilityColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInvisibilityColumnConstraint) {
			return visitor.visitInvisibilityColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AutoIncrementColumnConstraintContext extends ColumnConstraintContext {
	public KW_AUTO_INCREMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTO_INCREMENT, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public currentTimestamp(): CurrentTimestampContext | undefined {
		return this.tryGetRuleContext(0, CurrentTimestampContext);
	}
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAutoIncrementColumnConstraint) {
			listener.enterAutoIncrementColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAutoIncrementColumnConstraint) {
			listener.exitAutoIncrementColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAutoIncrementColumnConstraint) {
			return visitor.visitAutoIncrementColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PrimaryKeyColumnConstraintContext extends ColumnConstraintContext {
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIMARY, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPrimaryKeyColumnConstraint) {
			listener.enterPrimaryKeyColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPrimaryKeyColumnConstraint) {
			listener.exitPrimaryKeyColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPrimaryKeyColumnConstraint) {
			return visitor.visitPrimaryKeyColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UniqueKeyColumnConstraintContext extends ColumnConstraintContext {
	public KW_UNIQUE(): TerminalNode { return this.getToken(MySqlParser.KW_UNIQUE, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUniqueKeyColumnConstraint) {
			listener.enterUniqueKeyColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUniqueKeyColumnConstraint) {
			listener.exitUniqueKeyColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueKeyColumnConstraint) {
			return visitor.visitUniqueKeyColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CommentColumnConstraintContext extends ColumnConstraintContext {
	public KW_COMMENT(): TerminalNode { return this.getToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCommentColumnConstraint) {
			listener.enterCommentColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCommentColumnConstraint) {
			listener.exitCommentColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCommentColumnConstraint) {
			return visitor.visitCommentColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FormatColumnConstraintContext extends ColumnConstraintContext {
	public _colformat!: Token;
	public KW_COLUMN_FORMAT(): TerminalNode { return this.getToken(MySqlParser.KW_COLUMN_FORMAT, 0); }
	public KW_FIXED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIXED, 0); }
	public KW_DYNAMIC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DYNAMIC, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFormatColumnConstraint) {
			listener.enterFormatColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFormatColumnConstraint) {
			listener.exitFormatColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFormatColumnConstraint) {
			return visitor.visitFormatColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StorageColumnConstraintContext extends ColumnConstraintContext {
	public _storageval!: Token;
	public KW_STORAGE(): TerminalNode { return this.getToken(MySqlParser.KW_STORAGE, 0); }
	public KW_DISK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISK, 0); }
	public KW_MEMORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEMORY, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStorageColumnConstraint) {
			listener.enterStorageColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStorageColumnConstraint) {
			listener.exitStorageColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStorageColumnConstraint) {
			return visitor.visitStorageColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ReferenceColumnConstraintContext extends ColumnConstraintContext {
	public referenceDefinition(): ReferenceDefinitionContext {
		return this.getRuleContext(0, ReferenceDefinitionContext);
	}
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReferenceColumnConstraint) {
			listener.enterReferenceColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReferenceColumnConstraint) {
			listener.exitReferenceColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceColumnConstraint) {
			return visitor.visitReferenceColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CollateColumnConstraintContext extends ColumnConstraintContext {
	public KW_COLLATE(): TerminalNode { return this.getToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext {
		return this.getRuleContext(0, CollationNameContext);
	}
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCollateColumnConstraint) {
			listener.enterCollateColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCollateColumnConstraint) {
			listener.exitCollateColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCollateColumnConstraint) {
			return visitor.visitCollateColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GeneratedColumnConstraintContext extends ColumnConstraintContext {
	public KW_AS(): TerminalNode { return this.getToken(MySqlParser.KW_AS, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_GENERATED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GENERATED, 0); }
	public KW_ALWAYS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALWAYS, 0); }
	public KW_VIRTUAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VIRTUAL, 0); }
	public KW_STORED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STORED, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGeneratedColumnConstraint) {
			listener.enterGeneratedColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGeneratedColumnConstraint) {
			listener.exitGeneratedColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGeneratedColumnConstraint) {
			return visitor.visitGeneratedColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SerialDefaultColumnConstraintContext extends ColumnConstraintContext {
	public KW_SERIAL(): TerminalNode { return this.getToken(MySqlParser.KW_SERIAL, 0); }
	public KW_DEFAULT(): TerminalNode { return this.getToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_VALUE(): TerminalNode { return this.getToken(MySqlParser.KW_VALUE, 0); }
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSerialDefaultColumnConstraint) {
			listener.enterSerialDefaultColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSerialDefaultColumnConstraint) {
			listener.exitSerialDefaultColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSerialDefaultColumnConstraint) {
			return visitor.visitSerialDefaultColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CheckExprContext extends ColumnConstraintContext {
	public checkConstraintDefinition(): CheckConstraintDefinitionContext {
		return this.getRuleContext(0, CheckConstraintDefinitionContext);
	}
	constructor(ctx: ColumnConstraintContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCheckExpr) {
			listener.enterCheckExpr(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCheckExpr) {
			listener.exitCheckExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCheckExpr) {
			return visitor.visitCheckExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReferenceDefinitionContext extends ParserRuleContext {
	public _matchType!: Token;
	public KW_REFERENCES(): TerminalNode { return this.getToken(MySqlParser.KW_REFERENCES, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public indexColumnNames(): IndexColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, IndexColumnNamesContext);
	}
	public KW_MATCH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MATCH, 0); }
	public referenceAction(): ReferenceActionContext | undefined {
		return this.tryGetRuleContext(0, ReferenceActionContext);
	}
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULL, 0); }
	public KW_PARTIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTIAL, 0); }
	public KW_SIMPLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SIMPLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_referenceDefinition; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReferenceDefinition) {
			listener.enterReferenceDefinition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReferenceDefinition) {
			listener.exitReferenceDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceDefinition) {
			return visitor.visitReferenceDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReferenceActionContext extends ParserRuleContext {
	public _onDelete!: ReferenceControlTypeContext;
	public _onUpdate!: ReferenceControlTypeContext;
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ON);
		} else {
			return this.getToken(MySqlParser.KW_ON, i);
		}
	}
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DELETE, 0); }
	public referenceControlType(): ReferenceControlTypeContext[];
	public referenceControlType(i: number): ReferenceControlTypeContext;
	public referenceControlType(i?: number): ReferenceControlTypeContext | ReferenceControlTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ReferenceControlTypeContext);
		} else {
			return this.getRuleContext(i, ReferenceControlTypeContext);
		}
	}
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_referenceAction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReferenceAction) {
			listener.enterReferenceAction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReferenceAction) {
			listener.exitReferenceAction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceAction) {
			return visitor.visitReferenceAction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReferenceControlTypeContext extends ParserRuleContext {
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESTRICT, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CASCADE, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NO, 0); }
	public KW_ACTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ACTION, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_referenceControlType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReferenceControlType) {
			listener.enterReferenceControlType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReferenceControlType) {
			listener.exitReferenceControlType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceControlType) {
			return visitor.visitReferenceControlType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableOption; }
	public copyFrom(ctx: TableOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class TableOptionEngineContext extends TableOptionContext {
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public engineName(): EngineNameContext | undefined {
		return this.tryGetRuleContext(0, EngineNameContext);
	}
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionEngine) {
			listener.enterTableOptionEngine(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionEngine) {
			listener.exitTableOptionEngine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionEngine) {
			return visitor.visitTableOptionEngine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionEngineAttributeContext extends TableOptionContext {
	public KW_ENGINE_ATTRIBUTE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE_ATTRIBUTE, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionEngineAttribute) {
			listener.enterTableOptionEngineAttribute(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionEngineAttribute) {
			listener.exitTableOptionEngineAttribute(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionEngineAttribute) {
			return visitor.visitTableOptionEngineAttribute(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionAutoextendSizeContext extends TableOptionContext {
	public KW_AUTOEXTEND_SIZE(): TerminalNode { return this.getToken(MySqlParser.KW_AUTOEXTEND_SIZE, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionAutoextendSize) {
			listener.enterTableOptionAutoextendSize(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionAutoextendSize) {
			listener.exitTableOptionAutoextendSize(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionAutoextendSize) {
			return visitor.visitTableOptionAutoextendSize(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionAutoIncrementContext extends TableOptionContext {
	public KW_AUTO_INCREMENT(): TerminalNode { return this.getToken(MySqlParser.KW_AUTO_INCREMENT, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionAutoIncrement) {
			listener.enterTableOptionAutoIncrement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionAutoIncrement) {
			listener.exitTableOptionAutoIncrement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionAutoIncrement) {
			return visitor.visitTableOptionAutoIncrement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionAverageContext extends TableOptionContext {
	public KW_AVG_ROW_LENGTH(): TerminalNode { return this.getToken(MySqlParser.KW_AVG_ROW_LENGTH, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionAverage) {
			listener.enterTableOptionAverage(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionAverage) {
			listener.exitTableOptionAverage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionAverage) {
			return visitor.visitTableOptionAverage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCharsetContext extends TableOptionContext {
	public charSet(): CharSetContext {
		return this.getRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_DEFAULT(): TerminalNode[];
	public KW_DEFAULT(i: number): TerminalNode;
	public KW_DEFAULT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_DEFAULT);
		} else {
			return this.getToken(MySqlParser.KW_DEFAULT, i);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionCharset) {
			listener.enterTableOptionCharset(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionCharset) {
			listener.exitTableOptionCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionCharset) {
			return visitor.visitTableOptionCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionChecksumContext extends TableOptionContext {
	public _boolValue!: Token;
	public KW_CHECKSUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECKSUM, 0); }
	public KW_PAGE_CHECKSUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PAGE_CHECKSUM, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionChecksum) {
			listener.enterTableOptionChecksum(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionChecksum) {
			listener.exitTableOptionChecksum(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionChecksum) {
			return visitor.visitTableOptionChecksum(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCollateContext extends TableOptionContext {
	public KW_COLLATE(): TerminalNode { return this.getToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext {
		return this.getRuleContext(0, CollationNameContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionCollate) {
			listener.enterTableOptionCollate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionCollate) {
			listener.exitTableOptionCollate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionCollate) {
			return visitor.visitTableOptionCollate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCommentContext extends TableOptionContext {
	public KW_COMMENT(): TerminalNode { return this.getToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionComment) {
			listener.enterTableOptionComment(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionComment) {
			listener.exitTableOptionComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionComment) {
			return visitor.visitTableOptionComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCompressionContext extends TableOptionContext {
	public KW_COMPRESSION(): TerminalNode { return this.getToken(MySqlParser.KW_COMPRESSION, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionCompression) {
			listener.enterTableOptionCompression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionCompression) {
			listener.exitTableOptionCompression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionCompression) {
			return visitor.visitTableOptionCompression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionConnectionContext extends TableOptionContext {
	public KW_CONNECTION(): TerminalNode { return this.getToken(MySqlParser.KW_CONNECTION, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionConnection) {
			listener.enterTableOptionConnection(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionConnection) {
			listener.exitTableOptionConnection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionConnection) {
			return visitor.visitTableOptionConnection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionDataDirectoryContext extends TableOptionContext {
	public KW_DIRECTORY(): TerminalNode { return this.getToken(MySqlParser.KW_DIRECTORY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATA, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionDataDirectory) {
			listener.enterTableOptionDataDirectory(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionDataDirectory) {
			listener.exitTableOptionDataDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionDataDirectory) {
			return visitor.visitTableOptionDataDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionDelayContext extends TableOptionContext {
	public _boolValue!: Token;
	public KW_DELAY_KEY_WRITE(): TerminalNode { return this.getToken(MySqlParser.KW_DELAY_KEY_WRITE, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionDelay) {
			listener.enterTableOptionDelay(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionDelay) {
			listener.exitTableOptionDelay(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionDelay) {
			return visitor.visitTableOptionDelay(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionEncryptionContext extends TableOptionContext {
	public KW_ENCRYPTION(): TerminalNode { return this.getToken(MySqlParser.KW_ENCRYPTION, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionEncryption) {
			listener.enterTableOptionEncryption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionEncryption) {
			listener.exitTableOptionEncryption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionEncryption) {
			return visitor.visitTableOptionEncryption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPageCompressedContext extends TableOptionContext {
	public KW_PAGE_COMPRESSED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PAGE_COMPRESSED, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionPageCompressed) {
			listener.enterTableOptionPageCompressed(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionPageCompressed) {
			listener.exitTableOptionPageCompressed(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPageCompressed) {
			return visitor.visitTableOptionPageCompressed(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPageCompressionLevelContext extends TableOptionContext {
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public KW_PAGE_COMPRESSION_LEVEL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PAGE_COMPRESSION_LEVEL, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionPageCompressionLevel) {
			listener.enterTableOptionPageCompressionLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionPageCompressionLevel) {
			listener.exitTableOptionPageCompressionLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPageCompressionLevel) {
			return visitor.visitTableOptionPageCompressionLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionEncryptionKeyIdContext extends TableOptionContext {
	public KW_ENCRYPTION_KEY_ID(): TerminalNode { return this.getToken(MySqlParser.KW_ENCRYPTION_KEY_ID, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionEncryptionKeyId) {
			listener.enterTableOptionEncryptionKeyId(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionEncryptionKeyId) {
			listener.exitTableOptionEncryptionKeyId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionEncryptionKeyId) {
			return visitor.visitTableOptionEncryptionKeyId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionIndexDirectoryContext extends TableOptionContext {
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public KW_DIRECTORY(): TerminalNode { return this.getToken(MySqlParser.KW_DIRECTORY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionIndexDirectory) {
			listener.enterTableOptionIndexDirectory(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionIndexDirectory) {
			listener.exitTableOptionIndexDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionIndexDirectory) {
			return visitor.visitTableOptionIndexDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionInsertMethodContext extends TableOptionContext {
	public _insertMethod!: Token;
	public KW_INSERT_METHOD(): TerminalNode { return this.getToken(MySqlParser.KW_INSERT_METHOD, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NO, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAST, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionInsertMethod) {
			listener.enterTableOptionInsertMethod(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionInsertMethod) {
			listener.exitTableOptionInsertMethod(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionInsertMethod) {
			return visitor.visitTableOptionInsertMethod(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionKeyBlockSizeContext extends TableOptionContext {
	public KW_KEY_BLOCK_SIZE(): TerminalNode { return this.getToken(MySqlParser.KW_KEY_BLOCK_SIZE, 0); }
	public fileSizeLiteral(): FileSizeLiteralContext {
		return this.getRuleContext(0, FileSizeLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionKeyBlockSize) {
			listener.enterTableOptionKeyBlockSize(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionKeyBlockSize) {
			listener.exitTableOptionKeyBlockSize(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionKeyBlockSize) {
			return visitor.visitTableOptionKeyBlockSize(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionMaxRowsContext extends TableOptionContext {
	public KW_MAX_ROWS(): TerminalNode { return this.getToken(MySqlParser.KW_MAX_ROWS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionMaxRows) {
			listener.enterTableOptionMaxRows(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionMaxRows) {
			listener.exitTableOptionMaxRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionMaxRows) {
			return visitor.visitTableOptionMaxRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionMinRowsContext extends TableOptionContext {
	public KW_MIN_ROWS(): TerminalNode { return this.getToken(MySqlParser.KW_MIN_ROWS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionMinRows) {
			listener.enterTableOptionMinRows(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionMinRows) {
			listener.exitTableOptionMinRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionMinRows) {
			return visitor.visitTableOptionMinRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPackKeysContext extends TableOptionContext {
	public _extBoolValue!: Token;
	public KW_PACK_KEYS(): TerminalNode { return this.getToken(MySqlParser.KW_PACK_KEYS, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionPackKeys) {
			listener.enterTableOptionPackKeys(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionPackKeys) {
			listener.exitTableOptionPackKeys(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPackKeys) {
			return visitor.visitTableOptionPackKeys(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPasswordContext extends TableOptionContext {
	public KW_PASSWORD(): TerminalNode { return this.getToken(MySqlParser.KW_PASSWORD, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionPassword) {
			listener.enterTableOptionPassword(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionPassword) {
			listener.exitTableOptionPassword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPassword) {
			return visitor.visitTableOptionPassword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionRowFormatContext extends TableOptionContext {
	public _rowFormat!: Token;
	public KW_ROW_FORMAT(): TerminalNode { return this.getToken(MySqlParser.KW_ROW_FORMAT, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_DYNAMIC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DYNAMIC, 0); }
	public KW_FIXED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIXED, 0); }
	public KW_COMPRESSED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPRESSED, 0); }
	public KW_REDUNDANT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REDUNDANT, 0); }
	public KW_COMPACT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPACT, 0); }
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionRowFormat) {
			listener.enterTableOptionRowFormat(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionRowFormat) {
			listener.exitTableOptionRowFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionRowFormat) {
			return visitor.visitTableOptionRowFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionStartTransactionContext extends TableOptionContext {
	public KW_START(): TerminalNode { return this.getToken(MySqlParser.KW_START, 0); }
	public KW_TRANSACTION(): TerminalNode { return this.getToken(MySqlParser.KW_TRANSACTION, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionStartTransaction) {
			listener.enterTableOptionStartTransaction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionStartTransaction) {
			listener.exitTableOptionStartTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionStartTransaction) {
			return visitor.visitTableOptionStartTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionSecondaryEngineAttributeContext extends TableOptionContext {
	public KW_SECONDARY_ENGINE_ATTRIBUTE(): TerminalNode { return this.getToken(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionSecondaryEngineAttribute) {
			listener.enterTableOptionSecondaryEngineAttribute(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionSecondaryEngineAttribute) {
			listener.exitTableOptionSecondaryEngineAttribute(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionSecondaryEngineAttribute) {
			return visitor.visitTableOptionSecondaryEngineAttribute(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionRecalculationContext extends TableOptionContext {
	public _extBoolValue!: Token;
	public KW_STATS_AUTO_RECALC(): TerminalNode { return this.getToken(MySqlParser.KW_STATS_AUTO_RECALC, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionRecalculation) {
			listener.enterTableOptionRecalculation(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionRecalculation) {
			listener.exitTableOptionRecalculation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionRecalculation) {
			return visitor.visitTableOptionRecalculation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPersistentContext extends TableOptionContext {
	public _extBoolValue!: Token;
	public KW_STATS_PERSISTENT(): TerminalNode { return this.getToken(MySqlParser.KW_STATS_PERSISTENT, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionPersistent) {
			listener.enterTableOptionPersistent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionPersistent) {
			listener.exitTableOptionPersistent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPersistent) {
			return visitor.visitTableOptionPersistent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionSamplePageContext extends TableOptionContext {
	public KW_STATS_SAMPLE_PAGES(): TerminalNode { return this.getToken(MySqlParser.KW_STATS_SAMPLE_PAGES, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionSamplePage) {
			listener.enterTableOptionSamplePage(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionSamplePage) {
			listener.exitTableOptionSamplePage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionSamplePage) {
			return visitor.visitTableOptionSamplePage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionTablespaceContext extends TableOptionContext {
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLESPACE, 0); }
	public tablespaceName(): TablespaceNameContext | undefined {
		return this.tryGetRuleContext(0, TablespaceNameContext);
	}
	public tablespaceStorage(): TablespaceStorageContext | undefined {
		return this.tryGetRuleContext(0, TablespaceStorageContext);
	}
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionTablespace) {
			listener.enterTableOptionTablespace(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionTablespace) {
			listener.exitTableOptionTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionTablespace) {
			return visitor.visitTableOptionTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionTableTypeContext extends TableOptionContext {
	public KW_TABLE_TYPE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE_TYPE, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public tableType(): TableTypeContext {
		return this.getRuleContext(0, TableTypeContext);
	}
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionTableType) {
			listener.enterTableOptionTableType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionTableType) {
			listener.exitTableOptionTableType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionTableType) {
			return visitor.visitTableOptionTableType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionTransactionalContext extends TableOptionContext {
	public KW_TRANSACTIONAL(): TerminalNode { return this.getToken(MySqlParser.KW_TRANSACTIONAL, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionTransactional) {
			listener.enterTableOptionTransactional(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionTransactional) {
			listener.exitTableOptionTransactional(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionTransactional) {
			return visitor.visitTableOptionTransactional(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionUnionContext extends TableOptionContext {
	public KW_UNION(): TerminalNode { return this.getToken(MySqlParser.KW_UNION, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: TableOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableOptionUnion) {
			listener.enterTableOptionUnion(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableOptionUnion) {
			listener.exitTableOptionUnion(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionUnion) {
			return visitor.visitTableOptionUnion(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableTypeContext extends ParserRuleContext {
	public KW_MYSQL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYSQL, 0); }
	public KW_ODBC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ODBC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableType) {
			listener.enterTableType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableType) {
			listener.exitTableType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableType) {
			return visitor.visitTableType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablespaceStorageContext extends ParserRuleContext {
	public KW_STORAGE(): TerminalNode { return this.getToken(MySqlParser.KW_STORAGE, 0); }
	public KW_DISK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISK, 0); }
	public KW_MEMORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEMORY, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tablespaceStorage; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTablespaceStorage) {
			listener.enterTablespaceStorage(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTablespaceStorage) {
			listener.exitTablespaceStorage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTablespaceStorage) {
			return visitor.visitTablespaceStorage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinitionsContext extends ParserRuleContext {
	public _count!: DecimalLiteralContext;
	public _subCount!: DecimalLiteralContext;
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public KW_BY(): TerminalNode[];
	public KW_BY(i: number): TerminalNode;
	public KW_BY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_BY);
		} else {
			return this.getToken(MySqlParser.KW_BY, i);
		}
	}
	public partitionFunctionDefinition(): PartitionFunctionDefinitionContext {
		return this.getRuleContext(0, PartitionFunctionDefinitionContext);
	}
	public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITIONS, 0); }
	public KW_SUBPARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBPARTITION, 0); }
	public subpartitionFunctionDefinition(): SubpartitionFunctionDefinitionContext | undefined {
		return this.tryGetRuleContext(0, SubpartitionFunctionDefinitionContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public partitionDefinition(): PartitionDefinitionContext[];
	public partitionDefinition(i: number): PartitionDefinitionContext;
	public partitionDefinition(i?: number): PartitionDefinitionContext | PartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, PartitionDefinitionContext);
		}
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public KW_SUBPARTITIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBPARTITIONS, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionDefinitions; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionDefinitions) {
			listener.enterPartitionDefinitions(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionDefinitions) {
			listener.exitPartitionDefinitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionDefinitions) {
			return visitor.visitPartitionDefinitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionFunctionDefinitionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionFunctionDefinition; }
	public copyFrom(ctx: PartitionFunctionDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class PartitionFunctionHashContext extends PartitionFunctionDefinitionContext {
	public KW_HASH(): TerminalNode { return this.getToken(MySqlParser.KW_HASH, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_LINEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINEAR, 0); }
	constructor(ctx: PartitionFunctionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionFunctionHash) {
			listener.enterPartitionFunctionHash(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionFunctionHash) {
			listener.exitPartitionFunctionHash(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionHash) {
			return visitor.visitPartitionFunctionHash(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionFunctionKeyContext extends PartitionFunctionDefinitionContext {
	public _algType!: Token;
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_LINEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINEAR, 0); }
	public KW_ALGORITHM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALGORITHM, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public TWO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.TWO_DECIMAL, 0); }
	constructor(ctx: PartitionFunctionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionFunctionKey) {
			listener.enterPartitionFunctionKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionFunctionKey) {
			listener.exitPartitionFunctionKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionKey) {
			return visitor.visitPartitionFunctionKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionFunctionRangeContext extends PartitionFunctionDefinitionContext {
	public KW_RANGE(): TerminalNode { return this.getToken(MySqlParser.KW_RANGE, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	constructor(ctx: PartitionFunctionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionFunctionRange) {
			listener.enterPartitionFunctionRange(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionFunctionRange) {
			listener.exitPartitionFunctionRange(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionRange) {
			return visitor.visitPartitionFunctionRange(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionFunctionListContext extends PartitionFunctionDefinitionContext {
	public KW_LIST(): TerminalNode { return this.getToken(MySqlParser.KW_LIST, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	constructor(ctx: PartitionFunctionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionFunctionList) {
			listener.enterPartitionFunctionList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionFunctionList) {
			listener.exitPartitionFunctionList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionList) {
			return visitor.visitPartitionFunctionList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubpartitionFunctionDefinitionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_subpartitionFunctionDefinition; }
	public copyFrom(ctx: SubpartitionFunctionDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class SubPartitionFunctionHashContext extends SubpartitionFunctionDefinitionContext {
	public KW_HASH(): TerminalNode { return this.getToken(MySqlParser.KW_HASH, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_LINEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINEAR, 0); }
	constructor(ctx: SubpartitionFunctionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubPartitionFunctionHash) {
			listener.enterSubPartitionFunctionHash(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubPartitionFunctionHash) {
			listener.exitSubPartitionFunctionHash(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubPartitionFunctionHash) {
			return visitor.visitSubPartitionFunctionHash(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubPartitionFunctionKeyContext extends SubpartitionFunctionDefinitionContext {
	public _algType!: Token;
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public columnNames(): ColumnNamesContext {
		return this.getRuleContext(0, ColumnNamesContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_LINEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINEAR, 0); }
	public KW_ALGORITHM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALGORITHM, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public TWO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.TWO_DECIMAL, 0); }
	constructor(ctx: SubpartitionFunctionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubPartitionFunctionKey) {
			listener.enterSubPartitionFunctionKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubPartitionFunctionKey) {
			listener.exitSubPartitionFunctionKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubPartitionFunctionKey) {
			return visitor.visitSubPartitionFunctionKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinitionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionDefinition; }
	public copyFrom(ctx: PartitionDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class PartitionComparisonContext extends PartitionDefinitionContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionName(): PartitionNameContext {
		return this.getRuleContext(0, PartitionNameContext);
	}
	public KW_VALUES(): TerminalNode { return this.getToken(MySqlParser.KW_VALUES, 0); }
	public KW_LESS(): TerminalNode { return this.getToken(MySqlParser.KW_LESS, 0); }
	public KW_THAN(): TerminalNode { return this.getToken(MySqlParser.KW_THAN, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public partitionDefinerAtom(): PartitionDefinerAtomContext[];
	public partitionDefinerAtom(i: number): PartitionDefinerAtomContext;
	public partitionDefinerAtom(i?: number): PartitionDefinerAtomContext | PartitionDefinerAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinerAtomContext);
		} else {
			return this.getRuleContext(i, PartitionDefinerAtomContext);
		}
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public partitionOption(): PartitionOptionContext[];
	public partitionOption(i: number): PartitionOptionContext;
	public partitionOption(i?: number): PartitionOptionContext | PartitionOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionOptionContext);
		} else {
			return this.getRuleContext(i, PartitionOptionContext);
		}
	}
	public subpartitionDefinition(): SubpartitionDefinitionContext[];
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext;
	public subpartitionDefinition(i?: number): SubpartitionDefinitionContext | SubpartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SubpartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, SubpartitionDefinitionContext);
		}
	}
	constructor(ctx: PartitionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionComparison) {
			listener.enterPartitionComparison(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionComparison) {
			listener.exitPartitionComparison(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionComparison) {
			return visitor.visitPartitionComparison(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionListAtomContext extends PartitionDefinitionContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionName(): PartitionNameContext {
		return this.getRuleContext(0, PartitionNameContext);
	}
	public KW_VALUES(): TerminalNode { return this.getToken(MySqlParser.KW_VALUES, 0); }
	public KW_IN(): TerminalNode { return this.getToken(MySqlParser.KW_IN, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public partitionDefinerAtom(): PartitionDefinerAtomContext[];
	public partitionDefinerAtom(i: number): PartitionDefinerAtomContext;
	public partitionDefinerAtom(i?: number): PartitionDefinerAtomContext | PartitionDefinerAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinerAtomContext);
		} else {
			return this.getRuleContext(i, PartitionDefinerAtomContext);
		}
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public partitionOption(): PartitionOptionContext[];
	public partitionOption(i: number): PartitionOptionContext;
	public partitionOption(i?: number): PartitionOptionContext | PartitionOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionOptionContext);
		} else {
			return this.getRuleContext(i, PartitionOptionContext);
		}
	}
	public subpartitionDefinition(): SubpartitionDefinitionContext[];
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext;
	public subpartitionDefinition(i?: number): SubpartitionDefinitionContext | SubpartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SubpartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, SubpartitionDefinitionContext);
		}
	}
	constructor(ctx: PartitionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionListAtom) {
			listener.enterPartitionListAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionListAtom) {
			listener.exitPartitionListAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionListAtom) {
			return visitor.visitPartitionListAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionListVectorContext extends PartitionDefinitionContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionName(): PartitionNameContext {
		return this.getRuleContext(0, PartitionNameContext);
	}
	public KW_VALUES(): TerminalNode { return this.getToken(MySqlParser.KW_VALUES, 0); }
	public KW_IN(): TerminalNode { return this.getToken(MySqlParser.KW_IN, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public partitionDefinerVector(): PartitionDefinerVectorContext[];
	public partitionDefinerVector(i: number): PartitionDefinerVectorContext;
	public partitionDefinerVector(i?: number): PartitionDefinerVectorContext | PartitionDefinerVectorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinerVectorContext);
		} else {
			return this.getRuleContext(i, PartitionDefinerVectorContext);
		}
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public partitionOption(): PartitionOptionContext[];
	public partitionOption(i: number): PartitionOptionContext;
	public partitionOption(i?: number): PartitionOptionContext | PartitionOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionOptionContext);
		} else {
			return this.getRuleContext(i, PartitionOptionContext);
		}
	}
	public subpartitionDefinition(): SubpartitionDefinitionContext[];
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext;
	public subpartitionDefinition(i?: number): SubpartitionDefinitionContext | SubpartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SubpartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, SubpartitionDefinitionContext);
		}
	}
	constructor(ctx: PartitionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionListVector) {
			listener.enterPartitionListVector(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionListVector) {
			listener.exitPartitionListVector(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionListVector) {
			return visitor.visitPartitionListVector(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionSimpleContext extends PartitionDefinitionContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionName(): PartitionNameContext {
		return this.getRuleContext(0, PartitionNameContext);
	}
	public partitionOption(): PartitionOptionContext[];
	public partitionOption(i: number): PartitionOptionContext;
	public partitionOption(i?: number): PartitionOptionContext | PartitionOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionOptionContext);
		} else {
			return this.getRuleContext(i, PartitionOptionContext);
		}
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public subpartitionDefinition(): SubpartitionDefinitionContext[];
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext;
	public subpartitionDefinition(i?: number): SubpartitionDefinitionContext | SubpartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SubpartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, SubpartitionDefinitionContext);
		}
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: PartitionDefinitionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionSimple) {
			listener.enterPartitionSimple(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionSimple) {
			listener.exitPartitionSimple(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionSimple) {
			return visitor.visitPartitionSimple(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinerAtomContext extends ParserRuleContext {
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_MAXVALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAXVALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionDefinerAtom; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionDefinerAtom) {
			listener.enterPartitionDefinerAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionDefinerAtom) {
			listener.exitPartitionDefinerAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionDefinerAtom) {
			return visitor.visitPartitionDefinerAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinerVectorContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public partitionDefinerAtom(): PartitionDefinerAtomContext[];
	public partitionDefinerAtom(i: number): PartitionDefinerAtomContext;
	public partitionDefinerAtom(i?: number): PartitionDefinerAtomContext | PartitionDefinerAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinerAtomContext);
		} else {
			return this.getRuleContext(i, PartitionDefinerAtomContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionDefinerVector; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionDefinerVector) {
			listener.enterPartitionDefinerVector(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionDefinerVector) {
			listener.exitPartitionDefinerVector(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionDefinerVector) {
			return visitor.visitPartitionDefinerVector(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubpartitionDefinitionContext extends ParserRuleContext {
	public _logicalName!: UidContext;
	public KW_SUBPARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_SUBPARTITION, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public partitionOption(): PartitionOptionContext[];
	public partitionOption(i: number): PartitionOptionContext;
	public partitionOption(i?: number): PartitionOptionContext | PartitionOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionOptionContext);
		} else {
			return this.getRuleContext(i, PartitionOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_subpartitionDefinition; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubpartitionDefinition) {
			listener.enterSubpartitionDefinition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubpartitionDefinition) {
			listener.exitSubpartitionDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubpartitionDefinition) {
			return visitor.visitSubpartitionDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionOption; }
	public copyFrom(ctx: PartitionOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class PartitionOptionEngineContext extends PartitionOptionContext {
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext {
		return this.getRuleContext(0, EngineNameContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STORAGE, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionEngine) {
			listener.enterPartitionOptionEngine(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionEngine) {
			listener.exitPartitionOptionEngine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionEngine) {
			return visitor.visitPartitionOptionEngine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionCommentContext extends PartitionOptionContext {
	public _comment!: Token;
	public KW_COMMENT(): TerminalNode { return this.getToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionComment) {
			listener.enterPartitionOptionComment(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionComment) {
			listener.exitPartitionOptionComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionComment) {
			return visitor.visitPartitionOptionComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionDataDirectoryContext extends PartitionOptionContext {
	public _dataDirectory!: Token;
	public KW_DATA(): TerminalNode { return this.getToken(MySqlParser.KW_DATA, 0); }
	public KW_DIRECTORY(): TerminalNode { return this.getToken(MySqlParser.KW_DIRECTORY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionDataDirectory) {
			listener.enterPartitionOptionDataDirectory(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionDataDirectory) {
			listener.exitPartitionOptionDataDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionDataDirectory) {
			return visitor.visitPartitionOptionDataDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionIndexDirectoryContext extends PartitionOptionContext {
	public _indexDirectory!: Token;
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public KW_DIRECTORY(): TerminalNode { return this.getToken(MySqlParser.KW_DIRECTORY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionIndexDirectory) {
			listener.enterPartitionOptionIndexDirectory(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionIndexDirectory) {
			listener.exitPartitionOptionIndexDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionIndexDirectory) {
			return visitor.visitPartitionOptionIndexDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionMaxRowsContext extends PartitionOptionContext {
	public _maxRows!: DecimalLiteralContext;
	public KW_MAX_ROWS(): TerminalNode { return this.getToken(MySqlParser.KW_MAX_ROWS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionMaxRows) {
			listener.enterPartitionOptionMaxRows(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionMaxRows) {
			listener.exitPartitionOptionMaxRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionMaxRows) {
			return visitor.visitPartitionOptionMaxRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionMinRowsContext extends PartitionOptionContext {
	public _minRows!: DecimalLiteralContext;
	public KW_MIN_ROWS(): TerminalNode { return this.getToken(MySqlParser.KW_MIN_ROWS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionMinRows) {
			listener.enterPartitionOptionMinRows(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionMinRows) {
			listener.exitPartitionOptionMinRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionMinRows) {
			return visitor.visitPartitionOptionMinRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionTablespaceContext extends PartitionOptionContext {
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public tablespaceName(): TablespaceNameContext {
		return this.getRuleContext(0, TablespaceNameContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionTablespace) {
			listener.enterPartitionOptionTablespace(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionTablespace) {
			listener.exitPartitionOptionTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionTablespace) {
			return visitor.visitPartitionOptionTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionNodeGroupContext extends PartitionOptionContext {
	public _nodegroup!: UidContext;
	public KW_NODEGROUP(): TerminalNode { return this.getToken(MySqlParser.KW_NODEGROUP, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: PartitionOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionOptionNodeGroup) {
			listener.enterPartitionOptionNodeGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionOptionNodeGroup) {
			listener.exitPartitionOptionNodeGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionNodeGroup) {
			return visitor.visitPartitionOptionNodeGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterDatabase; }
	public copyFrom(ctx: AlterDatabaseContext): void {
		super.copyFrom(ctx);
	}
}
export class AlterSimpleDatabaseContext extends AlterDatabaseContext {
	public _dbFormat!: Token;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	public databaseName(): DatabaseNameContext | undefined {
		return this.tryGetRuleContext(0, DatabaseNameContext);
	}
	public createDatabaseOption(): CreateDatabaseOptionContext[];
	public createDatabaseOption(i: number): CreateDatabaseOptionContext;
	public createDatabaseOption(i?: number): CreateDatabaseOptionContext | CreateDatabaseOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CreateDatabaseOptionContext);
		} else {
			return this.getRuleContext(i, CreateDatabaseOptionContext);
		}
	}
	constructor(ctx: AlterDatabaseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterSimpleDatabase) {
			listener.enterAlterSimpleDatabase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterSimpleDatabase) {
			listener.exitAlterSimpleDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterSimpleDatabase) {
			return visitor.visitAlterSimpleDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterUpgradeNameContext extends AlterDatabaseContext {
	public _dbFormat!: Token;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public databaseName(): DatabaseNameContext {
		return this.getRuleContext(0, DatabaseNameContext);
	}
	public KW_UPGRADE(): TerminalNode { return this.getToken(MySqlParser.KW_UPGRADE, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(MySqlParser.KW_DATA, 0); }
	public KW_DIRECTORY(): TerminalNode { return this.getToken(MySqlParser.KW_DIRECTORY, 0); }
	public KW_NAME(): TerminalNode { return this.getToken(MySqlParser.KW_NAME, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	constructor(ctx: AlterDatabaseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterUpgradeName) {
			listener.enterAlterUpgradeName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterUpgradeName) {
			listener.exitAlterUpgradeName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterUpgradeName) {
			return visitor.visitAlterUpgradeName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterEventContext extends ParserRuleContext {
	public _event_name!: FullIdContext;
	public _new_event_name!: FullIdContext;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_EVENT(): TerminalNode { return this.getToken(MySqlParser.KW_EVENT, 0); }
	public fullId(): FullIdContext[];
	public fullId(i: number): FullIdContext;
	public fullId(i?: number): FullIdContext | FullIdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FullIdContext);
		} else {
			return this.getRuleContext(i, FullIdContext);
		}
	}
	public ownerStatement(): OwnerStatementContext | undefined {
		return this.tryGetRuleContext(0, OwnerStatementContext);
	}
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ON);
		} else {
			return this.getToken(MySqlParser.KW_ON, i);
		}
	}
	public KW_SCHEDULE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEDULE, 0); }
	public scheduleExpression(): ScheduleExpressionContext | undefined {
		return this.tryGetRuleContext(0, ScheduleExpressionContext);
	}
	public KW_COMPLETION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPLETION, 0); }
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRESERVE, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TO, 0); }
	public enableType(): EnableTypeContext | undefined {
		return this.tryGetRuleContext(0, EnableTypeContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DO, 0); }
	public routineBody(): RoutineBodyContext | undefined {
		return this.tryGetRuleContext(0, RoutineBodyContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterEvent; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterEvent) {
			listener.enterAlterEvent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterEvent) {
			listener.exitAlterEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterEvent) {
			return visitor.visitAlterEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterFunctionContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(MySqlParser.KW_FUNCTION, 0); }
	public functionName(): FunctionNameContext {
		return this.getRuleContext(0, FunctionNameContext);
	}
	public routineOption(): RoutineOptionContext[];
	public routineOption(i: number): RoutineOptionContext;
	public routineOption(i?: number): RoutineOptionContext | RoutineOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RoutineOptionContext);
		} else {
			return this.getRuleContext(i, RoutineOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterFunction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterFunction) {
			listener.enterAlterFunction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterFunction) {
			listener.exitAlterFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterFunction) {
			return visitor.visitAlterFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterInstanceContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_INSTANCE(): TerminalNode { return this.getToken(MySqlParser.KW_INSTANCE, 0); }
	public KW_ROTATE(): TerminalNode { return this.getToken(MySqlParser.KW_ROTATE, 0); }
	public KW_INNODB(): TerminalNode { return this.getToken(MySqlParser.KW_INNODB, 0); }
	public KW_MASTER(): TerminalNode { return this.getToken(MySqlParser.KW_MASTER, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterInstance; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterInstance) {
			listener.enterAlterInstance(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterInstance) {
			listener.exitAlterInstance(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterInstance) {
			return visitor.visitAlterInstance(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterLogfileGroupContext extends ParserRuleContext {
	public _logfileGroupName!: UidContext;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_LOGFILE(): TerminalNode { return this.getToken(MySqlParser.KW_LOGFILE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_UNDOFILE(): TerminalNode { return this.getToken(MySqlParser.KW_UNDOFILE, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext {
		return this.getRuleContext(0, EngineNameContext);
	}
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_INITIAL_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INITIAL_SIZE, 0); }
	public fileSizeLiteral(): FileSizeLiteralContext | undefined {
		return this.tryGetRuleContext(0, FileSizeLiteralContext);
	}
	public KW_WAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WAIT, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterLogfileGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterLogfileGroup) {
			listener.enterAlterLogfileGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterLogfileGroup) {
			listener.exitAlterLogfileGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterLogfileGroup) {
			return visitor.visitAlterLogfileGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterProcedureContext extends ParserRuleContext {
	public _proc_name!: FullIdContext;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_PROCEDURE(): TerminalNode { return this.getToken(MySqlParser.KW_PROCEDURE, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public routineOption(): RoutineOptionContext[];
	public routineOption(i: number): RoutineOptionContext;
	public routineOption(i?: number): RoutineOptionContext | RoutineOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RoutineOptionContext);
		} else {
			return this.getRuleContext(i, RoutineOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterProcedure; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterProcedure) {
			listener.enterAlterProcedure(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterProcedure) {
			listener.exitAlterProcedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterProcedure) {
			return visitor.visitAlterProcedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterServerContext extends ParserRuleContext {
	public _serverName!: UidContext;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(MySqlParser.KW_SERVER, 0); }
	public KW_OPTIONS(): TerminalNode { return this.getToken(MySqlParser.KW_OPTIONS, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public serverOption(): ServerOptionContext[];
	public serverOption(i: number): ServerOptionContext;
	public serverOption(i?: number): ServerOptionContext | ServerOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ServerOptionContext);
		} else {
			return this.getRuleContext(i, ServerOptionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterServer; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterServer) {
			listener.enterAlterServer(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterServer) {
			listener.exitAlterServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterServer) {
			return visitor.visitAlterServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTableContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public alterOption(): AlterOptionContext[];
	public alterOption(i: number): AlterOptionContext;
	public alterOption(i?: number): AlterOptionContext | AlterOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AlterOptionContext);
		} else {
			return this.getRuleContext(i, AlterOptionContext);
		}
	}
	public alterPartitionSpecification(): AlterPartitionSpecificationContext[];
	public alterPartitionSpecification(i: number): AlterPartitionSpecificationContext;
	public alterPartitionSpecification(i?: number): AlterPartitionSpecificationContext | AlterPartitionSpecificationContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AlterPartitionSpecificationContext);
		} else {
			return this.getRuleContext(i, AlterPartitionSpecificationContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterTable) {
			listener.enterAlterTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterTable) {
			listener.exitAlterTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTable) {
			return visitor.visitAlterTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTablespaceContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public tablespaceName(): TablespaceNameContext {
		return this.getRuleContext(0, TablespaceNameContext);
	}
	public KW_DATAFILE(): TerminalNode { return this.getToken(MySqlParser.KW_DATAFILE, 0); }
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ADD, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DROP, 0); }
	public KW_UNDO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO, 0); }
	public KW_INITIAL_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INITIAL_SIZE, 0); }
	public fileSizeLiteral(): FileSizeLiteralContext[];
	public fileSizeLiteral(i: number): FileSizeLiteralContext;
	public fileSizeLiteral(i?: number): FileSizeLiteralContext | FileSizeLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FileSizeLiteralContext);
		} else {
			return this.getRuleContext(i, FileSizeLiteralContext);
		}
	}
	public KW_WAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WAIT, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TO, 0); }
	public tablespaceNameCreate(): TablespaceNameCreateContext | undefined {
		return this.tryGetRuleContext(0, TablespaceNameCreateContext);
	}
	public KW_AUTOEXTEND_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTOEXTEND_SIZE, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_ENCRYPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENCRYPTION, 0); }
	public KW_ENGINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext | undefined {
		return this.tryGetRuleContext(0, EngineNameContext);
	}
	public KW_ENGINE_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE_ATTRIBUTE, 0); }
	public KW_ACTIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ACTIVE, 0); }
	public KW_INACTIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INACTIVE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterTablespace; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterTablespace) {
			listener.enterAlterTablespace(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterTablespace) {
			listener.exitAlterTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTablespace) {
			return visitor.visitAlterTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterViewContext extends ParserRuleContext {
	public _algType!: Token;
	public _secContext!: Token;
	public _checkOpt!: Token;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(MySqlParser.KW_VIEW, 0); }
	public viewName(): ViewNameContext {
		return this.getRuleContext(0, ViewNameContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(MySqlParser.KW_AS, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public KW_ALGORITHM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALGORITHM, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public ownerStatement(): OwnerStatementContext | undefined {
		return this.tryGetRuleContext(0, OwnerStatementContext);
	}
	public KW_SQL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECURITY, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECK, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTION, 0); }
	public KW_UNDEFINED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDEFINED, 0); }
	public KW_MERGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MERGE, 0); }
	public KW_TEMPTABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPTABLE, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFINER, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVOKER, 0); }
	public KW_CASCADED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CASCADED, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterView; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterView) {
			listener.enterAlterView(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterView) {
			listener.exitAlterView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterView) {
			return visitor.visitAlterView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterOption; }
	public copyFrom(ctx: AlterOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class AlterByTableOptionContext extends AlterOptionContext {
	public tableOption(): TableOptionContext[];
	public tableOption(i: number): TableOptionContext;
	public tableOption(i?: number): TableOptionContext | TableOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableOptionContext);
		} else {
			return this.getRuleContext(i, TableOptionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByTableOption) {
			listener.enterAlterByTableOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByTableOption) {
			listener.exitAlterByTableOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByTableOption) {
			return visitor.visitAlterByTableOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddColumnContext extends AlterOptionContext {
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public columnDefinition(): ColumnDefinitionContext {
		return this.getRuleContext(0, ColumnDefinitionContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AFTER, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddColumn) {
			listener.enterAlterByAddColumn(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddColumn) {
			listener.exitAlterByAddColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddColumn) {
			return visitor.visitAlterByAddColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddColumnsContext extends AlterOptionContext {
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public columnDefinition(): ColumnDefinitionContext[];
	public columnDefinition(i: number): ColumnDefinitionContext;
	public columnDefinition(i?: number): ColumnDefinitionContext | ColumnDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnDefinitionContext);
		} else {
			return this.getRuleContext(i, ColumnDefinitionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddColumns) {
			listener.enterAlterByAddColumns(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddColumns) {
			listener.exitAlterByAddColumns(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddColumns) {
			return visitor.visitAlterByAddColumns(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddIndexContext extends AlterOptionContext {
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getRuleContext(0, IndexColumnNamesContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	public indexName(): IndexNameContext | undefined {
		return this.tryGetRuleContext(0, IndexNameContext);
	}
	public indexType(): IndexTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexTypeContext);
	}
	public indexOption(): IndexOptionContext[];
	public indexOption(i: number): IndexOptionContext;
	public indexOption(i?: number): IndexOptionContext | IndexOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexOptionContext);
		} else {
			return this.getRuleContext(i, IndexOptionContext);
		}
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddIndex) {
			listener.enterAlterByAddIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddIndex) {
			listener.exitAlterByAddIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddIndex) {
			return visitor.visitAlterByAddIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddSpecialIndexContext extends AlterOptionContext {
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getRuleContext(0, IndexColumnNamesContext);
	}
	public KW_FULLTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULLTEXT, 0); }
	public KW_SPATIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SPATIAL, 0); }
	public indexName(): IndexNameContext | undefined {
		return this.tryGetRuleContext(0, IndexNameContext);
	}
	public indexOption(): IndexOptionContext[];
	public indexOption(i: number): IndexOptionContext;
	public indexOption(i?: number): IndexOptionContext | IndexOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexOptionContext);
		} else {
			return this.getRuleContext(i, IndexOptionContext);
		}
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddSpecialIndex) {
			listener.enterAlterByAddSpecialIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddSpecialIndex) {
			listener.exitAlterByAddSpecialIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddSpecialIndex) {
			return visitor.visitAlterByAddSpecialIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddPrimaryKeyContext extends AlterOptionContext {
	public _symbol!: UidContext;
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_PRIMARY(): TerminalNode { return this.getToken(MySqlParser.KW_PRIMARY, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getRuleContext(0, IndexColumnNamesContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT, 0); }
	public indexType(): IndexTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexTypeContext);
	}
	public indexOption(): IndexOptionContext[];
	public indexOption(i: number): IndexOptionContext;
	public indexOption(i?: number): IndexOptionContext | IndexOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexOptionContext);
		} else {
			return this.getRuleContext(i, IndexOptionContext);
		}
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddPrimaryKey) {
			listener.enterAlterByAddPrimaryKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddPrimaryKey) {
			listener.exitAlterByAddPrimaryKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddPrimaryKey) {
			return visitor.visitAlterByAddPrimaryKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddUniqueKeyContext extends AlterOptionContext {
	public _symbol!: UidContext;
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_UNIQUE(): TerminalNode { return this.getToken(MySqlParser.KW_UNIQUE, 0); }
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getRuleContext(0, IndexColumnNamesContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT, 0); }
	public indexName(): IndexNameContext | undefined {
		return this.tryGetRuleContext(0, IndexNameContext);
	}
	public indexType(): IndexTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexTypeContext);
	}
	public indexOption(): IndexOptionContext[];
	public indexOption(i: number): IndexOptionContext;
	public indexOption(i?: number): IndexOptionContext | IndexOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexOptionContext);
		} else {
			return this.getRuleContext(i, IndexOptionContext);
		}
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddUniqueKey) {
			listener.enterAlterByAddUniqueKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddUniqueKey) {
			listener.exitAlterByAddUniqueKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddUniqueKey) {
			return visitor.visitAlterByAddUniqueKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddForeignKeyContext extends AlterOptionContext {
	public _symbol!: UidContext;
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(MySqlParser.KW_FOREIGN, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getRuleContext(0, IndexColumnNamesContext);
	}
	public referenceDefinition(): ReferenceDefinitionContext {
		return this.getRuleContext(0, ReferenceDefinitionContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT, 0); }
	public indexName(): IndexNameContext | undefined {
		return this.tryGetRuleContext(0, IndexNameContext);
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddForeignKey) {
			listener.enterAlterByAddForeignKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddForeignKey) {
			listener.exitAlterByAddForeignKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddForeignKey) {
			return visitor.visitAlterByAddForeignKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddCheckTableConstraintContext extends AlterOptionContext {
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public checkConstraintDefinition(): CheckConstraintDefinitionContext | undefined {
		return this.tryGetRuleContext(0, CheckConstraintDefinitionContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddCheckTableConstraint) {
			listener.enterAlterByAddCheckTableConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddCheckTableConstraint) {
			listener.exitAlterByAddCheckTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddCheckTableConstraint) {
			return visitor.visitAlterByAddCheckTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropConstraintCheckContext extends AlterOptionContext {
	public _symbol!: UidContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECK, 0); }
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDropConstraintCheck) {
			listener.enterAlterByDropConstraintCheck(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDropConstraintCheck) {
			listener.exitAlterByDropConstraintCheck(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropConstraintCheck) {
			return visitor.visitAlterByDropConstraintCheck(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAlterCheckTableConstraintContext extends AlterOptionContext {
	public _symbol!: UidContext;
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECK, 0); }
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	public KW_ENFORCED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENFORCED, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAlterCheckTableConstraint) {
			listener.enterAlterByAlterCheckTableConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAlterCheckTableConstraint) {
			listener.exitAlterByAlterCheckTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAlterCheckTableConstraint) {
			return visitor.visitAlterByAlterCheckTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterBySetAlgorithmContext extends AlterOptionContext {
	public KW_ALGORITHM(): TerminalNode { return this.getToken(MySqlParser.KW_ALGORITHM, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_INSTANT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSTANT, 0); }
	public KW_INPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INPLACE, 0); }
	public KW_COPY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COPY, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterBySetAlgorithm) {
			listener.enterAlterBySetAlgorithm(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterBySetAlgorithm) {
			listener.exitAlterBySetAlgorithm(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterBySetAlgorithm) {
			return visitor.visitAlterBySetAlgorithm(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAlterColumnDefaultContext extends AlterOptionContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public defaultValue(): DefaultValueContext | undefined {
		return this.tryGetRuleContext(0, DefaultValueContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DROP, 0); }
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN, 0); }
	public KW_VISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VISIBLE, 0); }
	public KW_INVISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVISIBLE, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAlterColumnDefault) {
			listener.enterAlterByAlterColumnDefault(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAlterColumnDefault) {
			listener.exitAlterByAlterColumnDefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAlterColumnDefault) {
			return visitor.visitAlterByAlterColumnDefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAlterIndexVisibilityContext extends AlterOptionContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public indexName(): IndexNameContext {
		return this.getRuleContext(0, IndexNameContext);
	}
	public KW_VISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VISIBLE, 0); }
	public KW_INVISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVISIBLE, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAlterIndexVisibility) {
			listener.enterAlterByAlterIndexVisibility(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAlterIndexVisibility) {
			listener.exitAlterByAlterIndexVisibility(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAlterIndexVisibility) {
			return visitor.visitAlterByAlterIndexVisibility(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByChangeColumnContext extends AlterOptionContext {
	public _oldColumn!: ColumnNameContext;
	public _newColumn!: ColumnNameCreateContext;
	public KW_CHANGE(): TerminalNode { return this.getToken(MySqlParser.KW_CHANGE, 0); }
	public columnDefinition(): ColumnDefinitionContext {
		return this.getRuleContext(0, ColumnDefinitionContext);
	}
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AFTER, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByChangeColumn) {
			listener.enterAlterByChangeColumn(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByChangeColumn) {
			listener.exitAlterByChangeColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByChangeColumn) {
			return visitor.visitAlterByChangeColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDefaultCharsetContext extends AlterOptionContext {
	public KW_CHARACTER(): TerminalNode { return this.getToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public charsetName(): CharsetNameContext {
		return this.getRuleContext(0, CharsetNameContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDefaultCharset) {
			listener.enterAlterByDefaultCharset(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDefaultCharset) {
			listener.exitAlterByDefaultCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDefaultCharset) {
			return visitor.visitAlterByDefaultCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByConvertCharsetContext extends AlterOptionContext {
	public KW_CONVERT(): TerminalNode { return this.getToken(MySqlParser.KW_CONVERT, 0); }
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public charsetName(): CharsetNameContext {
		return this.getRuleContext(0, CharsetNameContext);
	}
	public KW_CHARSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARSET, 0); }
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByConvertCharset) {
			listener.enterAlterByConvertCharset(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByConvertCharset) {
			listener.exitAlterByConvertCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByConvertCharset) {
			return visitor.visitAlterByConvertCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterKeysContext extends AlterOptionContext {
	public KW_KEYS(): TerminalNode { return this.getToken(MySqlParser.KW_KEYS, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISABLE, 0); }
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENABLE, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterKeys) {
			listener.enterAlterKeys(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterKeys) {
			listener.exitAlterKeys(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterKeys) {
			return visitor.visitAlterKeys(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterTablespaceOptionContext extends AlterOptionContext {
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public KW_DISCARD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISCARD, 0); }
	public KW_IMPORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IMPORT, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterTablespaceOption) {
			listener.enterAlterTablespaceOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterTablespaceOption) {
			listener.exitAlterTablespaceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTablespaceOption) {
			return visitor.visitAlterTablespaceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropColumnContext extends AlterOptionContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDropColumn) {
			listener.enterAlterByDropColumn(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDropColumn) {
			listener.exitAlterByDropColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropColumn) {
			return visitor.visitAlterByDropColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropIndexContext extends AlterOptionContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public indexName(): IndexNameContext {
		return this.getRuleContext(0, IndexNameContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDropIndex) {
			listener.enterAlterByDropIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDropIndex) {
			listener.exitAlterByDropIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropIndex) {
			return visitor.visitAlterByDropIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropPrimaryKeyContext extends AlterOptionContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_PRIMARY(): TerminalNode { return this.getToken(MySqlParser.KW_PRIMARY, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDropPrimaryKey) {
			listener.enterAlterByDropPrimaryKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDropPrimaryKey) {
			listener.exitAlterByDropPrimaryKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropPrimaryKey) {
			return visitor.visitAlterByDropPrimaryKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropForeignKeyContext extends AlterOptionContext {
	public _fk_symbol!: UidContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(MySqlParser.KW_FOREIGN, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(MySqlParser.KW_KEY, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDropForeignKey) {
			listener.enterAlterByDropForeignKey(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDropForeignKey) {
			listener.exitAlterByDropForeignKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropForeignKey) {
			return visitor.visitAlterByDropForeignKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByForceContext extends AlterOptionContext {
	public KW_FORCE(): TerminalNode { return this.getToken(MySqlParser.KW_FORCE, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByForce) {
			listener.enterAlterByForce(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByForce) {
			listener.exitAlterByForce(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByForce) {
			return visitor.visitAlterByForce(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByLockContext extends AlterOptionContext {
	public _lockType!: Token;
	public KW_LOCK(): TerminalNode { return this.getToken(MySqlParser.KW_LOCK, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public KW_SHARED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHARED, 0); }
	public KW_EXCLUSIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXCLUSIVE, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByLock) {
			listener.enterAlterByLock(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByLock) {
			listener.exitAlterByLock(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByLock) {
			return visitor.visitAlterByLock(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByModifyColumnContext extends AlterOptionContext {
	public KW_MODIFY(): TerminalNode { return this.getToken(MySqlParser.KW_MODIFY, 0); }
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public columnDefinition(): ColumnDefinitionContext {
		return this.getRuleContext(0, ColumnDefinitionContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AFTER, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByModifyColumn) {
			listener.enterAlterByModifyColumn(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByModifyColumn) {
			listener.exitAlterByModifyColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByModifyColumn) {
			return visitor.visitAlterByModifyColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByOrderContext extends AlterOptionContext {
	public KW_ORDER(): TerminalNode { return this.getToken(MySqlParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public columnNames(): ColumnNamesContext {
		return this.getRuleContext(0, ColumnNamesContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByOrder) {
			listener.enterAlterByOrder(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByOrder) {
			listener.exitAlterByOrder(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByOrder) {
			return visitor.visitAlterByOrder(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRenameColumnContext extends AlterOptionContext {
	public _olcdColumn!: ColumnNameContext;
	public _newColumn!: ColumnNameCreateContext;
	public KW_RENAME(): TerminalNode { return this.getToken(MySqlParser.KW_RENAME, 0); }
	public KW_COLUMN(): TerminalNode { return this.getToken(MySqlParser.KW_COLUMN, 0); }
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByRenameColumn) {
			listener.enterAlterByRenameColumn(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByRenameColumn) {
			listener.exitAlterByRenameColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRenameColumn) {
			return visitor.visitAlterByRenameColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRenameIndexContext extends AlterOptionContext {
	public _indexFormat!: Token;
	public KW_RENAME(): TerminalNode { return this.getToken(MySqlParser.KW_RENAME, 0); }
	public indexName(): IndexNameContext {
		return this.getRuleContext(0, IndexNameContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public indexNameCreate(): IndexNameCreateContext {
		return this.getRuleContext(0, IndexNameCreateContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByRenameIndex) {
			listener.enterAlterByRenameIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByRenameIndex) {
			listener.exitAlterByRenameIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRenameIndex) {
			return visitor.visitAlterByRenameIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRenameContext extends AlterOptionContext {
	public _renameFormat!: Token;
	public KW_RENAME(): TerminalNode { return this.getToken(MySqlParser.KW_RENAME, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TO, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByRename) {
			listener.enterAlterByRename(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByRename) {
			listener.exitAlterByRename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRename) {
			return visitor.visitAlterByRename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByValidateContext extends AlterOptionContext {
	public KW_VALIDATION(): TerminalNode { return this.getToken(MySqlParser.KW_VALIDATION, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITHOUT, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByValidate) {
			listener.enterAlterByValidate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByValidate) {
			listener.exitAlterByValidate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByValidate) {
			return visitor.visitAlterByValidate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterPartitionContext extends AlterOptionContext {
	public alterPartitionSpecification(): AlterPartitionSpecificationContext {
		return this.getRuleContext(0, AlterPartitionSpecificationContext);
	}
	constructor(ctx: AlterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterPartition) {
			listener.enterAlterPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterPartition) {
			listener.exitAlterPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterPartition) {
			return visitor.visitAlterPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterPartitionSpecificationContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterPartitionSpecification; }
	public copyFrom(ctx: AlterPartitionSpecificationContext): void {
		super.copyFrom(ctx);
	}
}
export class AlterByAddPartitionContext extends AlterPartitionSpecificationContext {
	public KW_ADD(): TerminalNode { return this.getToken(MySqlParser.KW_ADD, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public partitionDefinition(): PartitionDefinitionContext[];
	public partitionDefinition(i: number): PartitionDefinitionContext;
	public partitionDefinition(i?: number): PartitionDefinitionContext | PartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, PartitionDefinitionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAddPartition) {
			listener.enterAlterByAddPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAddPartition) {
			listener.exitAlterByAddPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddPartition) {
			return visitor.visitAlterByAddPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropPartitionContext extends AlterPartitionSpecificationContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext {
		return this.getRuleContext(0, PartitionNamesContext);
	}
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDropPartition) {
			listener.enterAlterByDropPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDropPartition) {
			listener.exitAlterByDropPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropPartition) {
			return visitor.visitAlterByDropPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDiscardPartitionContext extends AlterPartitionSpecificationContext {
	public KW_DISCARD(): TerminalNode { return this.getToken(MySqlParser.KW_DISCARD, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByDiscardPartition) {
			listener.enterAlterByDiscardPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByDiscardPartition) {
			listener.exitAlterByDiscardPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDiscardPartition) {
			return visitor.visitAlterByDiscardPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByImportPartitionContext extends AlterPartitionSpecificationContext {
	public KW_IMPORT(): TerminalNode { return this.getToken(MySqlParser.KW_IMPORT, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByImportPartition) {
			listener.enterAlterByImportPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByImportPartition) {
			listener.exitAlterByImportPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByImportPartition) {
			return visitor.visitAlterByImportPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByTruncatePartitionContext extends AlterPartitionSpecificationContext {
	public KW_TRUNCATE(): TerminalNode { return this.getToken(MySqlParser.KW_TRUNCATE, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByTruncatePartition) {
			listener.enterAlterByTruncatePartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByTruncatePartition) {
			listener.exitAlterByTruncatePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByTruncatePartition) {
			return visitor.visitAlterByTruncatePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByCoalescePartitionContext extends AlterPartitionSpecificationContext {
	public KW_COALESCE(): TerminalNode { return this.getToken(MySqlParser.KW_COALESCE, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByCoalescePartition) {
			listener.enterAlterByCoalescePartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByCoalescePartition) {
			listener.exitAlterByCoalescePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByCoalescePartition) {
			return visitor.visitAlterByCoalescePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByReorganizePartitionContext extends AlterPartitionSpecificationContext {
	public KW_REORGANIZE(): TerminalNode { return this.getToken(MySqlParser.KW_REORGANIZE, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext {
		return this.getRuleContext(0, PartitionNamesContext);
	}
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public partitionDefinition(): PartitionDefinitionContext[];
	public partitionDefinition(i: number): PartitionDefinitionContext;
	public partitionDefinition(i?: number): PartitionDefinitionContext | PartitionDefinitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionDefinitionContext);
		} else {
			return this.getRuleContext(i, PartitionDefinitionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByReorganizePartition) {
			listener.enterAlterByReorganizePartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByReorganizePartition) {
			listener.exitAlterByReorganizePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByReorganizePartition) {
			return visitor.visitAlterByReorganizePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByExchangePartitionContext extends AlterPartitionSpecificationContext {
	public _validationFormat!: Token;
	public KW_EXCHANGE(): TerminalNode { return this.getToken(MySqlParser.KW_EXCHANGE, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionName(): PartitionNameContext {
		return this.getRuleContext(0, PartitionNameContext);
	}
	public KW_WITH(): TerminalNode[];
	public KW_WITH(i: number): TerminalNode;
	public KW_WITH(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_WITH);
		} else {
			return this.getToken(MySqlParser.KW_WITH, i);
		}
	}
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_VALIDATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALIDATION, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITHOUT, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByExchangePartition) {
			listener.enterAlterByExchangePartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByExchangePartition) {
			listener.exitAlterByExchangePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByExchangePartition) {
			return visitor.visitAlterByExchangePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAnalyzePartitionContext extends AlterPartitionSpecificationContext {
	public KW_ANALYZE(): TerminalNode { return this.getToken(MySqlParser.KW_ANALYZE, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByAnalyzePartition) {
			listener.enterAlterByAnalyzePartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByAnalyzePartition) {
			listener.exitAlterByAnalyzePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAnalyzePartition) {
			return visitor.visitAlterByAnalyzePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByCheckPartitionContext extends AlterPartitionSpecificationContext {
	public KW_CHECK(): TerminalNode { return this.getToken(MySqlParser.KW_CHECK, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByCheckPartition) {
			listener.enterAlterByCheckPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByCheckPartition) {
			listener.exitAlterByCheckPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByCheckPartition) {
			return visitor.visitAlterByCheckPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByOptimizePartitionContext extends AlterPartitionSpecificationContext {
	public KW_OPTIMIZE(): TerminalNode { return this.getToken(MySqlParser.KW_OPTIMIZE, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByOptimizePartition) {
			listener.enterAlterByOptimizePartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByOptimizePartition) {
			listener.exitAlterByOptimizePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByOptimizePartition) {
			return visitor.visitAlterByOptimizePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRebuildPartitionContext extends AlterPartitionSpecificationContext {
	public KW_REBUILD(): TerminalNode { return this.getToken(MySqlParser.KW_REBUILD, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByRebuildPartition) {
			listener.enterAlterByRebuildPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByRebuildPartition) {
			listener.exitAlterByRebuildPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRebuildPartition) {
			return visitor.visitAlterByRebuildPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRepairPartitionContext extends AlterPartitionSpecificationContext {
	public KW_REPAIR(): TerminalNode { return this.getToken(MySqlParser.KW_REPAIR, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByRepairPartition) {
			listener.enterAlterByRepairPartition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByRepairPartition) {
			listener.exitAlterByRepairPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRepairPartition) {
			return visitor.visitAlterByRepairPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRemovePartitioningContext extends AlterPartitionSpecificationContext {
	public KW_REMOVE(): TerminalNode { return this.getToken(MySqlParser.KW_REMOVE, 0); }
	public KW_PARTITIONING(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITIONING, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByRemovePartitioning) {
			listener.enterAlterByRemovePartitioning(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByRemovePartitioning) {
			listener.exitAlterByRemovePartitioning(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRemovePartitioning) {
			return visitor.visitAlterByRemovePartitioning(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByUpgradePartitioningContext extends AlterPartitionSpecificationContext {
	public KW_UPGRADE(): TerminalNode { return this.getToken(MySqlParser.KW_UPGRADE, 0); }
	public KW_PARTITIONING(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITIONING, 0); }
	constructor(ctx: AlterPartitionSpecificationContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterByUpgradePartitioning) {
			listener.enterAlterByUpgradePartitioning(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterByUpgradePartitioning) {
			listener.exitAlterByUpgradePartitioning(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByUpgradePartitioning) {
			return visitor.visitAlterByUpgradePartitioning(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropDatabaseContext extends ParserRuleContext {
	public _dbFormat!: Token;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public databaseName(): DatabaseNameContext {
		return this.getRuleContext(0, DatabaseNameContext);
	}
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropDatabase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropDatabase) {
			listener.enterDropDatabase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropDatabase) {
			listener.exitDropDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropDatabase) {
			return visitor.visitDropDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropEventContext extends ParserRuleContext {
	public _event_name!: FullIdContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_EVENT(): TerminalNode { return this.getToken(MySqlParser.KW_EVENT, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropEvent; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropEvent) {
			listener.enterDropEvent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropEvent) {
			listener.exitDropEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropEvent) {
			return visitor.visitDropEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropIndexContext extends ParserRuleContext {
	public _intimeAction!: Token;
	public _algType!: Token;
	public _lockType!: Token;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public indexName(): IndexNameContext {
		return this.getRuleContext(0, IndexNameContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_ALGORITHM(): TerminalNode[];
	public KW_ALGORITHM(i: number): TerminalNode;
	public KW_ALGORITHM(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ALGORITHM);
		} else {
			return this.getToken(MySqlParser.KW_ALGORITHM, i);
		}
	}
	public KW_LOCK(): TerminalNode[];
	public KW_LOCK(i: number): TerminalNode;
	public KW_LOCK(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_LOCK);
		} else {
			return this.getToken(MySqlParser.KW_LOCK, i);
		}
	}
	public KW_ONLINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLINE, 0); }
	public KW_OFFLINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFFLINE, 0); }
	public KW_DEFAULT(): TerminalNode[];
	public KW_DEFAULT(i: number): TerminalNode;
	public KW_DEFAULT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_DEFAULT);
		} else {
			return this.getToken(MySqlParser.KW_DEFAULT, i);
		}
	}
	public KW_INPLACE(): TerminalNode[];
	public KW_INPLACE(i: number): TerminalNode;
	public KW_INPLACE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_INPLACE);
		} else {
			return this.getToken(MySqlParser.KW_INPLACE, i);
		}
	}
	public KW_COPY(): TerminalNode[];
	public KW_COPY(i: number): TerminalNode;
	public KW_COPY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_COPY);
		} else {
			return this.getToken(MySqlParser.KW_COPY, i);
		}
	}
	public KW_NONE(): TerminalNode[];
	public KW_NONE(i: number): TerminalNode;
	public KW_NONE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_NONE);
		} else {
			return this.getToken(MySqlParser.KW_NONE, i);
		}
	}
	public KW_SHARED(): TerminalNode[];
	public KW_SHARED(i: number): TerminalNode;
	public KW_SHARED(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_SHARED);
		} else {
			return this.getToken(MySqlParser.KW_SHARED, i);
		}
	}
	public KW_EXCLUSIVE(): TerminalNode[];
	public KW_EXCLUSIVE(i: number): TerminalNode;
	public KW_EXCLUSIVE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_EXCLUSIVE);
		} else {
			return this.getToken(MySqlParser.KW_EXCLUSIVE, i);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropIndex; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropIndex) {
			listener.enterDropIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropIndex) {
			listener.exitDropIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropIndex) {
			return visitor.visitDropIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropLogfileGroupContext extends ParserRuleContext {
	public _logfileGroupName!: UidContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_LOGFILE(): TerminalNode { return this.getToken(MySqlParser.KW_LOGFILE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext {
		return this.getRuleContext(0, EngineNameContext);
	}
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropLogfileGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropLogfileGroup) {
			listener.enterDropLogfileGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropLogfileGroup) {
			listener.exitDropLogfileGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropLogfileGroup) {
			return visitor.visitDropLogfileGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropProcedureContext extends ParserRuleContext {
	public _sp_name!: FullIdContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_PROCEDURE(): TerminalNode { return this.getToken(MySqlParser.KW_PROCEDURE, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropProcedure; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropProcedure) {
			listener.enterDropProcedure(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropProcedure) {
			listener.exitDropProcedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropProcedure) {
			return visitor.visitDropProcedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropFunctionContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(MySqlParser.KW_FUNCTION, 0); }
	public functionName(): FunctionNameContext {
		return this.getRuleContext(0, FunctionNameContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropFunction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropFunction) {
			listener.enterDropFunction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropFunction) {
			listener.exitDropFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropFunction) {
			return visitor.visitDropFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropServerContext extends ParserRuleContext {
	public _serverName!: UidContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(MySqlParser.KW_SERVER, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropServer; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropServer) {
			listener.enterDropServer(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropServer) {
			listener.exitDropServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropServer) {
			return visitor.visitDropServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropSpatialContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_SPATIAL(): TerminalNode { return this.getToken(MySqlParser.KW_SPATIAL, 0); }
	public KW_REFERENCE(): TerminalNode { return this.getToken(MySqlParser.KW_REFERENCE, 0); }
	public KW_SYSTEM(): TerminalNode { return this.getToken(MySqlParser.KW_SYSTEM, 0); }
	public DECIMAL_LITERAL(): TerminalNode { return this.getToken(MySqlParser.DECIMAL_LITERAL, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropSpatial; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropSpatial) {
			listener.enterDropSpatial(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropSpatial) {
			listener.exitDropSpatial(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropSpatial) {
			return visitor.visitDropSpatial(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTableContext extends ParserRuleContext {
	public _dropType!: Token;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPORARY, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESTRICT, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CASCADE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropTable) {
			listener.enterDropTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropTable) {
			listener.exitDropTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropTable) {
			return visitor.visitDropTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTablespaceContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLESPACE, 0); }
	public tablespaceName(): TablespaceNameContext {
		return this.getRuleContext(0, TablespaceNameContext);
	}
	public KW_UNDO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO, 0); }
	public KW_ENGINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext | undefined {
		return this.tryGetRuleContext(0, EngineNameContext);
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropTablespace; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropTablespace) {
			listener.enterDropTablespace(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropTablespace) {
			listener.exitDropTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropTablespace) {
			return visitor.visitDropTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTriggerContext extends ParserRuleContext {
	public _trigger_name!: FullIdContext;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(MySqlParser.KW_TRIGGER, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropTrigger; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropTrigger) {
			listener.enterDropTrigger(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropTrigger) {
			listener.exitDropTrigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropTrigger) {
			return visitor.visitDropTrigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropViewContext extends ParserRuleContext {
	public _dropType!: Token;
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(MySqlParser.KW_VIEW, 0); }
	public viewName(): ViewNameContext[];
	public viewName(i: number): ViewNameContext;
	public viewName(i?: number): ViewNameContext | ViewNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ViewNameContext);
		} else {
			return this.getRuleContext(i, ViewNameContext);
		}
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESTRICT, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CASCADE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropView; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropView) {
			listener.enterDropView(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropView) {
			listener.exitDropView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropView) {
			return visitor.visitDropView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropRoleContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(MySqlParser.KW_ROLE, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext {
		return this.getRuleContext(0, UserOrRoleNamesContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropRole; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropRole) {
			listener.enterDropRole(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropRole) {
			listener.exitDropRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropRole) {
			return visitor.visitDropRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetRoleContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(MySqlParser.KW_ROLE, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TO, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext | undefined {
		return this.tryGetRuleContext(0, UserOrRoleNamesContext);
	}
	public userOrRoleName(): UserOrRoleNameContext[];
	public userOrRoleName(i: number): UserOrRoleNameContext;
	public userOrRoleName(i?: number): UserOrRoleNameContext | UserOrRoleNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserOrRoleNameContext);
		} else {
			return this.getRuleContext(i, UserOrRoleNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public roleOption(): RoleOptionContext | undefined {
		return this.tryGetRuleContext(0, RoleOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setRole; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetRole) {
			listener.enterSetRole(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetRole) {
			listener.exitSetRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetRole) {
			return visitor.visitSetRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameTableContext extends ParserRuleContext {
	public KW_RENAME(): TerminalNode { return this.getToken(MySqlParser.KW_RENAME, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public renameTableClause(): RenameTableClauseContext[];
	public renameTableClause(i: number): RenameTableClauseContext;
	public renameTableClause(i?: number): RenameTableClauseContext | RenameTableClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RenameTableClauseContext);
		} else {
			return this.getRuleContext(i, RenameTableClauseContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_renameTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRenameTable) {
			listener.enterRenameTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRenameTable) {
			listener.exitRenameTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRenameTable) {
			return visitor.visitRenameTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameTableClauseContext extends ParserRuleContext {
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_renameTableClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRenameTableClause) {
			listener.enterRenameTableClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRenameTableClause) {
			listener.exitRenameTableClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRenameTableClause) {
			return visitor.visitRenameTableClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TruncateTableContext extends ParserRuleContext {
	public KW_TRUNCATE(): TerminalNode { return this.getToken(MySqlParser.KW_TRUNCATE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_truncateTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTruncateTable) {
			listener.enterTruncateTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTruncateTable) {
			listener.exitTruncateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTruncateTable) {
			return visitor.visitTruncateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CallStatementContext extends ParserRuleContext {
	public _sp_name!: FullIdContext;
	public KW_CALL(): TerminalNode { return this.getToken(MySqlParser.KW_CALL, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public constants(): ConstantsContext | undefined {
		return this.tryGetRuleContext(0, ConstantsContext);
	}
	public expressions(): ExpressionsContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_callStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCallStatement) {
			listener.enterCallStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCallStatement) {
			listener.exitCallStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCallStatement) {
			return visitor.visitCallStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeleteStatementContext extends ParserRuleContext {
	public singleDeleteStatement(): SingleDeleteStatementContext | undefined {
		return this.tryGetRuleContext(0, SingleDeleteStatementContext);
	}
	public multipleDeleteStatement(): MultipleDeleteStatementContext | undefined {
		return this.tryGetRuleContext(0, MultipleDeleteStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_deleteStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDeleteStatement) {
			listener.enterDeleteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDeleteStatement) {
			listener.exitDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDeleteStatement) {
			return visitor.visitDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DoStatementContext extends ParserRuleContext {
	public KW_DO(): TerminalNode { return this.getToken(MySqlParser.KW_DO, 0); }
	public expressions(): ExpressionsContext {
		return this.getRuleContext(0, ExpressionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_doStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDoStatement) {
			listener.enterDoStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDoStatement) {
			listener.exitDoStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDoStatement) {
			return visitor.visitDoStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerStatementContext extends ParserRuleContext {
	public handlerOpenStatement(): HandlerOpenStatementContext | undefined {
		return this.tryGetRuleContext(0, HandlerOpenStatementContext);
	}
	public handlerReadIndexStatement(): HandlerReadIndexStatementContext | undefined {
		return this.tryGetRuleContext(0, HandlerReadIndexStatementContext);
	}
	public handlerReadStatement(): HandlerReadStatementContext | undefined {
		return this.tryGetRuleContext(0, HandlerReadStatementContext);
	}
	public handlerCloseStatement(): HandlerCloseStatementContext | undefined {
		return this.tryGetRuleContext(0, HandlerCloseStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_handlerStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerStatement) {
			listener.enterHandlerStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerStatement) {
			listener.exitHandlerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerStatement) {
			return visitor.visitHandlerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _duplicatedFirst!: UpdatedElementContext;
	public _updatedElement!: UpdatedElementContext;
	public _duplicatedElements: UpdatedElementContext[] = [];
	public KW_INSERT(): TerminalNode { return this.getToken(MySqlParser.KW_INSERT, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public setAssignmentList(): SetAssignmentListContext | undefined {
		return this.tryGetRuleContext(0, SetAssignmentListContext);
	}
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTO, 0); }
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public asRowAlias(): AsRowAliasContext[];
	public asRowAlias(i: number): AsRowAliasContext;
	public asRowAlias(i?: number): AsRowAliasContext | AsRowAliasContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AsRowAliasContext);
		} else {
			return this.getRuleContext(i, AsRowAliasContext);
		}
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public KW_DUPLICATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DUPLICATE, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public updatedElement(): UpdatedElementContext[];
	public updatedElement(i: number): UpdatedElementContext;
	public updatedElement(i?: number): UpdatedElementContext | UpdatedElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UpdatedElementContext);
		} else {
			return this.getRuleContext(i, UpdatedElementContext);
		}
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public KW_DELAYED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DELAYED, 0); }
	public KW_HIGH_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HIGH_PRIORITY, 0); }
	public fullColumnNames(): FullColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, FullColumnNamesContext);
	}
	public valuesOrValueList(): ValuesOrValueListContext | undefined {
		return this.tryGetRuleContext(0, ValuesOrValueListContext);
	}
	public selectOrTableOrValues(): SelectOrTableOrValuesContext | undefined {
		return this.tryGetRuleContext(0, SelectOrTableOrValuesContext);
	}
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_insertStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInsertStatement) {
			listener.enterInsertStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInsertStatement) {
			listener.exitInsertStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInsertStatement) {
			return visitor.visitInsertStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AsRowAliasContext extends ParserRuleContext {
	public _rowAlias!: UidContext;
	public KW_AS(): TerminalNode { return this.getToken(MySqlParser.KW_AS, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public fullColumnNames(): FullColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, FullColumnNamesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_asRowAlias; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAsRowAlias) {
			listener.enterAsRowAlias(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAsRowAlias) {
			listener.exitAsRowAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAsRowAlias) {
			return visitor.visitAsRowAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectOrTableOrValuesContext extends ParserRuleContext {
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public rowValuesList(): RowValuesListContext | undefined {
		return this.tryGetRuleContext(0, RowValuesListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectOrTableOrValues; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectOrTableOrValues) {
			listener.enterSelectOrTableOrValues(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectOrTableOrValues) {
			listener.exitSelectOrTableOrValues(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectOrTableOrValues) {
			return visitor.visitSelectOrTableOrValues(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InterSectStatementContext extends ParserRuleContext {
	public interSectQuery(): InterSectQueryContext[];
	public interSectQuery(i: number): InterSectQueryContext;
	public interSectQuery(i?: number): InterSectQueryContext | InterSectQueryContext[] {
		if (i === undefined) {
			return this.getRuleContexts(InterSectQueryContext);
		} else {
			return this.getRuleContext(i, InterSectQueryContext);
		}
	}
	public KW_INTERSECT(): TerminalNode[];
	public KW_INTERSECT(i: number): TerminalNode;
	public KW_INTERSECT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_INTERSECT);
		} else {
			return this.getToken(MySqlParser.KW_INTERSECT, i);
		}
	}
	public KW_ALL(): TerminalNode[];
	public KW_ALL(i: number): TerminalNode;
	public KW_ALL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ALL);
		} else {
			return this.getToken(MySqlParser.KW_ALL, i);
		}
	}
	public KW_DISTINCT(): TerminalNode[];
	public KW_DISTINCT(i: number): TerminalNode;
	public KW_DISTINCT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_DISTINCT);
		} else {
			return this.getToken(MySqlParser.KW_DISTINCT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_interSectStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInterSectStatement) {
			listener.enterInterSectStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInterSectStatement) {
			listener.exitInterSectStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInterSectStatement) {
			return visitor.visitInterSectStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InterSectQueryContext extends ParserRuleContext {
	public querySpecification(): QuerySpecificationContext {
		return this.getRuleContext(0, QuerySpecificationContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_interSectQuery; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInterSectQuery) {
			listener.enterInterSectQuery(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInterSectQuery) {
			listener.exitInterSectQuery(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInterSectQuery) {
			return visitor.visitInterSectQuery(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadDataStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _filename!: Token;
	public _violation!: Token;
	public _charset!: CharsetNameContext;
	public _fieldsFormat!: Token;
	public _linesFormat!: Token;
	public KW_LOAD(): TerminalNode { return this.getToken(MySqlParser.KW_LOAD, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(MySqlParser.KW_DATA, 0); }
	public KW_INFILE(): TerminalNode { return this.getToken(MySqlParser.KW_INFILE, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode[];
	public KW_SET(i: number): TerminalNode;
	public KW_SET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_SET);
		} else {
			return this.getToken(MySqlParser.KW_SET, i);
		}
	}
	public KW_LINES(): TerminalNode[];
	public KW_LINES(i: number): TerminalNode;
	public KW_LINES(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_LINES);
		} else {
			return this.getToken(MySqlParser.KW_LINES, i);
		}
	}
	public KW_IGNORE(): TerminalNode[];
	public KW_IGNORE(i: number): TerminalNode;
	public KW_IGNORE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_IGNORE);
		} else {
			return this.getToken(MySqlParser.KW_IGNORE, i);
		}
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public assignmentField(): AssignmentFieldContext[];
	public assignmentField(i: number): AssignmentFieldContext;
	public assignmentField(i?: number): AssignmentFieldContext | AssignmentFieldContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AssignmentFieldContext);
		} else {
			return this.getRuleContext(i, AssignmentFieldContext);
		}
	}
	public updatedElement(): UpdatedElementContext[];
	public updatedElement(i: number): UpdatedElementContext;
	public updatedElement(i?: number): UpdatedElementContext | UpdatedElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UpdatedElementContext);
		} else {
			return this.getRuleContext(i, UpdatedElementContext);
		}
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public KW_CONCURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONCURRENT, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLACE, 0); }
	public KW_FIELDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIELDS, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROWS, 0); }
	public selectFieldsInto(): SelectFieldsIntoContext[];
	public selectFieldsInto(i: number): SelectFieldsIntoContext;
	public selectFieldsInto(i?: number): SelectFieldsIntoContext | SelectFieldsIntoContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectFieldsIntoContext);
		} else {
			return this.getRuleContext(i, SelectFieldsIntoContext);
		}
	}
	public selectLinesInto(): SelectLinesIntoContext[];
	public selectLinesInto(i: number): SelectLinesIntoContext;
	public selectLinesInto(i?: number): SelectLinesIntoContext | SelectLinesIntoContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectLinesIntoContext);
		} else {
			return this.getRuleContext(i, SelectLinesIntoContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_loadDataStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLoadDataStatement) {
			listener.enterLoadDataStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLoadDataStatement) {
			listener.exitLoadDataStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLoadDataStatement) {
			return visitor.visitLoadDataStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadXmlStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _filename!: Token;
	public _violation!: Token;
	public _charset!: CharsetNameContext;
	public _tag!: Token;
	public _linesFormat!: Token;
	public KW_LOAD(): TerminalNode { return this.getToken(MySqlParser.KW_LOAD, 0); }
	public KW_XML(): TerminalNode { return this.getToken(MySqlParser.KW_XML, 0); }
	public KW_INFILE(): TerminalNode { return this.getToken(MySqlParser.KW_INFILE, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode[];
	public KW_SET(i: number): TerminalNode;
	public KW_SET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_SET);
		} else {
			return this.getToken(MySqlParser.KW_SET, i);
		}
	}
	public KW_ROWS(): TerminalNode[];
	public KW_ROWS(i: number): TerminalNode;
	public KW_ROWS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ROWS);
		} else {
			return this.getToken(MySqlParser.KW_ROWS, i);
		}
	}
	public KW_IDENTIFIED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public KW_IGNORE(): TerminalNode[];
	public KW_IGNORE(i: number): TerminalNode;
	public KW_IGNORE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_IGNORE);
		} else {
			return this.getToken(MySqlParser.KW_IGNORE, i);
		}
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public assignmentField(): AssignmentFieldContext[];
	public assignmentField(i: number): AssignmentFieldContext;
	public assignmentField(i?: number): AssignmentFieldContext | AssignmentFieldContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AssignmentFieldContext);
		} else {
			return this.getRuleContext(i, AssignmentFieldContext);
		}
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public updatedElement(): UpdatedElementContext[];
	public updatedElement(i: number): UpdatedElementContext;
	public updatedElement(i?: number): UpdatedElementContext | UpdatedElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UpdatedElementContext);
		} else {
			return this.getRuleContext(i, UpdatedElementContext);
		}
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public KW_CONCURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONCURRENT, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLACE, 0); }
	public KW_LINES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINES, 0); }
	public LESS_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LESS_SYMBOL, 0); }
	public GREATER_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.GREATER_SYMBOL, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_loadXmlStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLoadXmlStatement) {
			listener.enterLoadXmlStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLoadXmlStatement) {
			listener.exitLoadXmlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLoadXmlStatement) {
			return visitor.visitLoadXmlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParenthesizedQueryContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public parenthesizedQueryExpression(): ParenthesizedQueryExpressionContext {
		return this.getRuleContext(0, ParenthesizedQueryExpressionContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public orderByClause(): OrderByClauseContext[];
	public orderByClause(i: number): OrderByClauseContext;
	public orderByClause(i?: number): OrderByClauseContext | OrderByClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(OrderByClauseContext);
		} else {
			return this.getRuleContext(i, OrderByClauseContext);
		}
	}
	public limitClause(): LimitClauseContext[];
	public limitClause(i: number): LimitClauseContext;
	public limitClause(i?: number): LimitClauseContext | LimitClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LimitClauseContext);
		} else {
			return this.getRuleContext(i, LimitClauseContext);
		}
	}
	public intoClause(): IntoClauseContext | undefined {
		return this.tryGetRuleContext(0, IntoClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_parenthesizedQuery; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterParenthesizedQuery) {
			listener.enterParenthesizedQuery(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitParenthesizedQuery) {
			listener.exitParenthesizedQuery(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitParenthesizedQuery) {
			return visitor.visitParenthesizedQuery(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplaceStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public KW_REPLACE(): TerminalNode { return this.getToken(MySqlParser.KW_REPLACE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public replaceStatementValuesOrSelectOrTable(): ReplaceStatementValuesOrSelectOrTableContext | undefined {
		return this.tryGetRuleContext(0, ReplaceStatementValuesOrSelectOrTableContext);
	}
	public setAssignmentList(): SetAssignmentListContext | undefined {
		return this.tryGetRuleContext(0, SetAssignmentListContext);
	}
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTO, 0); }
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public KW_DELAYED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DELAYED, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_replaceStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReplaceStatement) {
			listener.enterReplaceStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReplaceStatement) {
			listener.exitReplaceStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReplaceStatement) {
			return visitor.visitReplaceStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectStatementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectStatement; }
	public copyFrom(ctx: SelectStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class SimpleSelectContext extends SelectStatementContext {
	public querySpecification(): QuerySpecificationContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationContext);
	}
	public lockClause(): LockClauseContext | undefined {
		return this.tryGetRuleContext(0, LockClauseContext);
	}
	public querySpecificationNointo(): QuerySpecificationNointoContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationNointoContext);
	}
	public intoClause(): IntoClauseContext | undefined {
		return this.tryGetRuleContext(0, IntoClauseContext);
	}
	constructor(ctx: SelectStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleSelect) {
			listener.enterSimpleSelect(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleSelect) {
			listener.exitSimpleSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleSelect) {
			return visitor.visitSimpleSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ParenthesisSelectContext extends SelectStatementContext {
	public queryExpression(): QueryExpressionContext {
		return this.getRuleContext(0, QueryExpressionContext);
	}
	public lockClause(): LockClauseContext | undefined {
		return this.tryGetRuleContext(0, LockClauseContext);
	}
	constructor(ctx: SelectStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterParenthesisSelect) {
			listener.enterParenthesisSelect(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitParenthesisSelect) {
			listener.exitParenthesisSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitParenthesisSelect) {
			return visitor.visitParenthesisSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UnionSelectContext extends SelectStatementContext {
	public _unionType!: Token;
	public querySpecificationNointo(): QuerySpecificationNointoContext {
		return this.getRuleContext(0, QuerySpecificationNointoContext);
	}
	public unionStatement(): UnionStatementContext[];
	public unionStatement(i: number): UnionStatementContext;
	public unionStatement(i?: number): UnionStatementContext | UnionStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UnionStatementContext);
		} else {
			return this.getRuleContext(i, UnionStatementContext);
		}
	}
	public KW_UNION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNION, 0); }
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public lockClause(): LockClauseContext | undefined {
		return this.tryGetRuleContext(0, LockClauseContext);
	}
	public querySpecification(): QuerySpecificationContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationContext);
	}
	public queryExpression(): QueryExpressionContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	constructor(ctx: SelectStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnionSelect) {
			listener.enterUnionSelect(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnionSelect) {
			listener.exitUnionSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnionSelect) {
			return visitor.visitUnionSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UnionParenthesisSelectContext extends SelectStatementContext {
	public _unionType!: Token;
	public queryExpressionNointo(): QueryExpressionNointoContext {
		return this.getRuleContext(0, QueryExpressionNointoContext);
	}
	public unionParenthesis(): UnionParenthesisContext[];
	public unionParenthesis(i: number): UnionParenthesisContext;
	public unionParenthesis(i?: number): UnionParenthesisContext | UnionParenthesisContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UnionParenthesisContext);
		} else {
			return this.getRuleContext(i, UnionParenthesisContext);
		}
	}
	public KW_UNION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNION, 0); }
	public queryExpression(): QueryExpressionContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public lockClause(): LockClauseContext | undefined {
		return this.tryGetRuleContext(0, LockClauseContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	constructor(ctx: SelectStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnionParenthesisSelect) {
			listener.enterUnionParenthesisSelect(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnionParenthesisSelect) {
			listener.exitUnionParenthesisSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnionParenthesisSelect) {
			return visitor.visitUnionParenthesisSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WithLateralStatementContext extends SelectStatementContext {
	public querySpecificationNointo(): QuerySpecificationNointoContext {
		return this.getRuleContext(0, QuerySpecificationNointoContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public lateralStatement(): LateralStatementContext[];
	public lateralStatement(i: number): LateralStatementContext;
	public lateralStatement(i?: number): LateralStatementContext | LateralStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LateralStatementContext);
		} else {
			return this.getRuleContext(i, LateralStatementContext);
		}
	}
	constructor(ctx: SelectStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWithLateralStatement) {
			listener.enterWithLateralStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWithLateralStatement) {
			listener.exitWithLateralStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWithLateralStatement) {
			return visitor.visitWithLateralStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetOperationsContext extends ParserRuleContext {
	public queryExpressionBody(): QueryExpressionBodyContext {
		return this.getRuleContext(0, QueryExpressionBodyContext);
	}
	public withClause(): WithClauseContext | undefined {
		return this.tryGetRuleContext(0, WithClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public intoClause(): IntoClauseContext | undefined {
		return this.tryGetRuleContext(0, IntoClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setOperations; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetOperations) {
			listener.enterSetOperations(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetOperations) {
			listener.exitSetOperations(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetOperations) {
			return visitor.visitSetOperations(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryExpressionBodyContext extends ParserRuleContext {
	public queryItem(): QueryItemContext {
		return this.getRuleContext(0, QueryItemContext);
	}
	public queryExpressionBody(): QueryExpressionBodyContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionBodyContext);
	}
	public KW_UNION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNION, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXCEPT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_queryExpressionBody; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryExpressionBody) {
			listener.enterQueryExpressionBody(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryExpressionBody) {
			listener.exitQueryExpressionBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryExpressionBody) {
			return visitor.visitQueryExpressionBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryItemContext extends ParserRuleContext {
	public queryPrimary(): QueryPrimaryContext {
		return this.getRuleContext(0, QueryPrimaryContext);
	}
	public queryItem(): QueryItemContext | undefined {
		return this.tryGetRuleContext(0, QueryItemContext);
	}
	public KW_INTERSECT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTERSECT, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_queryItem; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryItem) {
			listener.enterQueryItem(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryItem) {
			listener.exitQueryItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryItem) {
			return visitor.visitQueryItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryPrimaryContext extends ParserRuleContext {
	public queryBlock(): QueryBlockContext | undefined {
		return this.tryGetRuleContext(0, QueryBlockContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public queryExpressionBody(): QueryExpressionBodyContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionBodyContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public intoClause(): IntoClauseContext | undefined {
		return this.tryGetRuleContext(0, IntoClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_queryPrimary; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryPrimary) {
			listener.enterQueryPrimary(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryPrimary) {
			listener.exitQueryPrimary(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryPrimary) {
			return visitor.visitQueryPrimary(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdateStatementContext extends ParserRuleContext {
	public singleUpdateStatement(): SingleUpdateStatementContext | undefined {
		return this.tryGetRuleContext(0, SingleUpdateStatementContext);
	}
	public multipleUpdateStatement(): MultipleUpdateStatementContext | undefined {
		return this.tryGetRuleContext(0, MultipleUpdateStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_updateStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUpdateStatement) {
			listener.enterUpdateStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUpdateStatement) {
			listener.exitUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUpdateStatement) {
			return visitor.visitUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValuesStatementContext extends ParserRuleContext {
	public rowValuesList(): RowValuesListContext {
		return this.getRuleContext(0, RowValuesListContext);
	}
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public indexColumnName(): IndexColumnNameContext | undefined {
		return this.tryGetRuleContext(0, IndexColumnNameContext);
	}
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public limitClauseAtom(): LimitClauseAtomContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseAtomContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_valuesStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterValuesStatement) {
			listener.enterValuesStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitValuesStatement) {
			listener.exitValuesStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitValuesStatement) {
			return visitor.visitValuesStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParenthesizedQueryExpressionContext extends ParserRuleContext {
	public queryBlock(): QueryBlockContext[];
	public queryBlock(i: number): QueryBlockContext;
	public queryBlock(i?: number): QueryBlockContext | QueryBlockContext[] {
		if (i === undefined) {
			return this.getRuleContexts(QueryBlockContext);
		} else {
			return this.getRuleContext(i, QueryBlockContext);
		}
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public intoClause(): IntoClauseContext | undefined {
		return this.tryGetRuleContext(0, IntoClauseContext);
	}
	public KW_UNION(): TerminalNode[];
	public KW_UNION(i: number): TerminalNode;
	public KW_UNION(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_UNION);
		} else {
			return this.getToken(MySqlParser.KW_UNION, i);
		}
	}
	public KW_INTERSECT(): TerminalNode[];
	public KW_INTERSECT(i: number): TerminalNode;
	public KW_INTERSECT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_INTERSECT);
		} else {
			return this.getToken(MySqlParser.KW_INTERSECT, i);
		}
	}
	public KW_EXCEPT(): TerminalNode[];
	public KW_EXCEPT(i: number): TerminalNode;
	public KW_EXCEPT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_EXCEPT);
		} else {
			return this.getToken(MySqlParser.KW_EXCEPT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_parenthesizedQueryExpression; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterParenthesizedQueryExpression) {
			listener.enterParenthesizedQueryExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitParenthesizedQueryExpression) {
			listener.exitParenthesizedQueryExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitParenthesizedQueryExpression) {
			return visitor.visitParenthesizedQueryExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryBlockContext extends ParserRuleContext {
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public tableStatement(): TableStatementContext | undefined {
		return this.tryGetRuleContext(0, TableStatementContext);
	}
	public valuesStatement(): ValuesStatementContext | undefined {
		return this.tryGetRuleContext(0, ValuesStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_queryBlock; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryBlock) {
			listener.enterQueryBlock(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryBlock) {
			listener.exitQueryBlock(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryBlock) {
			return visitor.visitQueryBlock(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplaceStatementValuesOrSelectOrTableContext extends ParserRuleContext {
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public valuesOrValueList(): ValuesOrValueListContext | undefined {
		return this.tryGetRuleContext(0, ValuesOrValueListContext);
	}
	public rowValuesList(): RowValuesListContext | undefined {
		return this.tryGetRuleContext(0, RowValuesListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_replaceStatementValuesOrSelectOrTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReplaceStatementValuesOrSelectOrTable) {
			listener.enterReplaceStatementValuesOrSelectOrTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReplaceStatementValuesOrSelectOrTable) {
			listener.exitReplaceStatementValuesOrSelectOrTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReplaceStatementValuesOrSelectOrTable) {
			return visitor.visitReplaceStatementValuesOrSelectOrTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowValuesListContext extends ParserRuleContext {
	public KW_VALUES(): TerminalNode { return this.getToken(MySqlParser.KW_VALUES, 0); }
	public KW_ROW(): TerminalNode[];
	public KW_ROW(i: number): TerminalNode;
	public KW_ROW(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ROW);
		} else {
			return this.getToken(MySqlParser.KW_ROW, i);
		}
	}
	public expressionsWithDefaults(): ExpressionsWithDefaultsContext[];
	public expressionsWithDefaults(i: number): ExpressionsWithDefaultsContext;
	public expressionsWithDefaults(i?: number): ExpressionsWithDefaultsContext | ExpressionsWithDefaultsContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionsWithDefaultsContext);
		} else {
			return this.getRuleContext(i, ExpressionsWithDefaultsContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_rowValuesList; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRowValuesList) {
			listener.enterRowValuesList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRowValuesList) {
			listener.exitRowValuesList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRowValuesList) {
			return visitor.visitRowValuesList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetAssignmentListContext extends ParserRuleContext {
	public _setFirst!: UpdatedElementContext;
	public _updatedElement!: UpdatedElementContext;
	public _setElements: UpdatedElementContext[] = [];
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public updatedElement(): UpdatedElementContext[];
	public updatedElement(i: number): UpdatedElementContext;
	public updatedElement(i?: number): UpdatedElementContext | UpdatedElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UpdatedElementContext);
		} else {
			return this.getRuleContext(i, UpdatedElementContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setAssignmentList; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetAssignmentList) {
			listener.enterSetAssignmentList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetAssignmentList) {
			listener.exitSetAssignmentList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetAssignmentList) {
			return visitor.visitSetAssignmentList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdatedElementContext extends ParserRuleContext {
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public expressionOrDefault(): ExpressionOrDefaultContext {
		return this.getRuleContext(0, ExpressionOrDefaultContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_updatedElement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUpdatedElement) {
			listener.enterUpdatedElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUpdatedElement) {
			listener.exitUpdatedElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUpdatedElement) {
			return visitor.visitUpdatedElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AssignmentFieldContext extends ParserRuleContext {
	public _var_name!: UidContext;
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public LOCAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LOCAL_ID, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_assignmentField; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAssignmentField) {
			listener.enterAssignmentField(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAssignmentField) {
			listener.exitAssignmentField(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAssignmentField) {
			return visitor.visitAssignmentField(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockClauseContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public KW_SHARE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHARE, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OF, 0); }
	public tableName(): TableNameContext[];
	public tableName(i: number): TableNameContext;
	public tableName(i?: number): TableNameContext | TableNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableNameContext);
		} else {
			return this.getRuleContext(i, TableNameContext);
		}
	}
	public KW_LOCKED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCKED, 0); }
	public KW_NOWAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOWAIT, 0); }
	public KW_SKIP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SKIP, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCK, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IN, 0); }
	public KW_MODE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MODE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lockClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLockClause) {
			listener.enterLockClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLockClause) {
			listener.exitLockClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLockClause) {
			return visitor.visitLockClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleDeleteStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _table_alias!: UidContext;
	public KW_DELETE(): TerminalNode { return this.getToken(MySqlParser.KW_DELETE, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_QUICK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUICK, 0); }
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public limitClauseAtom(): LimitClauseAtomContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseAtomContext);
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_singleDeleteStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSingleDeleteStatement) {
			listener.enterSingleDeleteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSingleDeleteStatement) {
			listener.exitSingleDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSingleDeleteStatement) {
			return visitor.visitSingleDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MultipleDeleteStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public KW_DELETE(): TerminalNode { return this.getToken(MySqlParser.KW_DELETE, 0); }
	public tableName(): TableNameContext[];
	public tableName(i: number): TableNameContext;
	public tableName(i?: number): TableNameContext | TableNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableNameContext);
		} else {
			return this.getRuleContext(i, TableNameContext);
		}
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public tableSources(): TableSourcesContext | undefined {
		return this.tryGetRuleContext(0, TableSourcesContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public KW_QUICK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUICK, 0); }
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.DOT);
		} else {
			return this.getToken(MySqlParser.DOT, i);
		}
	}
	public STAR(): TerminalNode[];
	public STAR(i: number): TerminalNode;
	public STAR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STAR);
		} else {
			return this.getToken(MySqlParser.STAR, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_multipleDeleteStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMultipleDeleteStatement) {
			listener.enterMultipleDeleteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMultipleDeleteStatement) {
			listener.exitMultipleDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMultipleDeleteStatement) {
			return visitor.visitMultipleDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerOpenStatementContext extends ParserRuleContext {
	public _table_alias!: UidContext;
	public KW_HANDLER(): TerminalNode { return this.getToken(MySqlParser.KW_HANDLER, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_OPEN(): TerminalNode { return this.getToken(MySqlParser.KW_OPEN, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_handlerOpenStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerOpenStatement) {
			listener.enterHandlerOpenStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerOpenStatement) {
			listener.exitHandlerOpenStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerOpenStatement) {
			return visitor.visitHandlerOpenStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerReadIndexStatementContext extends ParserRuleContext {
	public _moveOrder!: Token;
	public KW_HANDLER(): TerminalNode { return this.getToken(MySqlParser.KW_HANDLER, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_READ(): TerminalNode { return this.getToken(MySqlParser.KW_READ, 0); }
	public indexName(): IndexNameContext {
		return this.getRuleContext(0, IndexNameContext);
	}
	public comparisonBase(): ComparisonBaseContext | undefined {
		return this.tryGetRuleContext(0, ComparisonBaseContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public constants(): ConstantsContext | undefined {
		return this.tryGetRuleContext(0, ConstantsContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public limitClauseAtom(): LimitClauseAtomContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseAtomContext);
	}
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NEXT, 0); }
	public KW_PREV(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PREV, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAST, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_handlerReadIndexStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerReadIndexStatement) {
			listener.enterHandlerReadIndexStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerReadIndexStatement) {
			listener.exitHandlerReadIndexStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerReadIndexStatement) {
			return visitor.visitHandlerReadIndexStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerReadStatementContext extends ParserRuleContext {
	public _moveOrder!: Token;
	public KW_HANDLER(): TerminalNode { return this.getToken(MySqlParser.KW_HANDLER, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_READ(): TerminalNode { return this.getToken(MySqlParser.KW_READ, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NEXT, 0); }
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public limitClauseAtom(): LimitClauseAtomContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseAtomContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_handlerReadStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerReadStatement) {
			listener.enterHandlerReadStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerReadStatement) {
			listener.exitHandlerReadStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerReadStatement) {
			return visitor.visitHandlerReadStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerCloseStatementContext extends ParserRuleContext {
	public KW_HANDLER(): TerminalNode { return this.getToken(MySqlParser.KW_HANDLER, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_CLOSE(): TerminalNode { return this.getToken(MySqlParser.KW_CLOSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_handlerCloseStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerCloseStatement) {
			listener.enterHandlerCloseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerCloseStatement) {
			listener.exitHandlerCloseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerCloseStatement) {
			return visitor.visitHandlerCloseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ImportTableStatementContext extends ParserRuleContext {
	public KW_IMPORT(): TerminalNode { return this.getToken(MySqlParser.KW_IMPORT, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public stringLiteral(): StringLiteralContext[];
	public stringLiteral(i: number): StringLiteralContext;
	public stringLiteral(i?: number): StringLiteralContext | StringLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(StringLiteralContext);
		} else {
			return this.getRuleContext(i, StringLiteralContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_importTableStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterImportTableStatement) {
			listener.enterImportTableStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitImportTableStatement) {
			listener.exitImportTableStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitImportTableStatement) {
			return visitor.visitImportTableStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleUpdateStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _table_alias!: UidContext;
	public KW_UPDATE(): TerminalNode { return this.getToken(MySqlParser.KW_UPDATE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public updatedElement(): UpdatedElementContext[];
	public updatedElement(i: number): UpdatedElementContext;
	public updatedElement(i?: number): UpdatedElementContext | UpdatedElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UpdatedElementContext);
		} else {
			return this.getRuleContext(i, UpdatedElementContext);
		}
	}
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_singleUpdateStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSingleUpdateStatement) {
			listener.enterSingleUpdateStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSingleUpdateStatement) {
			listener.exitSingleUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSingleUpdateStatement) {
			return visitor.visitSingleUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MultipleUpdateStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public KW_UPDATE(): TerminalNode { return this.getToken(MySqlParser.KW_UPDATE, 0); }
	public tableSources(): TableSourcesContext {
		return this.getRuleContext(0, TableSourcesContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public updatedElement(): UpdatedElementContext[];
	public updatedElement(i: number): UpdatedElementContext;
	public updatedElement(i?: number): UpdatedElementContext | UpdatedElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UpdatedElementContext);
		} else {
			return this.getRuleContext(i, UpdatedElementContext);
		}
	}
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_multipleUpdateStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMultipleUpdateStatement) {
			listener.enterMultipleUpdateStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMultipleUpdateStatement) {
			listener.exitMultipleUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMultipleUpdateStatement) {
			return visitor.visitMultipleUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderByClauseContext extends ParserRuleContext {
	public KW_ORDER(): TerminalNode { return this.getToken(MySqlParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public orderByExpression(): OrderByExpressionContext[];
	public orderByExpression(i: number): OrderByExpressionContext;
	public orderByExpression(i?: number): OrderByExpressionContext | OrderByExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(OrderByExpressionContext);
		} else {
			return this.getRuleContext(i, OrderByExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_orderByClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOrderByClause) {
			listener.enterOrderByClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOrderByClause) {
			listener.exitOrderByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOrderByClause) {
			return visitor.visitOrderByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderByExpressionContext extends ParserRuleContext {
	public _order!: Token;
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_orderByExpression; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOrderByExpression) {
			listener.enterOrderByExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOrderByExpression) {
			listener.exitOrderByExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOrderByExpression) {
			return visitor.visitOrderByExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourcesContext extends ParserRuleContext {
	public tableSource(): TableSourceContext[];
	public tableSource(i: number): TableSourceContext;
	public tableSource(i?: number): TableSourceContext | TableSourceContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableSourceContext);
		} else {
			return this.getRuleContext(i, TableSourceContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableSources; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableSources) {
			listener.enterTableSources(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableSources) {
			listener.exitTableSources(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableSources) {
			return visitor.visitTableSources(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourceContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableSource; }
	public copyFrom(ctx: TableSourceContext): void {
		super.copyFrom(ctx);
	}
}
export class TableSourceBaseContext extends TableSourceContext {
	public tableSourceItem(): TableSourceItemContext {
		return this.getRuleContext(0, TableSourceItemContext);
	}
	public joinPart(): JoinPartContext[];
	public joinPart(i: number): JoinPartContext;
	public joinPart(i?: number): JoinPartContext | JoinPartContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinPartContext);
		} else {
			return this.getRuleContext(i, JoinPartContext);
		}
	}
	constructor(ctx: TableSourceContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableSourceBase) {
			listener.enterTableSourceBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableSourceBase) {
			listener.exitTableSourceBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableSourceBase) {
			return visitor.visitTableSourceBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableSourceNestedContext extends TableSourceContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public tableSourceItem(): TableSourceItemContext {
		return this.getRuleContext(0, TableSourceItemContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public joinPart(): JoinPartContext[];
	public joinPart(i: number): JoinPartContext;
	public joinPart(i?: number): JoinPartContext | JoinPartContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinPartContext);
		} else {
			return this.getRuleContext(i, JoinPartContext);
		}
	}
	constructor(ctx: TableSourceContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableSourceNested) {
			listener.enterTableSourceNested(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableSourceNested) {
			listener.exitTableSourceNested(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableSourceNested) {
			return visitor.visitTableSourceNested(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableJsonContext extends TableSourceContext {
	public jsonTable(): JsonTableContext {
		return this.getRuleContext(0, JsonTableContext);
	}
	constructor(ctx: TableSourceContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableJson) {
			listener.enterTableJson(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableJson) {
			listener.exitTableJson(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableJson) {
			return visitor.visitTableJson(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourceItemContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableSourceItem; }
	public copyFrom(ctx: TableSourceItemContext): void {
		super.copyFrom(ctx);
	}
}
export class AtomTableItemContext extends TableSourceItemContext {
	public _alias!: UidContext;
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public indexHint(): IndexHintContext[];
	public indexHint(i: number): IndexHintContext;
	public indexHint(i?: number): IndexHintContext | IndexHintContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexHintContext);
		} else {
			return this.getRuleContext(i, IndexHintContext);
		}
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: TableSourceItemContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAtomTableItem) {
			listener.enterAtomTableItem(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAtomTableItem) {
			listener.exitAtomTableItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAtomTableItem) {
			return visitor.visitAtomTableItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubqueryTableItemContext extends TableSourceItemContext {
	public _parenthesisSubquery!: SelectStatementContext;
	public _alias!: UidContext;
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATERAL, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public fullColumnNames(): FullColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, FullColumnNamesContext);
	}
	constructor(ctx: TableSourceItemContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubqueryTableItem) {
			listener.enterSubqueryTableItem(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubqueryTableItem) {
			listener.exitSubqueryTableItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubqueryTableItem) {
			return visitor.visitSubqueryTableItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableSourcesItemContext extends TableSourceItemContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public tableSources(): TableSourcesContext {
		return this.getRuleContext(0, TableSourcesContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: TableSourceItemContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableSourcesItem) {
			listener.enterTableSourcesItem(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableSourcesItem) {
			listener.exitTableSourcesItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableSourcesItem) {
			return visitor.visitTableSourcesItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FullColumnNamesContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public columnNames(): ColumnNamesContext {
		return this.getRuleContext(0, ColumnNamesContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_fullColumnNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFullColumnNames) {
			listener.enterFullColumnNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFullColumnNames) {
			listener.exitFullColumnNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFullColumnNames) {
			return visitor.visitFullColumnNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexHintContext extends ParserRuleContext {
	public _indexHintAction!: Token;
	public _keyFormat!: Token;
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_USE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USE, 0); }
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public KW_FORCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FORCE, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public indexHintType(): IndexHintTypeContext | undefined {
		return this.tryGetRuleContext(0, IndexHintTypeContext);
	}
	public indexNames(): IndexNamesContext | undefined {
		return this.tryGetRuleContext(0, IndexNamesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexHint; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexHint) {
			listener.enterIndexHint(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexHint) {
			listener.exitIndexHint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexHint) {
			return visitor.visitIndexHint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexHintTypeContext extends ParserRuleContext {
	public KW_JOIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JOIN, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexHintType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexHintType) {
			listener.enterIndexHintType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexHintType) {
			listener.exitIndexHintType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexHintType) {
			return visitor.visitIndexHintType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JoinPartContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_joinPart; }
	public copyFrom(ctx: JoinPartContext): void {
		super.copyFrom(ctx);
	}
}
export class InnerJoinContext extends JoinPartContext {
	public KW_JOIN(): TerminalNode { return this.getToken(MySqlParser.KW_JOIN, 0); }
	public tableSourceItem(): TableSourceItemContext {
		return this.getRuleContext(0, TableSourceItemContext);
	}
	public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATERAL, 0); }
	public joinSpec(): JoinSpecContext[];
	public joinSpec(i: number): JoinSpecContext;
	public joinSpec(i?: number): JoinSpecContext | JoinSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinSpecContext);
		} else {
			return this.getRuleContext(i, JoinSpecContext);
		}
	}
	public KW_INNER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INNER, 0); }
	public KW_CROSS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CROSS, 0); }
	constructor(ctx: JoinPartContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInnerJoin) {
			listener.enterInnerJoin(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInnerJoin) {
			listener.exitInnerJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInnerJoin) {
			return visitor.visitInnerJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StraightJoinContext extends JoinPartContext {
	public KW_STRAIGHT_JOIN(): TerminalNode { return this.getToken(MySqlParser.KW_STRAIGHT_JOIN, 0); }
	public tableSourceItem(): TableSourceItemContext {
		return this.getRuleContext(0, TableSourceItemContext);
	}
	public joinSpec(): JoinSpecContext[];
	public joinSpec(i: number): JoinSpecContext;
	public joinSpec(i?: number): JoinSpecContext | JoinSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinSpecContext);
		} else {
			return this.getRuleContext(i, JoinSpecContext);
		}
	}
	constructor(ctx: JoinPartContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStraightJoin) {
			listener.enterStraightJoin(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStraightJoin) {
			listener.exitStraightJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStraightJoin) {
			return visitor.visitStraightJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class OuterJoinContext extends JoinPartContext {
	public KW_JOIN(): TerminalNode { return this.getToken(MySqlParser.KW_JOIN, 0); }
	public tableSourceItem(): TableSourceItemContext {
		return this.getRuleContext(0, TableSourceItemContext);
	}
	public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEFT, 0); }
	public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RIGHT, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OUTER, 0); }
	public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATERAL, 0); }
	public joinSpec(): JoinSpecContext[];
	public joinSpec(i: number): JoinSpecContext;
	public joinSpec(i?: number): JoinSpecContext | JoinSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinSpecContext);
		} else {
			return this.getRuleContext(i, JoinSpecContext);
		}
	}
	constructor(ctx: JoinPartContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOuterJoin) {
			listener.enterOuterJoin(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOuterJoin) {
			listener.exitOuterJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOuterJoin) {
			return visitor.visitOuterJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NaturalJoinContext extends JoinPartContext {
	public KW_NATURAL(): TerminalNode { return this.getToken(MySqlParser.KW_NATURAL, 0); }
	public KW_JOIN(): TerminalNode { return this.getToken(MySqlParser.KW_JOIN, 0); }
	public tableSourceItem(): TableSourceItemContext {
		return this.getRuleContext(0, TableSourceItemContext);
	}
	public KW_INNER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INNER, 0); }
	public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEFT, 0); }
	public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RIGHT, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OUTER, 0); }
	constructor(ctx: JoinPartContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNaturalJoin) {
			listener.enterNaturalJoin(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNaturalJoin) {
			listener.exitNaturalJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNaturalJoin) {
			return visitor.visitNaturalJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JoinSpecContext extends ParserRuleContext {
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_joinSpec; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJoinSpec) {
			listener.enterJoinSpec(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJoinSpec) {
			listener.exitJoinSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJoinSpec) {
			return visitor.visitJoinSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryExpressionContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public querySpecification(): QuerySpecificationContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public queryExpression(): QueryExpressionContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_queryExpression; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryExpression) {
			listener.enterQueryExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryExpression) {
			listener.exitQueryExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryExpression) {
			return visitor.visitQueryExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryExpressionNointoContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public querySpecificationNointo(): QuerySpecificationNointoContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationNointoContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public queryExpressionNointo(): QueryExpressionNointoContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionNointoContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_queryExpressionNointo; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQueryExpressionNointo) {
			listener.enterQueryExpressionNointo(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQueryExpressionNointo) {
			listener.exitQueryExpressionNointo(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQueryExpressionNointo) {
			return visitor.visitQueryExpressionNointo(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QuerySpecificationContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode { return this.getToken(MySqlParser.KW_SELECT, 0); }
	public selectElements(): SelectElementsContext {
		return this.getRuleContext(0, SelectElementsContext);
	}
	public fromClause(): FromClauseContext {
		return this.getRuleContext(0, FromClauseContext);
	}
	public selectSpec(): SelectSpecContext[];
	public selectSpec(i: number): SelectSpecContext;
	public selectSpec(i?: number): SelectSpecContext | SelectSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectSpecContext);
		} else {
			return this.getRuleContext(i, SelectSpecContext);
		}
	}
	public intoClause(): IntoClauseContext | undefined {
		return this.tryGetRuleContext(0, IntoClauseContext);
	}
	public groupByClause(): GroupByClauseContext | undefined {
		return this.tryGetRuleContext(0, GroupByClauseContext);
	}
	public havingClause(): HavingClauseContext | undefined {
		return this.tryGetRuleContext(0, HavingClauseContext);
	}
	public windowClause(): WindowClauseContext | undefined {
		return this.tryGetRuleContext(0, WindowClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_querySpecification; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQuerySpecification) {
			listener.enterQuerySpecification(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQuerySpecification) {
			listener.exitQuerySpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQuerySpecification) {
			return visitor.visitQuerySpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QuerySpecificationNointoContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode { return this.getToken(MySqlParser.KW_SELECT, 0); }
	public selectElements(): SelectElementsContext {
		return this.getRuleContext(0, SelectElementsContext);
	}
	public fromClause(): FromClauseContext {
		return this.getRuleContext(0, FromClauseContext);
	}
	public selectSpec(): SelectSpecContext[];
	public selectSpec(i: number): SelectSpecContext;
	public selectSpec(i?: number): SelectSpecContext | SelectSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectSpecContext);
		} else {
			return this.getRuleContext(i, SelectSpecContext);
		}
	}
	public groupByClause(): GroupByClauseContext | undefined {
		return this.tryGetRuleContext(0, GroupByClauseContext);
	}
	public havingClause(): HavingClauseContext | undefined {
		return this.tryGetRuleContext(0, HavingClauseContext);
	}
	public windowClause(): WindowClauseContext | undefined {
		return this.tryGetRuleContext(0, WindowClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_querySpecificationNointo; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterQuerySpecificationNointo) {
			listener.enterQuerySpecificationNointo(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitQuerySpecificationNointo) {
			listener.exitQuerySpecificationNointo(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitQuerySpecificationNointo) {
			return visitor.visitQuerySpecificationNointo(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnionParenthesisContext extends ParserRuleContext {
	public _unionType!: Token;
	public KW_UNION(): TerminalNode { return this.getToken(MySqlParser.KW_UNION, 0); }
	public queryExpressionNointo(): QueryExpressionNointoContext {
		return this.getRuleContext(0, QueryExpressionNointoContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_unionParenthesis; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnionParenthesis) {
			listener.enterUnionParenthesis(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnionParenthesis) {
			listener.exitUnionParenthesis(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnionParenthesis) {
			return visitor.visitUnionParenthesis(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnionStatementContext extends ParserRuleContext {
	public _unionType!: Token;
	public KW_UNION(): TerminalNode { return this.getToken(MySqlParser.KW_UNION, 0); }
	public querySpecificationNointo(): QuerySpecificationNointoContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationNointoContext);
	}
	public queryExpressionNointo(): QueryExpressionNointoContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionNointoContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_unionStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnionStatement) {
			listener.enterUnionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnionStatement) {
			listener.exitUnionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnionStatement) {
			return visitor.visitUnionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LateralStatementContext extends ParserRuleContext {
	public _alias!: UidContext;
	public KW_LATERAL(): TerminalNode { return this.getToken(MySqlParser.KW_LATERAL, 0); }
	public querySpecificationNointo(): QuerySpecificationNointoContext | undefined {
		return this.tryGetRuleContext(0, QuerySpecificationNointoContext);
	}
	public queryExpressionNointo(): QueryExpressionNointoContext | undefined {
		return this.tryGetRuleContext(0, QueryExpressionNointoContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lateralStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLateralStatement) {
			listener.enterLateralStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLateralStatement) {
			listener.exitLateralStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLateralStatement) {
			return visitor.visitLateralStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JsonTableContext extends ParserRuleContext {
	public _alias!: UidContext;
	public KW_JSON_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_JSON_TABLE, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public KW_COLUMNS(): TerminalNode { return this.getToken(MySqlParser.KW_COLUMNS, 0); }
	public jsonColumnList(): JsonColumnListContext {
		return this.getRuleContext(0, JsonColumnListContext);
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_jsonTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonTable) {
			listener.enterJsonTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonTable) {
			listener.exitJsonTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonTable) {
			return visitor.visitJsonTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JsonColumnListContext extends ParserRuleContext {
	public jsonColumn(): JsonColumnContext[];
	public jsonColumn(i: number): JsonColumnContext;
	public jsonColumn(i?: number): JsonColumnContext | JsonColumnContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JsonColumnContext);
		} else {
			return this.getRuleContext(i, JsonColumnContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_jsonColumnList; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonColumnList) {
			listener.enterJsonColumnList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonColumnList) {
			listener.exitJsonColumnList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonColumnList) {
			return visitor.visitJsonColumnList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JsonColumnContext extends ParserRuleContext {
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public KW_ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ORDINALITY, 0); }
	public dataType(): DataTypeContext | undefined {
		return this.tryGetRuleContext(0, DataTypeContext);
	}
	public KW_PATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PATH, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXISTS, 0); }
	public jsonOnEmpty(): JsonOnEmptyContext | undefined {
		return this.tryGetRuleContext(0, JsonOnEmptyContext);
	}
	public jsonOnError(): JsonOnErrorContext | undefined {
		return this.tryGetRuleContext(0, JsonOnErrorContext);
	}
	public KW_NESTED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NESTED, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public jsonColumnList(): JsonColumnListContext | undefined {
		return this.tryGetRuleContext(0, JsonColumnListContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_jsonColumn; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonColumn) {
			listener.enterJsonColumn(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonColumn) {
			listener.exitJsonColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonColumn) {
			return visitor.visitJsonColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JsonOnEmptyContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public KW_EMPTY(): TerminalNode { return this.getToken(MySqlParser.KW_EMPTY, 0); }
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public KW_ERROR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ERROR, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public defaultValue(): DefaultValueContext | undefined {
		return this.tryGetRuleContext(0, DefaultValueContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_jsonOnEmpty; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonOnEmpty) {
			listener.enterJsonOnEmpty(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonOnEmpty) {
			listener.exitJsonOnEmpty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonOnEmpty) {
			return visitor.visitJsonOnEmpty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JsonOnErrorContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public KW_ERROR(): TerminalNode[];
	public KW_ERROR(i: number): TerminalNode;
	public KW_ERROR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ERROR);
		} else {
			return this.getToken(MySqlParser.KW_ERROR, i);
		}
	}
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public defaultValue(): DefaultValueContext | undefined {
		return this.tryGetRuleContext(0, DefaultValueContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_jsonOnError; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonOnError) {
			listener.enterJsonOnError(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonOnError) {
			listener.exitJsonOnError(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonOnError) {
			return visitor.visitJsonOnError(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectSpecContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	public KW_DISTINCTROW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCTROW, 0); }
	public KW_HIGH_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HIGH_PRIORITY, 0); }
	public KW_STRAIGHT_JOIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STRAIGHT_JOIN, 0); }
	public KW_SQL_SMALL_RESULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_SMALL_RESULT, 0); }
	public KW_SQL_BIG_RESULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_BIG_RESULT, 0); }
	public KW_SQL_BUFFER_RESULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_BUFFER_RESULT, 0); }
	public KW_SQL_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_CACHE, 0); }
	public KW_SQL_NO_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_NO_CACHE, 0); }
	public KW_SQL_CALC_FOUND_ROWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_CALC_FOUND_ROWS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectSpec; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectSpec) {
			listener.enterSelectSpec(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectSpec) {
			listener.exitSelectSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectSpec) {
			return visitor.visitSelectSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectElementsContext extends ParserRuleContext {
	public _star!: Token;
	public selectElement(): SelectElementContext[];
	public selectElement(i: number): SelectElementContext;
	public selectElement(i?: number): SelectElementContext | SelectElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectElementContext);
		} else {
			return this.getRuleContext(i, SelectElementContext);
		}
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STAR, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectElements; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectElements) {
			listener.enterSelectElements(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectElements) {
			listener.exitSelectElements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectElements) {
			return visitor.visitSelectElements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectElementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectElement; }
	public copyFrom(ctx: SelectElementContext): void {
		super.copyFrom(ctx);
	}
}
export class SelectStarElementContext extends SelectElementContext {
	public _select_element!: FullIdContext;
	public DOT(): TerminalNode { return this.getToken(MySqlParser.DOT, 0); }
	public STAR(): TerminalNode { return this.getToken(MySqlParser.STAR, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(ctx: SelectElementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectStarElement) {
			listener.enterSelectStarElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectStarElement) {
			listener.exitSelectStarElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectStarElement) {
			return visitor.visitSelectStarElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectColumnElementContext extends SelectElementContext {
	public _alias!: UidContext;
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(ctx: SelectElementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectColumnElement) {
			listener.enterSelectColumnElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectColumnElement) {
			listener.exitSelectColumnElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectColumnElement) {
			return visitor.visitSelectColumnElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectFunctionElementContext extends SelectElementContext {
	public _alias!: UidContext;
	public functionCall(): FunctionCallContext {
		return this.getRuleContext(0, FunctionCallContext);
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(ctx: SelectElementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectFunctionElement) {
			listener.enterSelectFunctionElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectFunctionElement) {
			listener.exitSelectFunctionElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectFunctionElement) {
			return visitor.visitSelectFunctionElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectExpressionElementContext extends SelectElementContext {
	public _alias!: UidContext;
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public LOCAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LOCAL_ID, 0); }
	public VAR_ASSIGN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.VAR_ASSIGN, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(ctx: SelectElementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectExpressionElement) {
			listener.enterSelectExpressionElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectExpressionElement) {
			listener.exitSelectExpressionElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectExpressionElement) {
			return visitor.visitSelectExpressionElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntoClauseContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_intoClause; }
	public copyFrom(ctx: IntoClauseContext): void {
		super.copyFrom(ctx);
	}
}
export class SelectIntoVariablesContext extends IntoClauseContext {
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public assignmentField(): AssignmentFieldContext[];
	public assignmentField(i: number): AssignmentFieldContext;
	public assignmentField(i?: number): AssignmentFieldContext | AssignmentFieldContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AssignmentFieldContext);
		} else {
			return this.getRuleContext(i, AssignmentFieldContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: IntoClauseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectIntoVariables) {
			listener.enterSelectIntoVariables(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectIntoVariables) {
			listener.exitSelectIntoVariables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectIntoVariables) {
			return visitor.visitSelectIntoVariables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectIntoDumpFileContext extends IntoClauseContext {
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public KW_DUMPFILE(): TerminalNode { return this.getToken(MySqlParser.KW_DUMPFILE, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: IntoClauseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectIntoDumpFile) {
			listener.enterSelectIntoDumpFile(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectIntoDumpFile) {
			listener.exitSelectIntoDumpFile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectIntoDumpFile) {
			return visitor.visitSelectIntoDumpFile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectIntoTextFileContext extends IntoClauseContext {
	public _filename!: Token;
	public _charset!: CharsetNameContext;
	public _fieldsFormat!: Token;
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTO, 0); }
	public KW_OUTFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OUTFILE, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_LINES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINES, 0); }
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_FIELDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIELDS, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public selectFieldsInto(): SelectFieldsIntoContext[];
	public selectFieldsInto(i: number): SelectFieldsIntoContext;
	public selectFieldsInto(i?: number): SelectFieldsIntoContext | SelectFieldsIntoContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectFieldsIntoContext);
		} else {
			return this.getRuleContext(i, SelectFieldsIntoContext);
		}
	}
	public selectLinesInto(): SelectLinesIntoContext[];
	public selectLinesInto(i: number): SelectLinesIntoContext;
	public selectLinesInto(i?: number): SelectLinesIntoContext | SelectLinesIntoContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectLinesIntoContext);
		} else {
			return this.getRuleContext(i, SelectLinesIntoContext);
		}
	}
	constructor(ctx: IntoClauseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectIntoTextFile) {
			listener.enterSelectIntoTextFile(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectIntoTextFile) {
			listener.exitSelectIntoTextFile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectIntoTextFile) {
			return visitor.visitSelectIntoTextFile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectFieldsIntoContext extends ParserRuleContext {
	public _terminationField!: Token;
	public _enclosion!: Token;
	public _escaping!: Token;
	public KW_TERMINATED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TERMINATED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_ENCLOSED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENCLOSED, 0); }
	public KW_OPTIONALLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTIONALLY, 0); }
	public KW_ESCAPED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ESCAPED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectFieldsInto; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectFieldsInto) {
			listener.enterSelectFieldsInto(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectFieldsInto) {
			listener.exitSelectFieldsInto(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectFieldsInto) {
			return visitor.visitSelectFieldsInto(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectLinesIntoContext extends ParserRuleContext {
	public _starting!: Token;
	public _terminationLine!: Token;
	public KW_STARTING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STARTING, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_TERMINATED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TERMINATED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_selectLinesInto; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSelectLinesInto) {
			listener.enterSelectLinesInto(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSelectLinesInto) {
			listener.exitSelectLinesInto(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSelectLinesInto) {
			return visitor.visitSelectLinesInto(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FromClauseContext extends ParserRuleContext {
	public _whereExpr!: ExpressionContext;
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public tableSources(): TableSourcesContext | undefined {
		return this.tryGetRuleContext(0, TableSourcesContext);
	}
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_fromClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFromClause) {
			listener.enterFromClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFromClause) {
			listener.exitFromClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFromClause) {
			return visitor.visitFromClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupByClauseContext extends ParserRuleContext {
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public groupByItem(): GroupByItemContext[];
	public groupByItem(i: number): GroupByItemContext;
	public groupByItem(i?: number): GroupByItemContext | GroupByItemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(GroupByItemContext);
		} else {
			return this.getRuleContext(i, GroupByItemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_ROLLUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLLUP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_groupByClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGroupByClause) {
			listener.enterGroupByClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGroupByClause) {
			listener.exitGroupByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGroupByClause) {
			return visitor.visitGroupByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HavingClauseContext extends ParserRuleContext {
	public _havingExpr!: ExpressionContext;
	public KW_HAVING(): TerminalNode { return this.getToken(MySqlParser.KW_HAVING, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_havingClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHavingClause) {
			listener.enterHavingClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHavingClause) {
			listener.exitHavingClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHavingClause) {
			return visitor.visitHavingClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WindowClauseContext extends ParserRuleContext {
	public KW_WINDOW(): TerminalNode { return this.getToken(MySqlParser.KW_WINDOW, 0); }
	public windowName(): WindowNameContext[];
	public windowName(i: number): WindowNameContext;
	public windowName(i?: number): WindowNameContext | WindowNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(WindowNameContext);
		} else {
			return this.getRuleContext(i, WindowNameContext);
		}
	}
	public KW_AS(): TerminalNode[];
	public KW_AS(i: number): TerminalNode;
	public KW_AS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_AS);
		} else {
			return this.getToken(MySqlParser.KW_AS, i);
		}
	}
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public windowSpec(): WindowSpecContext[];
	public windowSpec(i: number): WindowSpecContext;
	public windowSpec(i?: number): WindowSpecContext | WindowSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(WindowSpecContext);
		} else {
			return this.getRuleContext(i, WindowSpecContext);
		}
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_windowClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWindowClause) {
			listener.enterWindowClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWindowClause) {
			listener.exitWindowClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWindowClause) {
			return visitor.visitWindowClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupByItemContext extends ParserRuleContext {
	public _order!: Token;
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_groupByItem; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGroupByItem) {
			listener.enterGroupByItem(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGroupByItem) {
			listener.exitGroupByItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGroupByItem) {
			return visitor.visitGroupByItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LimitClauseContext extends ParserRuleContext {
	public _offset!: LimitClauseAtomContext;
	public _limit!: LimitClauseAtomContext;
	public KW_LIMIT(): TerminalNode { return this.getToken(MySqlParser.KW_LIMIT, 0); }
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFFSET, 0); }
	public limitClauseAtom(): LimitClauseAtomContext[];
	public limitClauseAtom(i: number): LimitClauseAtomContext;
	public limitClauseAtom(i?: number): LimitClauseAtomContext | LimitClauseAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LimitClauseAtomContext);
		} else {
			return this.getRuleContext(i, LimitClauseAtomContext);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COMMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_limitClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLimitClause) {
			listener.enterLimitClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLimitClause) {
			listener.exitLimitClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLimitClause) {
			return visitor.visitLimitClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LimitClauseAtomContext extends ParserRuleContext {
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public mysqlVariable(): MysqlVariableContext | undefined {
		return this.tryGetRuleContext(0, MysqlVariableContext);
	}
	public simpleId(): SimpleIdContext | undefined {
		return this.tryGetRuleContext(0, SimpleIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_limitClauseAtom; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLimitClauseAtom) {
			listener.enterLimitClauseAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLimitClauseAtom) {
			listener.exitLimitClauseAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLimitClauseAtom) {
			return visitor.visitLimitClauseAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartTransactionContext extends ParserRuleContext {
	public KW_START(): TerminalNode { return this.getToken(MySqlParser.KW_START, 0); }
	public KW_TRANSACTION(): TerminalNode { return this.getToken(MySqlParser.KW_TRANSACTION, 0); }
	public transactionMode(): TransactionModeContext[];
	public transactionMode(i: number): TransactionModeContext;
	public transactionMode(i?: number): TransactionModeContext | TransactionModeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TransactionModeContext);
		} else {
			return this.getRuleContext(i, TransactionModeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_startTransaction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStartTransaction) {
			listener.enterStartTransaction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStartTransaction) {
			listener.exitStartTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStartTransaction) {
			return visitor.visitStartTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BeginWorkContext extends ParserRuleContext {
	public KW_BEGIN(): TerminalNode { return this.getToken(MySqlParser.KW_BEGIN, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WORK, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_beginWork; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBeginWork) {
			listener.enterBeginWork(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBeginWork) {
			listener.exitBeginWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBeginWork) {
			return visitor.visitBeginWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommitWorkContext extends ParserRuleContext {
	public _nochain!: Token;
	public _norelease!: Token;
	public KW_COMMIT(): TerminalNode { return this.getToken(MySqlParser.KW_COMMIT, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WORK, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AND, 0); }
	public KW_CHAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAIN, 0); }
	public KW_RELEASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELEASE, 0); }
	public KW_NO(): TerminalNode[];
	public KW_NO(i: number): TerminalNode;
	public KW_NO(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_NO);
		} else {
			return this.getToken(MySqlParser.KW_NO, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_commitWork; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCommitWork) {
			listener.enterCommitWork(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCommitWork) {
			listener.exitCommitWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCommitWork) {
			return visitor.visitCommitWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollbackWorkContext extends ParserRuleContext {
	public _nochain!: Token;
	public _norelease!: Token;
	public KW_ROLLBACK(): TerminalNode { return this.getToken(MySqlParser.KW_ROLLBACK, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WORK, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AND, 0); }
	public KW_CHAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAIN, 0); }
	public KW_RELEASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELEASE, 0); }
	public KW_NO(): TerminalNode[];
	public KW_NO(i: number): TerminalNode;
	public KW_NO(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_NO);
		} else {
			return this.getToken(MySqlParser.KW_NO, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_rollbackWork; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRollbackWork) {
			listener.enterRollbackWork(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRollbackWork) {
			listener.exitRollbackWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRollbackWork) {
			return visitor.visitRollbackWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SavepointStatementContext extends ParserRuleContext {
	public _identifier!: UidContext;
	public KW_SAVEPOINT(): TerminalNode { return this.getToken(MySqlParser.KW_SAVEPOINT, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_savepointStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSavepointStatement) {
			listener.enterSavepointStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSavepointStatement) {
			listener.exitSavepointStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSavepointStatement) {
			return visitor.visitSavepointStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollbackStatementContext extends ParserRuleContext {
	public _identifier!: UidContext;
	public KW_ROLLBACK(): TerminalNode { return this.getToken(MySqlParser.KW_ROLLBACK, 0); }
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WORK, 0); }
	public KW_SAVEPOINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SAVEPOINT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_rollbackStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRollbackStatement) {
			listener.enterRollbackStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRollbackStatement) {
			listener.exitRollbackStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRollbackStatement) {
			return visitor.visitRollbackStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReleaseStatementContext extends ParserRuleContext {
	public _identifier!: UidContext;
	public KW_RELEASE(): TerminalNode { return this.getToken(MySqlParser.KW_RELEASE, 0); }
	public KW_SAVEPOINT(): TerminalNode { return this.getToken(MySqlParser.KW_SAVEPOINT, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_releaseStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReleaseStatement) {
			listener.enterReleaseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReleaseStatement) {
			listener.exitReleaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReleaseStatement) {
			return visitor.visitReleaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockTablesContext extends ParserRuleContext {
	public KW_LOCK(): TerminalNode { return this.getToken(MySqlParser.KW_LOCK, 0); }
	public lockTableElement(): LockTableElementContext[];
	public lockTableElement(i: number): LockTableElementContext;
	public lockTableElement(i?: number): LockTableElementContext | LockTableElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LockTableElementContext);
		} else {
			return this.getRuleContext(i, LockTableElementContext);
		}
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lockTables; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLockTables) {
			listener.enterLockTables(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLockTables) {
			listener.exitLockTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLockTables) {
			return visitor.visitLockTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnlockTablesContext extends ParserRuleContext {
	public KW_UNLOCK(): TerminalNode { return this.getToken(MySqlParser.KW_UNLOCK, 0); }
	public KW_TABLES(): TerminalNode { return this.getToken(MySqlParser.KW_TABLES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_unlockTables; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnlockTables) {
			listener.enterUnlockTables(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnlockTables) {
			listener.exitUnlockTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnlockTables) {
			return visitor.visitUnlockTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetAutocommitStatementContext extends ParserRuleContext {
	public _autocommitValue!: Token;
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_AUTOCOMMIT(): TerminalNode { return this.getToken(MySqlParser.KW_AUTOCOMMIT, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setAutocommitStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetAutocommitStatement) {
			listener.enterSetAutocommitStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetAutocommitStatement) {
			listener.exitSetAutocommitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetAutocommitStatement) {
			return visitor.visitSetAutocommitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetTransactionStatementContext extends ParserRuleContext {
	public _transactionContext!: Token;
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_TRANSACTION(): TerminalNode { return this.getToken(MySqlParser.KW_TRANSACTION, 0); }
	public transactionOption(): TransactionOptionContext[];
	public transactionOption(i: number): TransactionOptionContext;
	public transactionOption(i?: number): TransactionOptionContext | TransactionOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TransactionOptionContext);
		} else {
			return this.getRuleContext(i, TransactionOptionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GLOBAL, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setTransactionStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetTransactionStatement) {
			listener.enterSetTransactionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetTransactionStatement) {
			listener.exitSetTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetTransactionStatement) {
			return visitor.visitSetTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionModeContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_CONSISTENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSISTENT, 0); }
	public KW_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SNAPSHOT, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WRITE, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_transactionMode; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTransactionMode) {
			listener.enterTransactionMode(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTransactionMode) {
			listener.exitTransactionMode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionMode) {
			return visitor.visitTransactionMode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockTableElementContext extends ParserRuleContext {
	public _alias!: UidContext;
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public lockAction(): LockActionContext {
		return this.getRuleContext(0, LockActionContext);
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lockTableElement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLockTableElement) {
			listener.enterLockTableElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLockTableElement) {
			listener.exitLockTableElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLockTableElement) {
			return visitor.visitLockTableElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockActionContext extends ParserRuleContext {
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WRITE, 0); }
	public KW_LOW_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOW_PRIORITY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lockAction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLockAction) {
			listener.enterLockAction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLockAction) {
			listener.exitLockAction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLockAction) {
			return visitor.visitLockAction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionOptionContext extends ParserRuleContext {
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ISOLATION, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEVEL, 0); }
	public transactionLevel(): TransactionLevelContext | undefined {
		return this.tryGetRuleContext(0, TransactionLevelContext);
	}
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WRITE, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_transactionOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTransactionOption) {
			listener.enterTransactionOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTransactionOption) {
			listener.exitTransactionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionOption) {
			return visitor.visitTransactionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionLevelContext extends ParserRuleContext {
	public KW_REPEATABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPEATABLE, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_COMMITTED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMITTED, 0); }
	public KW_UNCOMMITTED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNCOMMITTED, 0); }
	public KW_SERIALIZABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SERIALIZABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_transactionLevel; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTransactionLevel) {
			listener.enterTransactionLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTransactionLevel) {
			listener.exitTransactionLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionLevel) {
			return visitor.visitTransactionLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChangeMasterContext extends ParserRuleContext {
	public KW_CHANGE(): TerminalNode { return this.getToken(MySqlParser.KW_CHANGE, 0); }
	public KW_MASTER(): TerminalNode { return this.getToken(MySqlParser.KW_MASTER, 0); }
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public masterOption(): MasterOptionContext[];
	public masterOption(i: number): MasterOptionContext;
	public masterOption(i?: number): MasterOptionContext | MasterOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(MasterOptionContext);
		} else {
			return this.getRuleContext(i, MasterOptionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_changeMaster; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterChangeMaster) {
			listener.enterChangeMaster(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitChangeMaster) {
			listener.exitChangeMaster(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitChangeMaster) {
			return visitor.visitChangeMaster(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChangeReplicationFilterContext extends ParserRuleContext {
	public KW_CHANGE(): TerminalNode { return this.getToken(MySqlParser.KW_CHANGE, 0); }
	public KW_REPLICATION(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATION, 0); }
	public KW_FILTER(): TerminalNode { return this.getToken(MySqlParser.KW_FILTER, 0); }
	public replicationFilter(): ReplicationFilterContext[];
	public replicationFilter(i: number): ReplicationFilterContext;
	public replicationFilter(i?: number): ReplicationFilterContext | ReplicationFilterContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ReplicationFilterContext);
		} else {
			return this.getRuleContext(i, ReplicationFilterContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_changeReplicationFilter; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterChangeReplicationFilter) {
			listener.enterChangeReplicationFilter(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitChangeReplicationFilter) {
			listener.exitChangeReplicationFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitChangeReplicationFilter) {
			return visitor.visitChangeReplicationFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChangeReplicationSourceContext extends ParserRuleContext {
	public KW_CHANGE(): TerminalNode { return this.getToken(MySqlParser.KW_CHANGE, 0); }
	public KW_REPLICATION(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATION, 0); }
	public KW_SOURCE(): TerminalNode { return this.getToken(MySqlParser.KW_SOURCE, 0); }
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public replicationSourceOption(): ReplicationSourceOptionContext[];
	public replicationSourceOption(i: number): ReplicationSourceOptionContext;
	public replicationSourceOption(i?: number): ReplicationSourceOptionContext | ReplicationSourceOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ReplicationSourceOptionContext);
		} else {
			return this.getRuleContext(i, ReplicationSourceOptionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_changeReplicationSource; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterChangeReplicationSource) {
			listener.enterChangeReplicationSource(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitChangeReplicationSource) {
			listener.exitChangeReplicationSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitChangeReplicationSource) {
			return visitor.visitChangeReplicationSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PurgeBinaryLogsContext extends ParserRuleContext {
	public _purgeFormat!: Token;
	public _fileName!: Token;
	public _timeValue!: Token;
	public KW_PURGE(): TerminalNode { return this.getToken(MySqlParser.KW_PURGE, 0); }
	public KW_LOGS(): TerminalNode { return this.getToken(MySqlParser.KW_LOGS, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_MASTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TO, 0); }
	public KW_BEFORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BEFORE, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_purgeBinaryLogs; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPurgeBinaryLogs) {
			listener.enterPurgeBinaryLogs(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPurgeBinaryLogs) {
			listener.exitPurgeBinaryLogs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPurgeBinaryLogs) {
			return visitor.visitPurgeBinaryLogs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartSlaveOrReplicaContext extends ParserRuleContext {
	public KW_START(): TerminalNode { return this.getToken(MySqlParser.KW_START, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICA, 0); }
	public threadType(): ThreadTypeContext[];
	public threadType(i: number): ThreadTypeContext;
	public threadType(i?: number): ThreadTypeContext | ThreadTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ThreadTypeContext);
		} else {
			return this.getRuleContext(i, ThreadTypeContext);
		}
	}
	public KW_UNTIL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNTIL, 0); }
	public untilOption(): UntilOptionContext | undefined {
		return this.tryGetRuleContext(0, UntilOptionContext);
	}
	public connectionOptions(): ConnectionOptionsContext[];
	public connectionOptions(i: number): ConnectionOptionsContext;
	public connectionOptions(i?: number): ConnectionOptionsContext | ConnectionOptionsContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ConnectionOptionsContext);
		} else {
			return this.getRuleContext(i, ConnectionOptionsContext);
		}
	}
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_startSlaveOrReplica; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStartSlaveOrReplica) {
			listener.enterStartSlaveOrReplica(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStartSlaveOrReplica) {
			listener.exitStartSlaveOrReplica(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStartSlaveOrReplica) {
			return visitor.visitStartSlaveOrReplica(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StopSlaveOrReplicaContext extends ParserRuleContext {
	public KW_STOP(): TerminalNode { return this.getToken(MySqlParser.KW_STOP, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICA, 0); }
	public threadType(): ThreadTypeContext[];
	public threadType(i: number): ThreadTypeContext;
	public threadType(i?: number): ThreadTypeContext | ThreadTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ThreadTypeContext);
		} else {
			return this.getRuleContext(i, ThreadTypeContext);
		}
	}
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_stopSlaveOrReplica; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStopSlaveOrReplica) {
			listener.enterStopSlaveOrReplica(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStopSlaveOrReplica) {
			listener.exitStopSlaveOrReplica(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStopSlaveOrReplica) {
			return visitor.visitStopSlaveOrReplica(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartGroupReplicationContext extends ParserRuleContext {
	public KW_START(): TerminalNode { return this.getToken(MySqlParser.KW_START, 0); }
	public KW_GROUP_REPLICATION(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP_REPLICATION, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_DEFAULT_AUTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT_AUTH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_startGroupReplication; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStartGroupReplication) {
			listener.enterStartGroupReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStartGroupReplication) {
			listener.exitStartGroupReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStartGroupReplication) {
			return visitor.visitStartGroupReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StopGroupReplicationContext extends ParserRuleContext {
	public KW_STOP(): TerminalNode { return this.getToken(MySqlParser.KW_STOP, 0); }
	public KW_GROUP_REPLICATION(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP_REPLICATION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_stopGroupReplication; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStopGroupReplication) {
			listener.enterStopGroupReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStopGroupReplication) {
			listener.exitStopGroupReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStopGroupReplication) {
			return visitor.visitStopGroupReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MasterOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_masterOption; }
	public copyFrom(ctx: MasterOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class MasterStringOptionContext extends MasterOptionContext {
	public stringMasterOption(): StringMasterOptionContext {
		return this.getRuleContext(0, StringMasterOptionContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: MasterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMasterStringOption) {
			listener.enterMasterStringOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMasterStringOption) {
			listener.exitMasterStringOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMasterStringOption) {
			return visitor.visitMasterStringOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterDecimalOptionContext extends MasterOptionContext {
	public decimalMasterOption(): DecimalMasterOptionContext {
		return this.getRuleContext(0, DecimalMasterOptionContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: MasterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMasterDecimalOption) {
			listener.enterMasterDecimalOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMasterDecimalOption) {
			listener.exitMasterDecimalOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMasterDecimalOption) {
			return visitor.visitMasterDecimalOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterBoolOptionContext extends MasterOptionContext {
	public _boolVal!: Token;
	public boolMasterOption(): BoolMasterOptionContext {
		return this.getRuleContext(0, BoolMasterOptionContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	constructor(ctx: MasterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMasterBoolOption) {
			listener.enterMasterBoolOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMasterBoolOption) {
			listener.exitMasterBoolOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMasterBoolOption) {
			return visitor.visitMasterBoolOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class V8AddMasterOptionContext extends MasterOptionContext {
	public v8NewMasterOption(): V8NewMasterOptionContext {
		return this.getRuleContext(0, V8NewMasterOptionContext);
	}
	constructor(ctx: MasterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterV8AddMasterOption) {
			listener.enterV8AddMasterOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitV8AddMasterOption) {
			listener.exitV8AddMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitV8AddMasterOption) {
			return visitor.visitV8AddMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterUidListOptionContext extends MasterOptionContext {
	public _server_id!: UidContext;
	public KW_IGNORE_SERVER_IDS(): TerminalNode { return this.getToken(MySqlParser.KW_IGNORE_SERVER_IDS, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: MasterOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMasterUidListOption) {
			listener.enterMasterUidListOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMasterUidListOption) {
			listener.exitMasterUidListOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMasterUidListOption) {
			return visitor.visitMasterUidListOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringMasterOptionContext extends ParserRuleContext {
	public KW_MASTER_BIND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_BIND, 0); }
	public KW_MASTER_HOST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_HOST, 0); }
	public KW_MASTER_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_USER, 0); }
	public KW_MASTER_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_PASSWORD, 0); }
	public KW_MASTER_LOG_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_LOG_FILE, 0); }
	public KW_RELAY_LOG_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY_LOG_FILE, 0); }
	public KW_MASTER_COMPRESSION_ALGORITHMS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_COMPRESSION_ALGORITHMS, 0); }
	public KW_MASTER_SSL_CA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CA, 0); }
	public KW_MASTER_SSL_CAPATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CAPATH, 0); }
	public KW_MASTER_SSL_CERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CERT, 0); }
	public KW_MASTER_SSL_CRL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CRL, 0); }
	public KW_MASTER_SSL_CRLPATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CRLPATH, 0); }
	public KW_MASTER_SSL_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_KEY, 0); }
	public KW_MASTER_SSL_CIPHER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CIPHER, 0); }
	public KW_MASTER_TLS_VERSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_TLS_VERSION, 0); }
	public KW_MASTER_TLS_CIPHERSUITES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_TLS_CIPHERSUITES, 0); }
	public KW_MASTER_PUBLIC_KEY_PATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_PUBLIC_KEY_PATH, 0); }
	public KW_NETWORK_NAMESPACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NETWORK_NAMESPACE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_stringMasterOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStringMasterOption) {
			listener.enterStringMasterOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStringMasterOption) {
			listener.exitStringMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStringMasterOption) {
			return visitor.visitStringMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DecimalMasterOptionContext extends ParserRuleContext {
	public KW_MASTER_PORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_PORT, 0); }
	public KW_MASTER_LOG_POS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_LOG_POS, 0); }
	public KW_RELAY_LOG_POS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY_LOG_POS, 0); }
	public KW_MASTER_HEARTBEAT_PERIOD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_HEARTBEAT_PERIOD, 0); }
	public KW_MASTER_CONNECT_RETRY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_CONNECT_RETRY, 0); }
	public KW_MASTER_RETRY_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_RETRY_COUNT, 0); }
	public KW_MASTER_DELAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_DELAY, 0); }
	public KW_MASTER_ZSTD_COMPRESSION_LEVEL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_ZSTD_COMPRESSION_LEVEL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_decimalMasterOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDecimalMasterOption) {
			listener.enterDecimalMasterOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDecimalMasterOption) {
			listener.exitDecimalMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDecimalMasterOption) {
			return visitor.visitDecimalMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BoolMasterOptionContext extends ParserRuleContext {
	public KW_REQUIRE_ROW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE_ROW_FORMAT, 0); }
	public KW_MASTER_AUTO_POSITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_AUTO_POSITION, 0); }
	public KW_SOURCE_CONNECTION_AUTO_FAILOVER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_CONNECTION_AUTO_FAILOVER, 0); }
	public KW_MASTER_SSL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL, 0); }
	public KW_MASTER_SSL_VERIFY_SERVER_CERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_VERIFY_SERVER_CERT, 0); }
	public KW_GET_MASTER_PUBLIC_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GET_MASTER_PUBLIC_KEY, 0); }
	public KW_GTID_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GTID_ONLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_boolMasterOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBoolMasterOption) {
			listener.enterBoolMasterOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBoolMasterOption) {
			listener.exitBoolMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBoolMasterOption) {
			return visitor.visitBoolMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class V8NewMasterOptionContext extends ParserRuleContext {
	public KW_PRIVILEGE_CHECKS_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGE_CHECKS_USER, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK, 0); }
	public KW_STREAM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STREAM, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public KW_OFF(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFF, 0); }
	public KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public gtuidSet(): GtuidSetContext | undefined {
		return this.tryGetRuleContext(0, GtuidSetContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_v8NewMasterOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterV8NewMasterOption) {
			listener.enterV8NewMasterOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitV8NewMasterOption) {
			listener.exitV8NewMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitV8NewMasterOption) {
			return visitor.visitV8NewMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplicationSourceOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_replicationSourceOption; }
	public copyFrom(ctx: ReplicationSourceOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class SourceStringOptionContext extends ReplicationSourceOptionContext {
	public stringSourceOption(): StringSourceOptionContext {
		return this.getRuleContext(0, StringSourceOptionContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: ReplicationSourceOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSourceStringOption) {
			listener.enterSourceStringOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSourceStringOption) {
			listener.exitSourceStringOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSourceStringOption) {
			return visitor.visitSourceStringOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SourceDecimalOptionContext extends ReplicationSourceOptionContext {
	public decimalSourceOption(): DecimalSourceOptionContext {
		return this.getRuleContext(0, DecimalSourceOptionContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: ReplicationSourceOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSourceDecimalOption) {
			listener.enterSourceDecimalOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSourceDecimalOption) {
			listener.exitSourceDecimalOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSourceDecimalOption) {
			return visitor.visitSourceDecimalOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SourceBoolOptionContext extends ReplicationSourceOptionContext {
	public _boolVal!: Token;
	public boolSourceOption(): BoolSourceOptionContext {
		return this.getRuleContext(0, BoolSourceOptionContext);
	}
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	constructor(ctx: ReplicationSourceOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSourceBoolOption) {
			listener.enterSourceBoolOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSourceBoolOption) {
			listener.exitSourceBoolOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSourceBoolOption) {
			return visitor.visitSourceBoolOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SourceOtherOptionContext extends ReplicationSourceOptionContext {
	public otherSourceOption(): OtherSourceOptionContext {
		return this.getRuleContext(0, OtherSourceOptionContext);
	}
	constructor(ctx: ReplicationSourceOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSourceOtherOption) {
			listener.enterSourceOtherOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSourceOtherOption) {
			listener.exitSourceOtherOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSourceOtherOption) {
			return visitor.visitSourceOtherOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SourceUidListOptionContext extends ReplicationSourceOptionContext {
	public _server_id!: UidContext;
	public KW_IGNORE_SERVER_IDS(): TerminalNode { return this.getToken(MySqlParser.KW_IGNORE_SERVER_IDS, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: ReplicationSourceOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSourceUidListOption) {
			listener.enterSourceUidListOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSourceUidListOption) {
			listener.exitSourceUidListOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSourceUidListOption) {
			return visitor.visitSourceUidListOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringSourceOptionContext extends ParserRuleContext {
	public KW_SOURCE_BIND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_BIND, 0); }
	public KW_SOURCE_HOST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_HOST, 0); }
	public KW_SOURCE_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_USER, 0); }
	public KW_SOURCE_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_PASSWORD, 0); }
	public KW_SOURCE_LOG_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_LOG_FILE, 0); }
	public KW_RELAY_LOG_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY_LOG_FILE, 0); }
	public KW_SOURCE_COMPRESSION_ALGORITHMS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_COMPRESSION_ALGORITHMS, 0); }
	public KW_SOURCE_SSL_CA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_CA, 0); }
	public KW_SOURCE_SSL_CAPATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_CAPATH, 0); }
	public KW_SOURCE_SSL_CERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_CERT, 0); }
	public KW_SOURCE_SSL_CRL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_CRL, 0); }
	public KW_SOURCE_SSL_CRLPATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_CRLPATH, 0); }
	public KW_SOURCE_SSL_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_KEY, 0); }
	public KW_SOURCE_SSL_CIPHER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_CIPHER, 0); }
	public KW_SOURCE_TLS_VERSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_TLS_VERSION, 0); }
	public KW_SOURCE_TLS_CIPHERSUITES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_TLS_CIPHERSUITES, 0); }
	public KW_SOURCE_PUBLIC_KEY_PATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_PUBLIC_KEY_PATH, 0); }
	public KW_NETWORK_NAMESPACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NETWORK_NAMESPACE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_stringSourceOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStringSourceOption) {
			listener.enterStringSourceOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStringSourceOption) {
			listener.exitStringSourceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStringSourceOption) {
			return visitor.visitStringSourceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DecimalSourceOptionContext extends ParserRuleContext {
	public KW_SOURCE_PORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_PORT, 0); }
	public KW_SOURCE_LOG_POS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_LOG_POS, 0); }
	public KW_RELAY_LOG_POS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY_LOG_POS, 0); }
	public KW_SOURCE_HEARTBEAT_PERIOD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_HEARTBEAT_PERIOD, 0); }
	public KW_SOURCE_CONNECT_RETRY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_CONNECT_RETRY, 0); }
	public KW_SOURCE_RETRY_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_RETRY_COUNT, 0); }
	public KW_SOURCE_DELAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_DELAY, 0); }
	public KW_SOURCE_ZSTD_COMPRESSION_LEVEL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_ZSTD_COMPRESSION_LEVEL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_decimalSourceOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDecimalSourceOption) {
			listener.enterDecimalSourceOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDecimalSourceOption) {
			listener.exitDecimalSourceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDecimalSourceOption) {
			return visitor.visitDecimalSourceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BoolSourceOptionContext extends ParserRuleContext {
	public KW_REQUIRE_ROW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE_ROW_FORMAT, 0); }
	public KW_SOURCE_AUTO_POSITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_AUTO_POSITION, 0); }
	public KW_SOURCE_CONNECTION_AUTO_FAILOVER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_CONNECTION_AUTO_FAILOVER, 0); }
	public KW_SOURCE_SSL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL, 0); }
	public KW_SOURCE_SSL_VERIFY_SERVER_CERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE_SSL_VERIFY_SERVER_CERT, 0); }
	public KW_GET_SOURCE_PUBLIC_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GET_SOURCE_PUBLIC_KEY, 0); }
	public KW_GTID_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GTID_ONLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_boolSourceOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBoolSourceOption) {
			listener.enterBoolSourceOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBoolSourceOption) {
			listener.exitBoolSourceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBoolSourceOption) {
			return visitor.visitBoolSourceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OtherSourceOptionContext extends ParserRuleContext {
	public KW_PRIVILEGE_CHECKS_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGE_CHECKS_USER, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK, 0); }
	public KW_STREAM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STREAM, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public KW_OFF(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFF, 0); }
	public KW_GENERATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GENERATE, 0); }
	public KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public gtuidSet(): GtuidSetContext | undefined {
		return this.tryGetRuleContext(0, GtuidSetContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_otherSourceOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOtherSourceOption) {
			listener.enterOtherSourceOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOtherSourceOption) {
			listener.exitOtherSourceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOtherSourceOption) {
			return visitor.visitOtherSourceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChannelOptionContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(MySqlParser.KW_FOR, 0); }
	public KW_CHANNEL(): TerminalNode { return this.getToken(MySqlParser.KW_CHANNEL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_channelOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterChannelOption) {
			listener.enterChannelOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitChannelOption) {
			listener.exitChannelOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitChannelOption) {
			return visitor.visitChannelOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplicationFilterContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_replicationFilter; }
	public copyFrom(ctx: ReplicationFilterContext): void {
		super.copyFrom(ctx);
	}
}
export class DoDbReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_DO_DB(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_DO_DB, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public databaseName(): DatabaseNameContext[];
	public databaseName(i: number): DatabaseNameContext;
	public databaseName(i?: number): DatabaseNameContext | DatabaseNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DatabaseNameContext);
		} else {
			return this.getRuleContext(i, DatabaseNameContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDoDbReplication) {
			listener.enterDoDbReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDoDbReplication) {
			listener.exitDoDbReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDoDbReplication) {
			return visitor.visitDoDbReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IgnoreDbReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_IGNORE_DB(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_IGNORE_DB, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public databaseName(): DatabaseNameContext[];
	public databaseName(i: number): DatabaseNameContext;
	public databaseName(i?: number): DatabaseNameContext | DatabaseNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DatabaseNameContext);
		} else {
			return this.getRuleContext(i, DatabaseNameContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIgnoreDbReplication) {
			listener.enterIgnoreDbReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIgnoreDbReplication) {
			listener.exitIgnoreDbReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIgnoreDbReplication) {
			return visitor.visitIgnoreDbReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DoTableReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_DO_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_DO_TABLE, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDoTableReplication) {
			listener.enterDoTableReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDoTableReplication) {
			listener.exitDoTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDoTableReplication) {
			return visitor.visitDoTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IgnoreTableReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_IGNORE_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_IGNORE_TABLE, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIgnoreTableReplication) {
			listener.enterIgnoreTableReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIgnoreTableReplication) {
			listener.exitIgnoreTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIgnoreTableReplication) {
			return visitor.visitIgnoreTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WildDoTableReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_WILD_DO_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_WILD_DO_TABLE, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public simpleStrings(): SimpleStringsContext {
		return this.getRuleContext(0, SimpleStringsContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWildDoTableReplication) {
			listener.enterWildDoTableReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWildDoTableReplication) {
			listener.exitWildDoTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWildDoTableReplication) {
			return visitor.visitWildDoTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WildIgnoreTableReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_WILD_IGNORE_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public simpleStrings(): SimpleStringsContext {
		return this.getRuleContext(0, SimpleStringsContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWildIgnoreTableReplication) {
			listener.enterWildIgnoreTableReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWildIgnoreTableReplication) {
			listener.exitWildIgnoreTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWildIgnoreTableReplication) {
			return visitor.visitWildIgnoreTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RewriteDbReplicationContext extends ReplicationFilterContext {
	public KW_REPLICATE_REWRITE_DB(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICATE_REWRITE_DB, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public tablePair(): TablePairContext[];
	public tablePair(i: number): TablePairContext;
	public tablePair(i?: number): TablePairContext | TablePairContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TablePairContext);
		} else {
			return this.getRuleContext(i, TablePairContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: ReplicationFilterContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRewriteDbReplication) {
			listener.enterRewriteDbReplication(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRewriteDbReplication) {
			listener.exitRewriteDbReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRewriteDbReplication) {
			return visitor.visitRewriteDbReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablePairContext extends ParserRuleContext {
	public _firstTable!: TableNameContext;
	public _secondTable!: TableNameContext;
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public tableName(): TableNameContext[];
	public tableName(i: number): TableNameContext;
	public tableName(i?: number): TableNameContext | TableNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableNameContext);
		} else {
			return this.getRuleContext(i, TableNameContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tablePair; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTablePair) {
			listener.enterTablePair(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTablePair) {
			listener.exitTablePair(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTablePair) {
			return visitor.visitTablePair(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ThreadTypeContext extends ParserRuleContext {
	public KW_IO_THREAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IO_THREAD, 0); }
	public KW_SQL_THREAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_THREAD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_threadType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterThreadType) {
			listener.enterThreadType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitThreadType) {
			listener.exitThreadType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitThreadType) {
			return visitor.visitThreadType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UntilOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_untilOption; }
	public copyFrom(ctx: UntilOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class GtidsUntilOptionContext extends UntilOptionContext {
	public _gtids!: Token;
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public gtuidSet(): GtuidSetContext {
		return this.getRuleContext(0, GtuidSetContext);
	}
	public KW_SQL_BEFORE_GTIDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_BEFORE_GTIDS, 0); }
	public KW_SQL_AFTER_GTIDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_AFTER_GTIDS, 0); }
	constructor(ctx: UntilOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGtidsUntilOption) {
			listener.enterGtidsUntilOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGtidsUntilOption) {
			listener.exitGtidsUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGtidsUntilOption) {
			return visitor.visitGtidsUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterLogUntilOptionContext extends UntilOptionContext {
	public KW_MASTER_LOG_FILE(): TerminalNode { return this.getToken(MySqlParser.KW_MASTER_LOG_FILE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public KW_MASTER_LOG_POS(): TerminalNode { return this.getToken(MySqlParser.KW_MASTER_LOG_POS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: UntilOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMasterLogUntilOption) {
			listener.enterMasterLogUntilOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMasterLogUntilOption) {
			listener.exitMasterLogUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMasterLogUntilOption) {
			return visitor.visitMasterLogUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SourceLogUntilOptionContext extends UntilOptionContext {
	public KW_SOURCE_LOG_FILE(): TerminalNode { return this.getToken(MySqlParser.KW_SOURCE_LOG_FILE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public KW_SOURCE_LOG_POS(): TerminalNode { return this.getToken(MySqlParser.KW_SOURCE_LOG_POS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: UntilOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSourceLogUntilOption) {
			listener.enterSourceLogUntilOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSourceLogUntilOption) {
			listener.exitSourceLogUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSourceLogUntilOption) {
			return visitor.visitSourceLogUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RelayLogUntilOptionContext extends UntilOptionContext {
	public KW_RELAY_LOG_FILE(): TerminalNode { return this.getToken(MySqlParser.KW_RELAY_LOG_FILE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public KW_RELAY_LOG_POS(): TerminalNode { return this.getToken(MySqlParser.KW_RELAY_LOG_POS, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: UntilOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRelayLogUntilOption) {
			listener.enterRelayLogUntilOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRelayLogUntilOption) {
			listener.exitRelayLogUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRelayLogUntilOption) {
			return visitor.visitRelayLogUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SqlGapsUntilOptionContext extends UntilOptionContext {
	public KW_SQL_AFTER_MTS_GAPS(): TerminalNode { return this.getToken(MySqlParser.KW_SQL_AFTER_MTS_GAPS, 0); }
	constructor(ctx: UntilOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSqlGapsUntilOption) {
			listener.enterSqlGapsUntilOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSqlGapsUntilOption) {
			listener.exitSqlGapsUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSqlGapsUntilOption) {
			return visitor.visitSqlGapsUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConnectionOptionsContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_connectionOptions; }
	public copyFrom(ctx: ConnectionOptionsContext): void {
		super.copyFrom(ctx);
	}
}
export class UserConnectionOptionContext extends ConnectionOptionsContext {
	public _conOptUser!: Token;
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: ConnectionOptionsContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserConnectionOption) {
			listener.enterUserConnectionOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserConnectionOption) {
			listener.exitUserConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserConnectionOption) {
			return visitor.visitUserConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PasswordConnectionOptionContext extends ConnectionOptionsContext {
	public _conOptPassword!: Token;
	public KW_PASSWORD(): TerminalNode { return this.getToken(MySqlParser.KW_PASSWORD, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: ConnectionOptionsContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPasswordConnectionOption) {
			listener.enterPasswordConnectionOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPasswordConnectionOption) {
			listener.exitPasswordConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordConnectionOption) {
			return visitor.visitPasswordConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefaultAuthConnectionOptionContext extends ConnectionOptionsContext {
	public _conOptDefAuth!: Token;
	public KW_DEFAULT_AUTH(): TerminalNode { return this.getToken(MySqlParser.KW_DEFAULT_AUTH, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: ConnectionOptionsContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefaultAuthConnectionOption) {
			listener.enterDefaultAuthConnectionOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefaultAuthConnectionOption) {
			listener.exitDefaultAuthConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultAuthConnectionOption) {
			return visitor.visitDefaultAuthConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PluginDirConnectionOptionContext extends ConnectionOptionsContext {
	public _conOptPluginDir!: Token;
	public KW_PLUGIN_DIR(): TerminalNode { return this.getToken(MySqlParser.KW_PLUGIN_DIR, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: ConnectionOptionsContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPluginDirConnectionOption) {
			listener.enterPluginDirConnectionOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPluginDirConnectionOption) {
			listener.exitPluginDirConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPluginDirConnectionOption) {
			return visitor.visitPluginDirConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GtuidSetContext extends ParserRuleContext {
	public uuidSet(): UuidSetContext[];
	public uuidSet(i: number): UuidSetContext;
	public uuidSet(i?: number): UuidSetContext | UuidSetContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UuidSetContext);
		} else {
			return this.getRuleContext(i, UuidSetContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_gtuidSet; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGtuidSet) {
			listener.enterGtuidSet(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGtuidSet) {
			listener.exitGtuidSet(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGtuidSet) {
			return visitor.visitGtuidSet(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaStartTransactionContext extends ParserRuleContext {
	public _xaStart!: Token;
	public _xaAction!: Token;
	public KW_XA(): TerminalNode { return this.getToken(MySqlParser.KW_XA, 0); }
	public xid(): XidContext {
		return this.getRuleContext(0, XidContext);
	}
	public KW_START(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_START, 0); }
	public KW_BEGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BEGIN, 0); }
	public KW_JOIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JOIN, 0); }
	public KW_RESUME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESUME, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xaStartTransaction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXaStartTransaction) {
			listener.enterXaStartTransaction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXaStartTransaction) {
			listener.exitXaStartTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXaStartTransaction) {
			return visitor.visitXaStartTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaEndTransactionContext extends ParserRuleContext {
	public KW_XA(): TerminalNode { return this.getToken(MySqlParser.KW_XA, 0); }
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public xid(): XidContext {
		return this.getRuleContext(0, XidContext);
	}
	public KW_SUSPEND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUSPEND, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public KW_MIGRATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MIGRATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xaEndTransaction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXaEndTransaction) {
			listener.enterXaEndTransaction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXaEndTransaction) {
			listener.exitXaEndTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXaEndTransaction) {
			return visitor.visitXaEndTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaPrepareStatementContext extends ParserRuleContext {
	public KW_XA(): TerminalNode { return this.getToken(MySqlParser.KW_XA, 0); }
	public KW_PREPARE(): TerminalNode { return this.getToken(MySqlParser.KW_PREPARE, 0); }
	public xid(): XidContext {
		return this.getRuleContext(0, XidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xaPrepareStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXaPrepareStatement) {
			listener.enterXaPrepareStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXaPrepareStatement) {
			listener.exitXaPrepareStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXaPrepareStatement) {
			return visitor.visitXaPrepareStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaCommitWorkContext extends ParserRuleContext {
	public KW_XA(): TerminalNode { return this.getToken(MySqlParser.KW_XA, 0); }
	public KW_COMMIT(): TerminalNode { return this.getToken(MySqlParser.KW_COMMIT, 0); }
	public xid(): XidContext {
		return this.getRuleContext(0, XidContext);
	}
	public KW_ONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONE, 0); }
	public KW_PHASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PHASE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xaCommitWork; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXaCommitWork) {
			listener.enterXaCommitWork(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXaCommitWork) {
			listener.exitXaCommitWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXaCommitWork) {
			return visitor.visitXaCommitWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaRollbackWorkContext extends ParserRuleContext {
	public KW_XA(): TerminalNode { return this.getToken(MySqlParser.KW_XA, 0); }
	public KW_ROLLBACK(): TerminalNode { return this.getToken(MySqlParser.KW_ROLLBACK, 0); }
	public xid(): XidContext {
		return this.getRuleContext(0, XidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xaRollbackWork; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXaRollbackWork) {
			listener.enterXaRollbackWork(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXaRollbackWork) {
			listener.exitXaRollbackWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXaRollbackWork) {
			return visitor.visitXaRollbackWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaRecoverWorkContext extends ParserRuleContext {
	public KW_XA(): TerminalNode { return this.getToken(MySqlParser.KW_XA, 0); }
	public KW_RECOVER(): TerminalNode { return this.getToken(MySqlParser.KW_RECOVER, 0); }
	public KW_CONVERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONVERT, 0); }
	public xid(): XidContext | undefined {
		return this.tryGetRuleContext(0, XidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xaRecoverWork; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXaRecoverWork) {
			listener.enterXaRecoverWork(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXaRecoverWork) {
			listener.exitXaRecoverWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXaRecoverWork) {
			return visitor.visitXaRecoverWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrepareStatementContext extends ParserRuleContext {
	public _stmt_name!: UidContext;
	public _query!: Token;
	public _variable!: Token;
	public KW_PREPARE(): TerminalNode { return this.getToken(MySqlParser.KW_PREPARE, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public LOCAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LOCAL_ID, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_prepareStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPrepareStatement) {
			listener.enterPrepareStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPrepareStatement) {
			listener.exitPrepareStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPrepareStatement) {
			return visitor.visitPrepareStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecuteStatementContext extends ParserRuleContext {
	public _stmt_name!: UidContext;
	public KW_EXECUTE(): TerminalNode { return this.getToken(MySqlParser.KW_EXECUTE, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public userVariables(): UserVariablesContext | undefined {
		return this.tryGetRuleContext(0, UserVariablesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_executeStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExecuteStatement) {
			listener.enterExecuteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExecuteStatement) {
			listener.exitExecuteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExecuteStatement) {
			return visitor.visitExecuteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeallocatePrepareContext extends ParserRuleContext {
	public _dropFormat!: Token;
	public _stmt_name!: UidContext;
	public KW_PREPARE(): TerminalNode { return this.getToken(MySqlParser.KW_PREPARE, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public KW_DEALLOCATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEALLOCATE, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DROP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_deallocatePrepare; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDeallocatePrepare) {
			listener.enterDeallocatePrepare(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDeallocatePrepare) {
			listener.exitDeallocatePrepare(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDeallocatePrepare) {
			return visitor.visitDeallocatePrepare(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoutineBodyContext extends ParserRuleContext {
	public blockStatement(): BlockStatementContext | undefined {
		return this.tryGetRuleContext(0, BlockStatementContext);
	}
	public sqlStatement(): SqlStatementContext | undefined {
		return this.tryGetRuleContext(0, SqlStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_routineBody; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoutineBody) {
			listener.enterRoutineBody(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoutineBody) {
			listener.exitRoutineBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineBody) {
			return visitor.visitRoutineBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BlockStatementContext extends ParserRuleContext {
	public _begin!: UidContext;
	public _end!: UidContext;
	public KW_BEGIN(): TerminalNode { return this.getToken(MySqlParser.KW_BEGIN, 0); }
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public COLON_SYMB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COLON_SYMB, 0); }
	public declareVariable(): DeclareVariableContext[];
	public declareVariable(i: number): DeclareVariableContext;
	public declareVariable(i?: number): DeclareVariableContext | DeclareVariableContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DeclareVariableContext);
		} else {
			return this.getRuleContext(i, DeclareVariableContext);
		}
	}
	public SEMI(): TerminalNode[];
	public SEMI(i: number): TerminalNode;
	public SEMI(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.SEMI);
		} else {
			return this.getToken(MySqlParser.SEMI, i);
		}
	}
	public declareCondition(): DeclareConditionContext[];
	public declareCondition(i: number): DeclareConditionContext;
	public declareCondition(i?: number): DeclareConditionContext | DeclareConditionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DeclareConditionContext);
		} else {
			return this.getRuleContext(i, DeclareConditionContext);
		}
	}
	public declareCursor(): DeclareCursorContext[];
	public declareCursor(i: number): DeclareCursorContext;
	public declareCursor(i?: number): DeclareCursorContext | DeclareCursorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DeclareCursorContext);
		} else {
			return this.getRuleContext(i, DeclareCursorContext);
		}
	}
	public declareHandler(): DeclareHandlerContext[];
	public declareHandler(i: number): DeclareHandlerContext;
	public declareHandler(i?: number): DeclareHandlerContext | DeclareHandlerContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DeclareHandlerContext);
		} else {
			return this.getRuleContext(i, DeclareHandlerContext);
		}
	}
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_blockStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBlockStatement) {
			listener.enterBlockStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBlockStatement) {
			listener.exitBlockStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBlockStatement) {
			return visitor.visitBlockStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseStatementContext extends ParserRuleContext {
	public _case_value!: UidContext;
	public KW_CASE(): TerminalNode[];
	public KW_CASE(i: number): TerminalNode;
	public KW_CASE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_CASE);
		} else {
			return this.getToken(MySqlParser.KW_CASE, i);
		}
	}
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public caseAlternative(): CaseAlternativeContext[];
	public caseAlternative(i: number): CaseAlternativeContext;
	public caseAlternative(i?: number): CaseAlternativeContext | CaseAlternativeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CaseAlternativeContext);
		} else {
			return this.getRuleContext(i, CaseAlternativeContext);
		}
	}
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ELSE, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_caseStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCaseStatement) {
			listener.enterCaseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCaseStatement) {
			listener.exitCaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCaseStatement) {
			return visitor.visitCaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfStatementContext extends ParserRuleContext {
	public _procedureSqlStatement!: ProcedureSqlStatementContext;
	public _thenStatements: ProcedureSqlStatementContext[] = [];
	public _elseStatements: ProcedureSqlStatementContext[] = [];
	public KW_IF(): TerminalNode[];
	public KW_IF(i: number): TerminalNode;
	public KW_IF(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_IF);
		} else {
			return this.getToken(MySqlParser.KW_IF, i);
		}
	}
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_THEN(): TerminalNode { return this.getToken(MySqlParser.KW_THEN, 0); }
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public elifAlternative(): ElifAlternativeContext[];
	public elifAlternative(i: number): ElifAlternativeContext;
	public elifAlternative(i?: number): ElifAlternativeContext | ElifAlternativeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ElifAlternativeContext);
		} else {
			return this.getRuleContext(i, ElifAlternativeContext);
		}
	}
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ELSE, 0); }
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_ifStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIfStatement) {
			listener.enterIfStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIfStatement) {
			listener.exitIfStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIfStatement) {
			return visitor.visitIfStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IterateStatementContext extends ParserRuleContext {
	public _label!: UidContext;
	public KW_ITERATE(): TerminalNode { return this.getToken(MySqlParser.KW_ITERATE, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_iterateStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIterateStatement) {
			listener.enterIterateStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIterateStatement) {
			listener.exitIterateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIterateStatement) {
			return visitor.visitIterateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LeaveStatementContext extends ParserRuleContext {
	public _label!: UidContext;
	public KW_LEAVE(): TerminalNode { return this.getToken(MySqlParser.KW_LEAVE, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_leaveStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLeaveStatement) {
			listener.enterLeaveStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLeaveStatement) {
			listener.exitLeaveStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLeaveStatement) {
			return visitor.visitLeaveStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoopStatementContext extends ParserRuleContext {
	public _begin_label!: UidContext;
	public _end_label!: UidContext;
	public KW_LOOP(): TerminalNode[];
	public KW_LOOP(i: number): TerminalNode;
	public KW_LOOP(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_LOOP);
		} else {
			return this.getToken(MySqlParser.KW_LOOP, i);
		}
	}
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public COLON_SYMB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COLON_SYMB, 0); }
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_loopStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLoopStatement) {
			listener.enterLoopStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLoopStatement) {
			listener.exitLoopStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLoopStatement) {
			return visitor.visitLoopStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RepeatStatementContext extends ParserRuleContext {
	public _begin_label!: UidContext;
	public _end_label!: UidContext;
	public KW_REPEAT(): TerminalNode[];
	public KW_REPEAT(i: number): TerminalNode;
	public KW_REPEAT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_REPEAT);
		} else {
			return this.getToken(MySqlParser.KW_REPEAT, i);
		}
	}
	public KW_UNTIL(): TerminalNode { return this.getToken(MySqlParser.KW_UNTIL, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public COLON_SYMB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COLON_SYMB, 0); }
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_repeatStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRepeatStatement) {
			listener.enterRepeatStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRepeatStatement) {
			listener.exitRepeatStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRepeatStatement) {
			return visitor.visitRepeatStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReturnStatementContext extends ParserRuleContext {
	public KW_RETURN(): TerminalNode { return this.getToken(MySqlParser.KW_RETURN, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_returnStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReturnStatement) {
			listener.enterReturnStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReturnStatement) {
			listener.exitReturnStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReturnStatement) {
			return visitor.visitReturnStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhileStatementContext extends ParserRuleContext {
	public _begin_label!: UidContext;
	public _end_label!: UidContext;
	public KW_WHILE(): TerminalNode[];
	public KW_WHILE(i: number): TerminalNode;
	public KW_WHILE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_WHILE);
		} else {
			return this.getToken(MySqlParser.KW_WHILE, i);
		}
	}
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_DO(): TerminalNode { return this.getToken(MySqlParser.KW_DO, 0); }
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public COLON_SYMB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COLON_SYMB, 0); }
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_whileStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWhileStatement) {
			listener.enterWhileStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWhileStatement) {
			listener.exitWhileStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWhileStatement) {
			return visitor.visitWhileStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CursorStatementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_cursorStatement; }
	public copyFrom(ctx: CursorStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class CloseCursorContext extends CursorStatementContext {
	public _cursor_name!: UidContext;
	public KW_CLOSE(): TerminalNode { return this.getToken(MySqlParser.KW_CLOSE, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: CursorStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCloseCursor) {
			listener.enterCloseCursor(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCloseCursor) {
			listener.exitCloseCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCloseCursor) {
			return visitor.visitCloseCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FetchCursorContext extends CursorStatementContext {
	public _cursor_name!: UidContext;
	public _var_names!: UidListContext;
	public KW_FETCH(): TerminalNode { return this.getToken(MySqlParser.KW_FETCH, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public uidList(): UidListContext {
		return this.getRuleContext(0, UidListContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NEXT, 0); }
	constructor(ctx: CursorStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFetchCursor) {
			listener.enterFetchCursor(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFetchCursor) {
			listener.exitFetchCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFetchCursor) {
			return visitor.visitFetchCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class OpenCursorContext extends CursorStatementContext {
	public _cursor_name!: UidContext;
	public KW_OPEN(): TerminalNode { return this.getToken(MySqlParser.KW_OPEN, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: CursorStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOpenCursor) {
			listener.enterOpenCursor(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOpenCursor) {
			listener.exitOpenCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOpenCursor) {
			return visitor.visitOpenCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareVariableContext extends ParserRuleContext {
	public _var_names!: UidListContext;
	public KW_DECLARE(): TerminalNode { return this.getToken(MySqlParser.KW_DECLARE, 0); }
	public dataType(): DataTypeContext {
		return this.getRuleContext(0, DataTypeContext);
	}
	public uidList(): UidListContext {
		return this.getRuleContext(0, UidListContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_declareVariable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDeclareVariable) {
			listener.enterDeclareVariable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDeclareVariable) {
			listener.exitDeclareVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareVariable) {
			return visitor.visitDeclareVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareConditionContext extends ParserRuleContext {
	public _condition_name!: UidContext;
	public KW_DECLARE(): TerminalNode { return this.getToken(MySqlParser.KW_DECLARE, 0); }
	public KW_CONDITION(): TerminalNode { return this.getToken(MySqlParser.KW_CONDITION, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(MySqlParser.KW_FOR, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public KW_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQLSTATE, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_declareCondition; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDeclareCondition) {
			listener.enterDeclareCondition(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDeclareCondition) {
			listener.exitDeclareCondition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareCondition) {
			return visitor.visitDeclareCondition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareCursorContext extends ParserRuleContext {
	public _condition_name!: UidContext;
	public KW_DECLARE(): TerminalNode { return this.getToken(MySqlParser.KW_DECLARE, 0); }
	public KW_CURSOR(): TerminalNode { return this.getToken(MySqlParser.KW_CURSOR, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(MySqlParser.KW_FOR, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_declareCursor; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDeclareCursor) {
			listener.enterDeclareCursor(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDeclareCursor) {
			listener.exitDeclareCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareCursor) {
			return visitor.visitDeclareCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareHandlerContext extends ParserRuleContext {
	public _handlerAction!: Token;
	public KW_DECLARE(): TerminalNode { return this.getToken(MySqlParser.KW_DECLARE, 0); }
	public KW_HANDLER(): TerminalNode { return this.getToken(MySqlParser.KW_HANDLER, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(MySqlParser.KW_FOR, 0); }
	public handlerConditionValue(): HandlerConditionValueContext[];
	public handlerConditionValue(i: number): HandlerConditionValueContext;
	public handlerConditionValue(i?: number): HandlerConditionValueContext | HandlerConditionValueContext[] {
		if (i === undefined) {
			return this.getRuleContexts(HandlerConditionValueContext);
		} else {
			return this.getRuleContext(i, HandlerConditionValueContext);
		}
	}
	public routineBody(): RoutineBodyContext {
		return this.getRuleContext(0, RoutineBodyContext);
	}
	public KW_CONTINUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTINUE, 0); }
	public KW_EXIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXIT, 0); }
	public KW_UNDO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_declareHandler; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDeclareHandler) {
			listener.enterDeclareHandler(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDeclareHandler) {
			listener.exitDeclareHandler(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareHandler) {
			return visitor.visitDeclareHandler(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerConditionValueContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_handlerConditionValue; }
	public copyFrom(ctx: HandlerConditionValueContext): void {
		super.copyFrom(ctx);
	}
}
export class HandlerConditionCodeContext extends HandlerConditionValueContext {
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: HandlerConditionValueContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerConditionCode) {
			listener.enterHandlerConditionCode(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerConditionCode) {
			listener.exitHandlerConditionCode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionCode) {
			return visitor.visitHandlerConditionCode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionStateContext extends HandlerConditionValueContext {
	public KW_SQLSTATE(): TerminalNode { return this.getToken(MySqlParser.KW_SQLSTATE, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUE, 0); }
	constructor(ctx: HandlerConditionValueContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerConditionState) {
			listener.enterHandlerConditionState(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerConditionState) {
			listener.exitHandlerConditionState(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionState) {
			return visitor.visitHandlerConditionState(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionNameContext extends HandlerConditionValueContext {
	public _condition_name!: UidContext;
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: HandlerConditionValueContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerConditionName) {
			listener.enterHandlerConditionName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerConditionName) {
			listener.exitHandlerConditionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionName) {
			return visitor.visitHandlerConditionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionWarningContext extends HandlerConditionValueContext {
	public KW_SQLWARNING(): TerminalNode { return this.getToken(MySqlParser.KW_SQLWARNING, 0); }
	constructor(ctx: HandlerConditionValueContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerConditionWarning) {
			listener.enterHandlerConditionWarning(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerConditionWarning) {
			listener.exitHandlerConditionWarning(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionWarning) {
			return visitor.visitHandlerConditionWarning(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionNotfoundContext extends HandlerConditionValueContext {
	public KW_NOT(): TerminalNode { return this.getToken(MySqlParser.KW_NOT, 0); }
	public KW_FOUND(): TerminalNode { return this.getToken(MySqlParser.KW_FOUND, 0); }
	constructor(ctx: HandlerConditionValueContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerConditionNotfound) {
			listener.enterHandlerConditionNotfound(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerConditionNotfound) {
			listener.exitHandlerConditionNotfound(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionNotfound) {
			return visitor.visitHandlerConditionNotfound(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionExceptionContext extends HandlerConditionValueContext {
	public KW_SQLEXCEPTION(): TerminalNode { return this.getToken(MySqlParser.KW_SQLEXCEPTION, 0); }
	constructor(ctx: HandlerConditionValueContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHandlerConditionException) {
			listener.enterHandlerConditionException(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHandlerConditionException) {
			listener.exitHandlerConditionException(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionException) {
			return visitor.visitHandlerConditionException(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureSqlStatementContext extends ParserRuleContext {
	public SEMI(): TerminalNode { return this.getToken(MySqlParser.SEMI, 0); }
	public compoundStatement(): CompoundStatementContext | undefined {
		return this.tryGetRuleContext(0, CompoundStatementContext);
	}
	public sqlStatement(): SqlStatementContext | undefined {
		return this.tryGetRuleContext(0, SqlStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_procedureSqlStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterProcedureSqlStatement) {
			listener.enterProcedureSqlStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitProcedureSqlStatement) {
			listener.exitProcedureSqlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitProcedureSqlStatement) {
			return visitor.visitProcedureSqlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseAlternativeContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(MySqlParser.KW_WHEN, 0); }
	public KW_THEN(): TerminalNode { return this.getToken(MySqlParser.KW_THEN, 0); }
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_caseAlternative; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCaseAlternative) {
			listener.enterCaseAlternative(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCaseAlternative) {
			listener.exitCaseAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCaseAlternative) {
			return visitor.visitCaseAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ElifAlternativeContext extends ParserRuleContext {
	public KW_ELSEIF(): TerminalNode { return this.getToken(MySqlParser.KW_ELSEIF, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_THEN(): TerminalNode { return this.getToken(MySqlParser.KW_THEN, 0); }
	public procedureSqlStatement(): ProcedureSqlStatementContext[];
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext;
	public procedureSqlStatement(i?: number): ProcedureSqlStatementContext | ProcedureSqlStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ProcedureSqlStatementContext);
		} else {
			return this.getRuleContext(i, ProcedureSqlStatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_elifAlternative; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterElifAlternative) {
			listener.enterElifAlternative(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitElifAlternative) {
			listener.exitElifAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitElifAlternative) {
			return visitor.visitElifAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterUserContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public userSpecification(): UserSpecificationContext[];
	public userSpecification(i: number): UserSpecificationContext;
	public userSpecification(i?: number): UserSpecificationContext | UserSpecificationContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserSpecificationContext);
		} else {
			return this.getRuleContext(i, UserSpecificationContext);
		}
	}
	public alterUserAuthOption(): AlterUserAuthOptionContext[];
	public alterUserAuthOption(i: number): AlterUserAuthOptionContext;
	public alterUserAuthOption(i?: number): AlterUserAuthOptionContext | AlterUserAuthOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AlterUserAuthOptionContext);
		} else {
			return this.getRuleContext(i, AlterUserAuthOptionContext);
		}
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE, 0); }
	public roleOption(): RoleOptionContext | undefined {
		return this.tryGetRuleContext(0, RoleOptionContext);
	}
	public userOrRoleName(): UserOrRoleNameContext | undefined {
		return this.tryGetRuleContext(0, UserOrRoleNameContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_REQUIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public userPasswordOption(): UserPasswordOptionContext[];
	public userPasswordOption(i: number): UserPasswordOptionContext;
	public userPasswordOption(i?: number): UserPasswordOptionContext | UserPasswordOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserPasswordOptionContext);
		} else {
			return this.getRuleContext(i, UserPasswordOptionContext);
		}
	}
	public userLockOption(): UserLockOptionContext[];
	public userLockOption(i: number): UserLockOptionContext;
	public userLockOption(i?: number): UserLockOptionContext | UserLockOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserLockOptionContext);
		} else {
			return this.getRuleContext(i, UserLockOptionContext);
		}
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public KW_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ATTRIBUTE, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public tlsOption(): TlsOptionContext[];
	public tlsOption(i: number): TlsOptionContext;
	public tlsOption(i?: number): TlsOptionContext | TlsOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TlsOptionContext);
		} else {
			return this.getRuleContext(i, TlsOptionContext);
		}
	}
	public userResourceOption(): UserResourceOptionContext[];
	public userResourceOption(i: number): UserResourceOptionContext;
	public userResourceOption(i?: number): UserResourceOptionContext | UserResourceOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserResourceOptionContext);
		} else {
			return this.getRuleContext(i, UserResourceOptionContext);
		}
	}
	public KW_AND(): TerminalNode[];
	public KW_AND(i: number): TerminalNode;
	public KW_AND(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_AND);
		} else {
			return this.getToken(MySqlParser.KW_AND, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterUser; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterUser) {
			listener.enterAlterUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterUser) {
			listener.exitAlterUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterUser) {
			return visitor.visitAlterUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateUserContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	public userName(): UserNameContext[];
	public userName(i: number): UserNameContext;
	public userName(i?: number): UserNameContext | UserNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserNameContext);
		} else {
			return this.getRuleContext(i, UserNameContext);
		}
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public createUserAuthOption(): CreateUserAuthOptionContext[];
	public createUserAuthOption(i: number): CreateUserAuthOptionContext;
	public createUserAuthOption(i?: number): CreateUserAuthOptionContext | CreateUserAuthOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CreateUserAuthOptionContext);
		} else {
			return this.getRuleContext(i, CreateUserAuthOptionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE, 0); }
	public roleOption(): RoleOptionContext | undefined {
		return this.tryGetRuleContext(0, RoleOptionContext);
	}
	public KW_REQUIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public userPasswordOption(): UserPasswordOptionContext[];
	public userPasswordOption(i: number): UserPasswordOptionContext;
	public userPasswordOption(i?: number): UserPasswordOptionContext | UserPasswordOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserPasswordOptionContext);
		} else {
			return this.getRuleContext(i, UserPasswordOptionContext);
		}
	}
	public userLockOption(): UserLockOptionContext[];
	public userLockOption(i: number): UserLockOptionContext;
	public userLockOption(i?: number): UserLockOptionContext | UserLockOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserLockOptionContext);
		} else {
			return this.getRuleContext(i, UserLockOptionContext);
		}
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public KW_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ATTRIBUTE, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public tlsOption(): TlsOptionContext[];
	public tlsOption(i: number): TlsOptionContext;
	public tlsOption(i?: number): TlsOptionContext | TlsOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TlsOptionContext);
		} else {
			return this.getRuleContext(i, TlsOptionContext);
		}
	}
	public userResourceOption(): UserResourceOptionContext[];
	public userResourceOption(i: number): UserResourceOptionContext;
	public userResourceOption(i?: number): UserResourceOptionContext | UserResourceOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserResourceOptionContext);
		} else {
			return this.getRuleContext(i, UserResourceOptionContext);
		}
	}
	public KW_AND(): TerminalNode[];
	public KW_AND(i: number): TerminalNode;
	public KW_AND(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_AND);
		} else {
			return this.getToken(MySqlParser.KW_AND, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createUser; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateUser) {
			listener.enterCreateUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateUser) {
			listener.exitCreateUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateUser) {
			return visitor.visitCreateUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropUserContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	public userName(): UserNameContext[];
	public userName(i: number): UserNameContext;
	public userName(i?: number): UserNameContext | UserNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserNameContext);
		} else {
			return this.getRuleContext(i, UserNameContext);
		}
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropUser; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropUser) {
			listener.enterDropUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropUser) {
			listener.exitDropUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropUser) {
			return visitor.visitDropUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantStatementContext extends ParserRuleContext {
	public _tlsNone!: Token;
	public KW_GRANT(): TerminalNode[];
	public KW_GRANT(i: number): TerminalNode;
	public KW_GRANT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_GRANT);
		} else {
			return this.getToken(MySqlParser.KW_GRANT, i);
		}
	}
	public privelegeClause(): PrivelegeClauseContext[];
	public privelegeClause(i: number): PrivelegeClauseContext;
	public privelegeClause(i?: number): PrivelegeClauseContext | PrivelegeClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrivelegeClauseContext);
		} else {
			return this.getRuleContext(i, PrivelegeClauseContext);
		}
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public privilegeLevel(): PrivilegeLevelContext | undefined {
		return this.tryGetRuleContext(0, PrivilegeLevelContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext | undefined {
		return this.tryGetRuleContext(0, UserOrRoleNamesContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public privilegeObjectType(): PrivilegeObjectTypeContext | undefined {
		return this.tryGetRuleContext(0, PrivilegeObjectTypeContext);
	}
	public KW_REQUIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE, 0); }
	public KW_WITH(): TerminalNode[];
	public KW_WITH(i: number): TerminalNode;
	public KW_WITH(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_WITH);
		} else {
			return this.getToken(MySqlParser.KW_WITH, i);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public userName(): UserNameContext | undefined {
		return this.tryGetRuleContext(0, UserNameContext);
	}
	public userAuthOption(): UserAuthOptionContext[];
	public userAuthOption(i: number): UserAuthOptionContext;
	public userAuthOption(i?: number): UserAuthOptionContext | UserAuthOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserAuthOptionContext);
		} else {
			return this.getRuleContext(i, UserAuthOptionContext);
		}
	}
	public tlsOption(): TlsOptionContext[];
	public tlsOption(i: number): TlsOptionContext;
	public tlsOption(i?: number): TlsOptionContext | TlsOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TlsOptionContext);
		} else {
			return this.getRuleContext(i, TlsOptionContext);
		}
	}
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public KW_OPTION(): TerminalNode[];
	public KW_OPTION(i: number): TerminalNode;
	public KW_OPTION(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_OPTION);
		} else {
			return this.getToken(MySqlParser.KW_OPTION, i);
		}
	}
	public userResourceOption(): UserResourceOptionContext[];
	public userResourceOption(i: number): UserResourceOptionContext;
	public userResourceOption(i?: number): UserResourceOptionContext | UserResourceOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserResourceOptionContext);
		} else {
			return this.getRuleContext(i, UserResourceOptionContext);
		}
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE, 0); }
	public roleOption(): RoleOptionContext | undefined {
		return this.tryGetRuleContext(0, RoleOptionContext);
	}
	public KW_AND(): TerminalNode[];
	public KW_AND(i: number): TerminalNode;
	public KW_AND(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_AND);
		} else {
			return this.getToken(MySqlParser.KW_AND, i);
		}
	}
	public userOrRoleName(): UserOrRoleNameContext[];
	public userOrRoleName(i: number): UserOrRoleNameContext;
	public userOrRoleName(i?: number): UserOrRoleNameContext | UserOrRoleNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserOrRoleNameContext);
		} else {
			return this.getRuleContext(i, UserOrRoleNameContext);
		}
	}
	public KW_PROXY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROXY, 0); }
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ADMIN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_grantStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGrantStatement) {
			listener.enterGrantStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGrantStatement) {
			listener.exitGrantStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGrantStatement) {
			return visitor.visitGrantStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoleOptionContext extends ParserRuleContext {
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXCEPT, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext | undefined {
		return this.tryGetRuleContext(0, UserOrRoleNamesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_roleOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRoleOption) {
			listener.enterRoleOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRoleOption) {
			listener.exitRoleOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRoleOption) {
			return visitor.visitRoleOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantProxyContext extends ParserRuleContext {
	public _fromFirst!: UserNameContext;
	public _toFirst!: UserNameContext;
	public _userName!: UserNameContext;
	public _toOther: UserNameContext[] = [];
	public KW_GRANT(): TerminalNode[];
	public KW_GRANT(i: number): TerminalNode;
	public KW_GRANT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_GRANT);
		} else {
			return this.getToken(MySqlParser.KW_GRANT, i);
		}
	}
	public KW_PROXY(): TerminalNode { return this.getToken(MySqlParser.KW_PROXY, 0); }
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public userName(): UserNameContext[];
	public userName(i: number): UserNameContext;
	public userName(i?: number): UserNameContext | UserNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserNameContext);
		} else {
			return this.getRuleContext(i, UserNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_grantProxy; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGrantProxy) {
			listener.enterGrantProxy(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGrantProxy) {
			listener.exitGrantProxy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGrantProxy) {
			return visitor.visitGrantProxy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterResourceGroupContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(MySqlParser.KW_ALTER, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(MySqlParser.KW_RESOURCE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public groupName(): GroupNameContext {
		return this.getRuleContext(0, GroupNameContext);
	}
	public KW_VCPU(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VCPU, 0); }
	public resourceGroupVcpuSpec(): ResourceGroupVcpuSpecContext | undefined {
		return this.tryGetRuleContext(0, ResourceGroupVcpuSpecContext);
	}
	public KW_THREAD_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_THREAD_PRIORITY, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENABLE, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISABLE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public KW_FORCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FORCE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterResourceGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterResourceGroup) {
			listener.enterAlterResourceGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterResourceGroup) {
			listener.exitAlterResourceGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterResourceGroup) {
			return visitor.visitAlterResourceGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateResourceGroupContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(MySqlParser.KW_RESOURCE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public groupNameCreate(): GroupNameCreateContext {
		return this.getRuleContext(0, GroupNameCreateContext);
	}
	public KW_TYPE(): TerminalNode { return this.getToken(MySqlParser.KW_TYPE, 0); }
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SYSTEM, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER, 0); }
	public KW_VCPU(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VCPU, 0); }
	public resourceGroupVcpuSpec(): ResourceGroupVcpuSpecContext | undefined {
		return this.tryGetRuleContext(0, ResourceGroupVcpuSpecContext);
	}
	public KW_THREAD_PRIORITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_THREAD_PRIORITY, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENABLE, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createResourceGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateResourceGroup) {
			listener.enterCreateResourceGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateResourceGroup) {
			listener.exitCreateResourceGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateResourceGroup) {
			return visitor.visitCreateResourceGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropResourceGroupContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(MySqlParser.KW_DROP, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(MySqlParser.KW_RESOURCE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public groupName(): GroupNameContext {
		return this.getRuleContext(0, GroupNameContext);
	}
	public KW_FORCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FORCE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dropResourceGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDropResourceGroup) {
			listener.enterDropResourceGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDropResourceGroup) {
			listener.exitDropResourceGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDropResourceGroup) {
			return visitor.visitDropResourceGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetResourceGroupContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(MySqlParser.KW_RESOURCE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(MySqlParser.KW_GROUP, 0); }
	public groupName(): GroupNameContext {
		return this.getRuleContext(0, GroupNameContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setResourceGroup; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetResourceGroup) {
			listener.enterSetResourceGroup(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetResourceGroup) {
			listener.exitSetResourceGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetResourceGroup) {
			return visitor.visitSetResourceGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResourceGroupVcpuSpecContext extends ParserRuleContext {
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MINUS, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public resourceGroupVcpuSpec(): ResourceGroupVcpuSpecContext[];
	public resourceGroupVcpuSpec(i: number): ResourceGroupVcpuSpecContext;
	public resourceGroupVcpuSpec(i?: number): ResourceGroupVcpuSpecContext | ResourceGroupVcpuSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ResourceGroupVcpuSpecContext);
		} else {
			return this.getRuleContext(i, ResourceGroupVcpuSpecContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_resourceGroupVcpuSpec; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterResourceGroupVcpuSpec) {
			listener.enterResourceGroupVcpuSpec(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitResourceGroupVcpuSpec) {
			listener.exitResourceGroupVcpuSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitResourceGroupVcpuSpec) {
			return visitor.visitResourceGroupVcpuSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameUserContext extends ParserRuleContext {
	public KW_RENAME(): TerminalNode { return this.getToken(MySqlParser.KW_RENAME, 0); }
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	public renameUserClause(): RenameUserClauseContext[];
	public renameUserClause(i: number): RenameUserClauseContext;
	public renameUserClause(i?: number): RenameUserClauseContext | RenameUserClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RenameUserClauseContext);
		} else {
			return this.getRuleContext(i, RenameUserClauseContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_renameUser; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRenameUser) {
			listener.enterRenameUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRenameUser) {
			listener.exitRenameUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRenameUser) {
			return visitor.visitRenameUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokeStatementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_revokeStatement; }
	public copyFrom(ctx: RevokeStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class DetailRevokeContext extends RevokeStatementContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(MySqlParser.KW_REVOKE, 0); }
	public privelegeClause(): PrivelegeClauseContext[];
	public privelegeClause(i: number): PrivelegeClauseContext;
	public privelegeClause(i?: number): PrivelegeClauseContext | PrivelegeClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrivelegeClauseContext);
		} else {
			return this.getRuleContext(i, PrivelegeClauseContext);
		}
	}
	public KW_ON(): TerminalNode { return this.getToken(MySqlParser.KW_ON, 0); }
	public privilegeLevel(): PrivilegeLevelContext {
		return this.getRuleContext(0, PrivilegeLevelContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext {
		return this.getRuleContext(0, UserOrRoleNamesContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public privilegeObjectType(): PrivilegeObjectTypeContext | undefined {
		return this.tryGetRuleContext(0, PrivilegeObjectTypeContext);
	}
	public ignoreUnknownUser(): IgnoreUnknownUserContext | undefined {
		return this.tryGetRuleContext(0, IgnoreUnknownUserContext);
	}
	constructor(ctx: RevokeStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDetailRevoke) {
			listener.enterDetailRevoke(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDetailRevoke) {
			listener.exitDetailRevoke(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDetailRevoke) {
			return visitor.visitDetailRevoke(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShortRevokeContext extends RevokeStatementContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(MySqlParser.KW_REVOKE, 0); }
	public KW_ALL(): TerminalNode { return this.getToken(MySqlParser.KW_ALL, 0); }
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public KW_GRANT(): TerminalNode { return this.getToken(MySqlParser.KW_GRANT, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(MySqlParser.KW_OPTION, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext {
		return this.getRuleContext(0, UserOrRoleNamesContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGES, 0); }
	public ignoreUnknownUser(): IgnoreUnknownUserContext | undefined {
		return this.tryGetRuleContext(0, IgnoreUnknownUserContext);
	}
	constructor(ctx: RevokeStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShortRevoke) {
			listener.enterShortRevoke(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShortRevoke) {
			listener.exitShortRevoke(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShortRevoke) {
			return visitor.visitShortRevoke(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ProxyAndRoleRevokeContext extends RevokeStatementContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(MySqlParser.KW_REVOKE, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext[];
	public userOrRoleNames(i: number): UserOrRoleNamesContext;
	public userOrRoleNames(i?: number): UserOrRoleNamesContext | UserOrRoleNamesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserOrRoleNamesContext);
		} else {
			return this.getRuleContext(i, UserOrRoleNamesContext);
		}
	}
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public KW_PROXY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROXY, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public ignoreUnknownUser(): IgnoreUnknownUserContext | undefined {
		return this.tryGetRuleContext(0, IgnoreUnknownUserContext);
	}
	constructor(ctx: RevokeStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterProxyAndRoleRevoke) {
			listener.enterProxyAndRoleRevoke(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitProxyAndRoleRevoke) {
			listener.exitProxyAndRoleRevoke(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitProxyAndRoleRevoke) {
			return visitor.visitProxyAndRoleRevoke(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IgnoreUnknownUserContext extends ParserRuleContext {
	public KW_IGNORE(): TerminalNode { return this.getToken(MySqlParser.KW_IGNORE, 0); }
	public KW_UNKNOWN(): TerminalNode { return this.getToken(MySqlParser.KW_UNKNOWN, 0); }
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_ignoreUnknownUser; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIgnoreUnknownUser) {
			listener.enterIgnoreUnknownUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIgnoreUnknownUser) {
			listener.exitIgnoreUnknownUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIgnoreUnknownUser) {
			return visitor.visitIgnoreUnknownUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeObjectTypeContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FUNCTION, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCEDURE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_privilegeObjectType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPrivilegeObjectType) {
			listener.enterPrivilegeObjectType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPrivilegeObjectType) {
			listener.exitPrivilegeObjectType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeObjectType) {
			return visitor.visitPrivilegeObjectType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetPasswordStatementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setPasswordStatement; }
	public copyFrom(ctx: SetPasswordStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class V57Context extends SetPasswordStatementContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_PASSWORD(): TerminalNode { return this.getToken(MySqlParser.KW_PASSWORD, 0); }
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public passwordFunctionClause(): PasswordFunctionClauseContext | undefined {
		return this.tryGetRuleContext(0, PasswordFunctionClauseContext);
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public userName(): UserNameContext | undefined {
		return this.tryGetRuleContext(0, UserNameContext);
	}
	constructor(ctx: SetPasswordStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterV57) {
			listener.enterV57(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitV57) {
			listener.exitV57(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitV57) {
			return visitor.visitV57(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class V80Context extends SetPasswordStatementContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_PASSWORD(): TerminalNode[];
	public KW_PASSWORD(i: number): TerminalNode;
	public KW_PASSWORD(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_PASSWORD);
		} else {
			return this.getToken(MySqlParser.KW_PASSWORD, i);
		}
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TO, 0); }
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public userName(): UserNameContext | undefined {
		return this.tryGetRuleContext(0, UserNameContext);
	}
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLACE, 0); }
	public KW_RETAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RETAIN, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT, 0); }
	constructor(ctx: SetPasswordStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterV80) {
			listener.enterV80(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitV80) {
			listener.exitV80(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitV80) {
			return visitor.visitV80(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserSpecificationContext extends ParserRuleContext {
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	public userPasswordOption(): UserPasswordOptionContext {
		return this.getRuleContext(0, UserPasswordOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userSpecification; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserSpecification) {
			listener.enterUserSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserSpecification) {
			listener.exitUserSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserSpecification) {
			return visitor.visitUserSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterUserAuthOptionContext extends ParserRuleContext {
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	public KW_IDENTIFIED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public authOptionClause(): AuthOptionClauseContext | undefined {
		return this.tryGetRuleContext(0, AuthOptionClauseContext);
	}
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public authenticationRule(): AuthenticationRuleContext | undefined {
		return this.tryGetRuleContext(0, AuthenticationRuleContext);
	}
	public KW_DISCARD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISCARD, 0); }
	public KW_OLD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OLD, 0); }
	public factor(): FactorContext[];
	public factor(i: number): FactorContext;
	public factor(i?: number): FactorContext | FactorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FactorContext);
		} else {
			return this.getRuleContext(i, FactorContext);
		}
	}
	public KW_ADD(): TerminalNode[];
	public KW_ADD(i: number): TerminalNode;
	public KW_ADD(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ADD);
		} else {
			return this.getToken(MySqlParser.KW_ADD, i);
		}
	}
	public KW_MODIFY(): TerminalNode[];
	public KW_MODIFY(i: number): TerminalNode;
	public KW_MODIFY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_MODIFY);
		} else {
			return this.getToken(MySqlParser.KW_MODIFY, i);
		}
	}
	public KW_DROP(): TerminalNode[];
	public KW_DROP(i: number): TerminalNode;
	public KW_DROP(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_DROP);
		} else {
			return this.getToken(MySqlParser.KW_DROP, i);
		}
	}
	public factorAuthOption(): FactorAuthOptionContext[];
	public factorAuthOption(i: number): FactorAuthOptionContext;
	public factorAuthOption(i?: number): FactorAuthOptionContext | FactorAuthOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FactorAuthOptionContext);
		} else {
			return this.getRuleContext(i, FactorAuthOptionContext);
		}
	}
	public registrationOption(): RegistrationOptionContext | undefined {
		return this.tryGetRuleContext(0, RegistrationOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_alterUserAuthOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAlterUserAuthOption) {
			listener.enterAlterUserAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAlterUserAuthOption) {
			listener.exitAlterUserAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAlterUserAuthOption) {
			return visitor.visitAlterUserAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateUserAuthOptionContext extends ParserRuleContext {
	public _authPlugin!: UidContext;
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AND, 0); }
	public createUserAuthOption(): CreateUserAuthOptionContext | undefined {
		return this.tryGetRuleContext(0, CreateUserAuthOptionContext);
	}
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public createUserInitialAuthOption(): CreateUserInitialAuthOptionContext | undefined {
		return this.tryGetRuleContext(0, CreateUserInitialAuthOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createUserAuthOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateUserAuthOption) {
			listener.enterCreateUserAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateUserAuthOption) {
			listener.exitCreateUserAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateUserAuthOption) {
			return visitor.visitCreateUserAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateUserInitialAuthOptionContext extends ParserRuleContext {
	public _authPlugin!: UidContext;
	public KW_INITIAL(): TerminalNode { return this.getToken(MySqlParser.KW_INITIAL, 0); }
	public KW_AUTHENTICATION(): TerminalNode { return this.getToken(MySqlParser.KW_AUTHENTICATION, 0); }
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createUserInitialAuthOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateUserInitialAuthOption) {
			listener.enterCreateUserInitialAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateUserInitialAuthOption) {
			listener.exitCreateUserInitialAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateUserInitialAuthOption) {
			return visitor.visitCreateUserInitialAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserAuthOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userAuthOption; }
	public copyFrom(ctx: UserAuthOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class HashAuthOptionContext extends UserAuthOptionContext {
	public _hashed!: Token;
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public KW_PASSWORD(): TerminalNode { return this.getToken(MySqlParser.KW_PASSWORD, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: UserAuthOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHashAuthOption) {
			listener.enterHashAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHashAuthOption) {
			listener.exitHashAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHashAuthOption) {
			return visitor.visitHashAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RandomAuthOptionContext extends UserAuthOptionContext {
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public KW_RANDOM(): TerminalNode { return this.getToken(MySqlParser.KW_RANDOM, 0); }
	public KW_PASSWORD(): TerminalNode { return this.getToken(MySqlParser.KW_PASSWORD, 0); }
	public authOptionClause(): AuthOptionClauseContext {
		return this.getRuleContext(0, AuthOptionClauseContext);
	}
	constructor(ctx: UserAuthOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRandomAuthOption) {
			listener.enterRandomAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRandomAuthOption) {
			listener.exitRandomAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRandomAuthOption) {
			return visitor.visitRandomAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StringAuthOptionContext extends UserAuthOptionContext {
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public authOptionClause(): AuthOptionClauseContext {
		return this.getRuleContext(0, AuthOptionClauseContext);
	}
	constructor(ctx: UserAuthOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStringAuthOption) {
			listener.enterStringAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStringAuthOption) {
			listener.exitStringAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStringAuthOption) {
			return visitor.visitStringAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ModuleAuthOptionContext extends UserAuthOptionContext {
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_WITH(): TerminalNode { return this.getToken(MySqlParser.KW_WITH, 0); }
	public authenticationRule(): AuthenticationRuleContext {
		return this.getRuleContext(0, AuthenticationRuleContext);
	}
	constructor(ctx: UserAuthOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterModuleAuthOption) {
			listener.enterModuleAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitModuleAuthOption) {
			listener.exitModuleAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitModuleAuthOption) {
			return visitor.visitModuleAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleAuthOptionContext extends UserAuthOptionContext {
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	constructor(ctx: UserAuthOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleAuthOption) {
			listener.enterSimpleAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleAuthOption) {
			listener.exitSimpleAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleAuthOption) {
			return visitor.visitSimpleAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AuthOptionClauseContext extends ParserRuleContext {
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLACE, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_RETAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RETAIN, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_authOptionClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAuthOptionClause) {
			listener.enterAuthOptionClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAuthOptionClause) {
			listener.exitAuthOptionClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAuthOptionClause) {
			return visitor.visitAuthOptionClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AuthenticationRuleContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_authenticationRule; }
	public copyFrom(ctx: AuthenticationRuleContext): void {
		super.copyFrom(ctx);
	}
}
export class ModuleContext extends AuthenticationRuleContext {
	public _authPlugin!: UidContext;
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public authOptionClause(): AuthOptionClauseContext | undefined {
		return this.tryGetRuleContext(0, AuthOptionClauseContext);
	}
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	constructor(ctx: AuthenticationRuleContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterModule) {
			listener.enterModule(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitModule) {
			listener.exitModule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitModule) {
			return visitor.visitModule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PasswordModuleOptionContext extends AuthenticationRuleContext {
	public _authPlugin!: UidContext;
	public KW_USING(): TerminalNode { return this.getToken(MySqlParser.KW_USING, 0); }
	public passwordFunctionClause(): PasswordFunctionClauseContext {
		return this.getRuleContext(0, PasswordFunctionClauseContext);
	}
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: AuthenticationRuleContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPasswordModuleOption) {
			listener.enterPasswordModuleOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPasswordModuleOption) {
			listener.exitPasswordModuleOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordModuleOption) {
			return visitor.visitPasswordModuleOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TlsOptionContext extends ParserRuleContext {
	public KW_SSL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SSL, 0); }
	public KW_X509(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_X509, 0); }
	public KW_CIPHER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CIPHER, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_ISSUER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ISSUER, 0); }
	public KW_SUBJECT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBJECT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tlsOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTlsOption) {
			listener.enterTlsOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTlsOption) {
			listener.exitTlsOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTlsOption) {
			return visitor.visitTlsOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserResourceOptionContext extends ParserRuleContext {
	public KW_MAX_QUERIES_PER_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_QUERIES_PER_HOUR, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public KW_MAX_UPDATES_PER_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_UPDATES_PER_HOUR, 0); }
	public KW_MAX_CONNECTIONS_PER_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR, 0); }
	public KW_MAX_USER_CONNECTIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_USER_CONNECTIONS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userResourceOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserResourceOption) {
			listener.enterUserResourceOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserResourceOption) {
			listener.exitUserResourceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserResourceOption) {
			return visitor.visitUserResourceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserPasswordOptionContext extends ParserRuleContext {
	public _expireType!: Token;
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_EXPIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPIRE, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_NEVER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NEVER, 0); }
	public KW_INTERVAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTERVAL, 0); }
	public KW_HISTORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HISTORY, 0); }
	public KW_REUSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REUSE, 0); }
	public KW_REQUIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT, 0); }
	public KW_OPTIONAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTIONAL, 0); }
	public KW_FAILED_LOGIN_ATTEMPTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FAILED_LOGIN_ATTEMPTS, 0); }
	public KW_PASSWORD_LOCK_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD_LOCK_TIME, 0); }
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNBOUNDED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userPasswordOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserPasswordOption) {
			listener.enterUserPasswordOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserPasswordOption) {
			listener.exitUserPasswordOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserPasswordOption) {
			return visitor.visitUserPasswordOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserLockOptionContext extends ParserRuleContext {
	public _lockType!: Token;
	public KW_ACCOUNT(): TerminalNode { return this.getToken(MySqlParser.KW_ACCOUNT, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCK, 0); }
	public KW_UNLOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNLOCK, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userLockOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserLockOption) {
			listener.enterUserLockOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserLockOption) {
			listener.exitUserLockOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserLockOption) {
			return visitor.visitUserLockOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FactorAuthOptionContext extends ParserRuleContext {
	public _authPlugin!: UidContext;
	public KW_IDENTIFIED(): TerminalNode { return this.getToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_factorAuthOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFactorAuthOption) {
			listener.enterFactorAuthOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFactorAuthOption) {
			listener.exitFactorAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFactorAuthOption) {
			return visitor.visitFactorAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RegistrationOptionContext extends ParserRuleContext {
	public factor(): FactorContext {
		return this.getRuleContext(0, FactorContext);
	}
	public KW_INITIATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INITIATE, 0); }
	public KW_REGISTRATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REGISTRATION, 0); }
	public KW_FINISH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FINISH, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_CHALLENGE_RESPONSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHALLENGE_RESPONSE, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_UNREGISTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNREGISTER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_registrationOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRegistrationOption) {
			listener.enterRegistrationOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRegistrationOption) {
			listener.exitRegistrationOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRegistrationOption) {
			return visitor.visitRegistrationOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FactorContext extends ParserRuleContext {
	public KW_FACTOR(): TerminalNode { return this.getToken(MySqlParser.KW_FACTOR, 0); }
	public TWO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.TWO_DECIMAL, 0); }
	public THREE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.THREE_DECIMAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_factor; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFactor) {
			listener.enterFactor(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFactor) {
			listener.exitFactor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFactor) {
			return visitor.visitFactor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivelegeClauseContext extends ParserRuleContext {
	public privilege(): PrivilegeContext {
		return this.getRuleContext(0, PrivilegeContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_privelegeClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPrivelegeClause) {
			listener.enterPrivelegeClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPrivelegeClause) {
			listener.exitPrivelegeClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPrivelegeClause) {
			return visitor.visitPrivelegeClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGES, 0); }
	public KW_ALTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALTER, 0); }
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROUTINE, 0); }
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CREATE, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPORARY, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VIEW, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLESPACE, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DELETE, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DROP, 0); }
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EVENT, 0); }
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXECUTE, 0); }
	public KW_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FILE, 0); }
	public KW_GRANT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GRANT, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTION, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSERT, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCK, 0); }
	public KW_PROCESS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCESS, 0); }
	public KW_PROXY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROXY, 0); }
	public KW_REFERENCES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REFERENCES, 0); }
	public KW_RELOAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELOAD, 0); }
	public KW_REPLICATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATION, 0); }
	public KW_CLIENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLIENT, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SELECT, 0); }
	public KW_SHOW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHOW, 0); }
	public KW_DATABASES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASES, 0); }
	public KW_SHUTDOWN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHUTDOWN, 0); }
	public KW_SUPER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUPER, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRIGGER, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public KW_USAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USAGE, 0); }
	public KW_APPLICATION_PASSWORD_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_APPLICATION_PASSWORD_ADMIN, 0); }
	public KW_AUDIT_ABORT_EXEMPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUDIT_ABORT_EXEMPT, 0); }
	public KW_AUDIT_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUDIT_ADMIN, 0); }
	public KW_AUTHENTICATION_POLICY_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN, 0); }
	public KW_BACKUP_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BACKUP_ADMIN, 0); }
	public KW_BINLOG_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINLOG_ADMIN, 0); }
	public KW_BINLOG_ENCRYPTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN, 0); }
	public KW_CLONE_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLONE_ADMIN, 0); }
	public KW_CONNECTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONNECTION_ADMIN, 0); }
	public KW_ENCRYPTION_KEY_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENCRYPTION_KEY_ADMIN, 0); }
	public KW_FIREWALL_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIREWALL_ADMIN, 0); }
	public KW_FIREWALL_EXEMPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIREWALL_EXEMPT, 0); }
	public KW_FIREWALL_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIREWALL_USER, 0); }
	public KW_FLUSH_OPTIMIZER_COSTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLUSH_OPTIMIZER_COSTS, 0); }
	public KW_FLUSH_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLUSH_STATUS, 0); }
	public KW_FLUSH_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLUSH_TABLES, 0); }
	public KW_FLUSH_USER_RESOURCES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLUSH_USER_RESOURCES, 0); }
	public KW_GROUP_REPLICATION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP_REPLICATION_ADMIN, 0); }
	public KW_INNODB_REDO_LOG_ARCHIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE, 0); }
	public KW_INNODB_REDO_LOG_ENABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INNODB_REDO_LOG_ENABLE, 0); }
	public KW_NDB_STORED_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NDB_STORED_USER, 0); }
	public KW_PASSWORDLESS_USER_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORDLESS_USER_ADMIN, 0); }
	public KW_PERSIST_RO_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN, 0); }
	public KW_REPLICATION_APPLIER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATION_APPLIER, 0); }
	public KW_REPLICATION_SLAVE_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATION_SLAVE_ADMIN, 0); }
	public KW_RESOURCE_GROUP_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESOURCE_GROUP_ADMIN, 0); }
	public KW_RESOURCE_GROUP_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESOURCE_GROUP_USER, 0); }
	public KW_ROLE_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE_ADMIN, 0); }
	public KW_SERVICE_CONNECTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SERVICE_CONNECTION_ADMIN, 0); }
	public KW_SESSION_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION_VARIABLES_ADMIN, 0); }
	public KW_SET_USER_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET_USER_ID, 0); }
	public KW_SKIP_QUERY_REWRITE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SKIP_QUERY_REWRITE, 0); }
	public KW_SHOW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHOW_ROUTINE, 0); }
	public KW_SYSTEM_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SYSTEM_USER, 0); }
	public KW_SYSTEM_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SYSTEM_VARIABLES_ADMIN, 0); }
	public KW_TABLE_ENCRYPTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE_ENCRYPTION_ADMIN, 0); }
	public KW_TP_CONNECTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TP_CONNECTION_ADMIN, 0); }
	public KW_VERSION_TOKEN_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VERSION_TOKEN_ADMIN, 0); }
	public KW_XA_RECOVER_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_XA_RECOVER_ADMIN, 0); }
	public KW_LOAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOAD, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public KW_S3(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_S3, 0); }
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTO, 0); }
	public KW_INVOKE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVOKE, 0); }
	public KW_LAMBDA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAMBDA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_privilege; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPrivilege) {
			listener.enterPrivilege(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPrivilege) {
			listener.exitPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilege) {
			return visitor.visitPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeLevelContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_privilegeLevel; }
	public copyFrom(ctx: PrivilegeLevelContext): void {
		super.copyFrom(ctx);
	}
}
export class CurrentSchemaPriviLevelContext extends PrivilegeLevelContext {
	public STAR(): TerminalNode { return this.getToken(MySqlParser.STAR, 0); }
	constructor(ctx: PrivilegeLevelContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCurrentSchemaPriviLevel) {
			listener.enterCurrentSchemaPriviLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCurrentSchemaPriviLevel) {
			listener.exitCurrentSchemaPriviLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCurrentSchemaPriviLevel) {
			return visitor.visitCurrentSchemaPriviLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GlobalPrivLevelContext extends PrivilegeLevelContext {
	public STAR(): TerminalNode[];
	public STAR(i: number): TerminalNode;
	public STAR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STAR);
		} else {
			return this.getToken(MySqlParser.STAR, i);
		}
	}
	public DOT(): TerminalNode { return this.getToken(MySqlParser.DOT, 0); }
	constructor(ctx: PrivilegeLevelContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGlobalPrivLevel) {
			listener.enterGlobalPrivLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGlobalPrivLevel) {
			listener.exitGlobalPrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGlobalPrivLevel) {
			return visitor.visitGlobalPrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteSchemaPrivLevelContext extends PrivilegeLevelContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public DOT(): TerminalNode { return this.getToken(MySqlParser.DOT, 0); }
	public STAR(): TerminalNode { return this.getToken(MySqlParser.STAR, 0); }
	constructor(ctx: PrivilegeLevelContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefiniteSchemaPrivLevel) {
			listener.enterDefiniteSchemaPrivLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefiniteSchemaPrivLevel) {
			listener.exitDefiniteSchemaPrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteSchemaPrivLevel) {
			return visitor.visitDefiniteSchemaPrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteFullTablePrivLevelContext extends PrivilegeLevelContext {
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public DOT(): TerminalNode { return this.getToken(MySqlParser.DOT, 0); }
	constructor(ctx: PrivilegeLevelContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefiniteFullTablePrivLevel) {
			listener.enterDefiniteFullTablePrivLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefiniteFullTablePrivLevel) {
			listener.exitDefiniteFullTablePrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteFullTablePrivLevel) {
			return visitor.visitDefiniteFullTablePrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteFullTablePrivLevel2Context extends PrivilegeLevelContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public dottedId(): DottedIdContext {
		return this.getRuleContext(0, DottedIdContext);
	}
	constructor(ctx: PrivilegeLevelContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefiniteFullTablePrivLevel2) {
			listener.enterDefiniteFullTablePrivLevel2(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefiniteFullTablePrivLevel2) {
			listener.exitDefiniteFullTablePrivLevel2(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteFullTablePrivLevel2) {
			return visitor.visitDefiniteFullTablePrivLevel2(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteTablePrivLevelContext extends PrivilegeLevelContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: PrivilegeLevelContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefiniteTablePrivLevel) {
			listener.enterDefiniteTablePrivLevel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefiniteTablePrivLevel) {
			listener.exitDefiniteTablePrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteTablePrivLevel) {
			return visitor.visitDefiniteTablePrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameUserClauseContext extends ParserRuleContext {
	public _fromFirst!: UserNameContext;
	public _toFirst!: UserNameContext;
	public KW_TO(): TerminalNode { return this.getToken(MySqlParser.KW_TO, 0); }
	public userName(): UserNameContext[];
	public userName(i: number): UserNameContext;
	public userName(i?: number): UserNameContext | UserNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserNameContext);
		} else {
			return this.getRuleContext(i, UserNameContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_renameUserClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRenameUserClause) {
			listener.enterRenameUserClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRenameUserClause) {
			listener.exitRenameUserClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRenameUserClause) {
			return visitor.visitRenameUserClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnalyzeTableContext extends ParserRuleContext {
	public KW_ANALYZE(): TerminalNode { return this.getToken(MySqlParser.KW_ANALYZE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNames(): TableNamesContext | undefined {
		return this.tryGetRuleContext(0, TableNamesContext);
	}
	public tableActionOption(): TableActionOptionContext | undefined {
		return this.tryGetRuleContext(0, TableActionOptionContext);
	}
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public KW_HISTOGRAM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HISTOGRAM, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public columnNames(): ColumnNamesContext | undefined {
		return this.tryGetRuleContext(0, ColumnNamesContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public KW_BUCKETS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BUCKETS, 0); }
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATA, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DROP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_analyzeTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAnalyzeTable) {
			listener.enterAnalyzeTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAnalyzeTable) {
			listener.exitAnalyzeTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAnalyzeTable) {
			return visitor.visitAnalyzeTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckTableContext extends ParserRuleContext {
	public KW_CHECK(): TerminalNode { return this.getToken(MySqlParser.KW_CHECK, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public checkTableOption(): CheckTableOptionContext[];
	public checkTableOption(i: number): CheckTableOptionContext;
	public checkTableOption(i?: number): CheckTableOptionContext | CheckTableOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CheckTableOptionContext);
		} else {
			return this.getRuleContext(i, CheckTableOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_checkTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCheckTable) {
			listener.enterCheckTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCheckTable) {
			listener.exitCheckTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCheckTable) {
			return visitor.visitCheckTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChecksumTableContext extends ParserRuleContext {
	public _actionOption!: Token;
	public KW_CHECKSUM(): TerminalNode { return this.getToken(MySqlParser.KW_CHECKSUM, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public KW_QUICK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUICK, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_checksumTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterChecksumTable) {
			listener.enterChecksumTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitChecksumTable) {
			listener.exitChecksumTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitChecksumTable) {
			return visitor.visitChecksumTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptimizeTableContext extends ParserRuleContext {
	public KW_OPTIMIZE(): TerminalNode { return this.getToken(MySqlParser.KW_OPTIMIZE, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public tableActionOption(): TableActionOptionContext | undefined {
		return this.tryGetRuleContext(0, TableActionOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_optimizeTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOptimizeTable) {
			listener.enterOptimizeTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOptimizeTable) {
			listener.exitOptimizeTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOptimizeTable) {
			return visitor.visitOptimizeTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RepairTableContext extends ParserRuleContext {
	public KW_REPAIR(): TerminalNode { return this.getToken(MySqlParser.KW_REPAIR, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNames(): TableNamesContext {
		return this.getRuleContext(0, TableNamesContext);
	}
	public tableActionOption(): TableActionOptionContext | undefined {
		return this.tryGetRuleContext(0, TableActionOptionContext);
	}
	public KW_QUICK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUICK, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public KW_USE_FRM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USE_FRM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_repairTable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRepairTable) {
			listener.enterRepairTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRepairTable) {
			listener.exitRepairTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRepairTable) {
			return visitor.visitRepairTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableActionOptionContext extends ParserRuleContext {
	public KW_NO_WRITE_TO_BINLOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NO_WRITE_TO_BINLOG, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableActionOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableActionOption) {
			listener.enterTableActionOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableActionOption) {
			listener.exitTableActionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableActionOption) {
			return visitor.visitTableActionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckTableOptionContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public KW_UPGRADE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPGRADE, 0); }
	public KW_QUICK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUICK, 0); }
	public KW_FAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FAST, 0); }
	public KW_MEDIUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEDIUM, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public KW_CHANGED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHANGED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_checkTableOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCheckTableOption) {
			listener.enterCheckTableOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCheckTableOption) {
			listener.exitCheckTableOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCheckTableOption) {
			return visitor.visitCheckTableOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateFunctionContext extends ParserRuleContext {
	public _returnType!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(MySqlParser.KW_FUNCTION, 0); }
	public functionNameCreate(): FunctionNameCreateContext {
		return this.getRuleContext(0, FunctionNameCreateContext);
	}
	public KW_RETURNS(): TerminalNode { return this.getToken(MySqlParser.KW_RETURNS, 0); }
	public KW_SONAME(): TerminalNode { return this.getToken(MySqlParser.KW_SONAME, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STRING, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTEGER, 0); }
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REAL, 0); }
	public KW_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DECIMAL, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AGGREGATE, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_createFunction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCreateFunction) {
			listener.enterCreateFunction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCreateFunction) {
			listener.exitCreateFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCreateFunction) {
			return visitor.visitCreateFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InstallComponentContext extends ParserRuleContext {
	public _component_name!: UidContext;
	public KW_INSTALL(): TerminalNode { return this.getToken(MySqlParser.KW_INSTALL, 0); }
	public KW_COMPONENT(): TerminalNode { return this.getToken(MySqlParser.KW_COMPONENT, 0); }
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public variableExpr(): VariableExprContext[];
	public variableExpr(i: number): VariableExprContext;
	public variableExpr(i?: number): VariableExprContext | VariableExprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(VariableExprContext);
		} else {
			return this.getRuleContext(i, VariableExprContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_installComponent; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInstallComponent) {
			listener.enterInstallComponent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInstallComponent) {
			listener.exitInstallComponent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInstallComponent) {
			return visitor.visitInstallComponent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariableExprContext extends ParserRuleContext {
	public _system_var_name!: FullIdContext;
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GLOBAL, 0); }
	public GLOBAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.GLOBAL_ID, 0); }
	public KW_PERSIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERSIST, 0); }
	public PERSIST_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.PERSIST_ID, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_variableExpr; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterVariableExpr) {
			listener.enterVariableExpr(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitVariableExpr) {
			listener.exitVariableExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitVariableExpr) {
			return visitor.visitVariableExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UninstallComponentContext extends ParserRuleContext {
	public _component_name!: UidContext;
	public KW_UNINSTALL(): TerminalNode { return this.getToken(MySqlParser.KW_UNINSTALL, 0); }
	public KW_COMPONENT(): TerminalNode { return this.getToken(MySqlParser.KW_COMPONENT, 0); }
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_uninstallComponent; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUninstallComponent) {
			listener.enterUninstallComponent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUninstallComponent) {
			listener.exitUninstallComponent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUninstallComponent) {
			return visitor.visitUninstallComponent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InstallPluginContext extends ParserRuleContext {
	public _pluginName!: UidContext;
	public KW_INSTALL(): TerminalNode { return this.getToken(MySqlParser.KW_INSTALL, 0); }
	public KW_PLUGIN(): TerminalNode { return this.getToken(MySqlParser.KW_PLUGIN, 0); }
	public KW_SONAME(): TerminalNode { return this.getToken(MySqlParser.KW_SONAME, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_installPlugin; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInstallPlugin) {
			listener.enterInstallPlugin(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInstallPlugin) {
			listener.exitInstallPlugin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInstallPlugin) {
			return visitor.visitInstallPlugin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UninstallPluginContext extends ParserRuleContext {
	public _pluginName!: UidContext;
	public KW_UNINSTALL(): TerminalNode { return this.getToken(MySqlParser.KW_UNINSTALL, 0); }
	public KW_PLUGIN(): TerminalNode { return this.getToken(MySqlParser.KW_PLUGIN, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_uninstallPlugin; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUninstallPlugin) {
			listener.enterUninstallPlugin(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUninstallPlugin) {
			listener.exitUninstallPlugin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUninstallPlugin) {
			return visitor.visitUninstallPlugin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CloneStatementContext extends ParserRuleContext {
	public KW_CLONE(): TerminalNode { return this.getToken(MySqlParser.KW_CLONE, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATA, 0); }
	public KW_DIRECTORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DIRECTORY, 0); }
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public KW_INSTANCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSTANCE, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public userHostPort(): UserHostPortContext | undefined {
		return this.tryGetRuleContext(0, UserHostPortContext);
	}
	public KW_IDENTIFIED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public KW_REQUIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REQUIRE, 0); }
	public KW_SSL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SSL, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_cloneStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCloneStatement) {
			listener.enterCloneStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCloneStatement) {
			listener.exitCloneStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCloneStatement) {
			return visitor.visitCloneStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetStatementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_setStatement; }
	public copyFrom(ctx: SetStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class SetVariableContext extends SetStatementContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public variableClause(): VariableClauseContext[];
	public variableClause(i: number): VariableClauseContext;
	public variableClause(i?: number): VariableClauseContext | VariableClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(VariableClauseContext);
		} else {
			return this.getRuleContext(i, VariableClauseContext);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public VAR_ASSIGN(): TerminalNode[];
	public VAR_ASSIGN(i: number): TerminalNode;
	public VAR_ASSIGN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.VAR_ASSIGN);
		} else {
			return this.getToken(MySqlParser.VAR_ASSIGN, i);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ON);
		} else {
			return this.getToken(MySqlParser.KW_ON, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetVariable) {
			listener.enterSetVariable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetVariable) {
			listener.exitSetVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetVariable) {
			return visitor.visitSetVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetCharsetContext extends SetStatementContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public charSet(): CharSetContext {
		return this.getRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetCharset) {
			listener.enterSetCharset(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetCharset) {
			listener.exitSetCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetCharset) {
			return visitor.visitSetCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetNamesContext extends SetStatementContext {
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public KW_NAMES(): TerminalNode { return this.getToken(MySqlParser.KW_NAMES, 0); }
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetNames) {
			listener.enterSetNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetNames) {
			listener.exitSetNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetNames) {
			return visitor.visitSetNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetPasswordContext extends SetStatementContext {
	public setPasswordStatement(): SetPasswordStatementContext {
		return this.getRuleContext(0, SetPasswordStatementContext);
	}
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetPassword) {
			listener.enterSetPassword(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetPassword) {
			listener.exitSetPassword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetPassword) {
			return visitor.visitSetPassword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetTransactionContext extends SetStatementContext {
	public setTransactionStatement(): SetTransactionStatementContext {
		return this.getRuleContext(0, SetTransactionStatementContext);
	}
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetTransaction) {
			listener.enterSetTransaction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetTransaction) {
			listener.exitSetTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetTransaction) {
			return visitor.visitSetTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetAutocommitContext extends SetStatementContext {
	public setAutocommitStatement(): SetAutocommitStatementContext {
		return this.getRuleContext(0, SetAutocommitStatementContext);
	}
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetAutocommit) {
			listener.enterSetAutocommit(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetAutocommit) {
			listener.exitSetAutocommit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetAutocommit) {
			return visitor.visitSetAutocommit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetNewValueInsideTriggerContext extends SetStatementContext {
	public _system_var_name!: FullIdContext;
	public KW_SET(): TerminalNode { return this.getToken(MySqlParser.KW_SET, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public fullId(): FullIdContext[];
	public fullId(i: number): FullIdContext;
	public fullId(i?: number): FullIdContext | FullIdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FullIdContext);
		} else {
			return this.getRuleContext(i, FullIdContext);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public VAR_ASSIGN(): TerminalNode[];
	public VAR_ASSIGN(i: number): TerminalNode;
	public VAR_ASSIGN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.VAR_ASSIGN);
		} else {
			return this.getToken(MySqlParser.VAR_ASSIGN, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: SetStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSetNewValueInsideTrigger) {
			listener.enterSetNewValueInsideTrigger(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSetNewValueInsideTrigger) {
			listener.exitSetNewValueInsideTrigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSetNewValueInsideTrigger) {
			return visitor.visitSetNewValueInsideTrigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowStatementContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_showStatement; }
	public copyFrom(ctx: ShowStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class ShowMasterLogsContext extends ShowStatementContext {
	public _logFormat!: Token;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_LOGS(): TerminalNode { return this.getToken(MySqlParser.KW_LOGS, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_MASTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowMasterLogs) {
			listener.enterShowMasterLogs(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowMasterLogs) {
			listener.exitShowMasterLogs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowMasterLogs) {
			return visitor.visitShowMasterLogs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowLogEventsContext extends ShowStatementContext {
	public _logFormat!: Token;
	public _filename!: Token;
	public _fromPosition!: DecimalLiteralContext;
	public _offset!: DecimalLiteralContext;
	public _rowCount!: DecimalLiteralContext;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_EVENTS(): TerminalNode { return this.getToken(MySqlParser.KW_EVENTS, 0); }
	public KW_BINLOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINLOG, 0); }
	public KW_RELAYLOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAYLOG, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IN, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COMMA, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowLogEvents) {
			listener.enterShowLogEvents(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowLogEvents) {
			listener.exitShowLogEvents(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowLogEvents) {
			return visitor.visitShowLogEvents(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowObjectFilterContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public showCommonEntity(): ShowCommonEntityContext {
		return this.getRuleContext(0, ShowCommonEntityContext);
	}
	public showFilter(): ShowFilterContext | undefined {
		return this.tryGetRuleContext(0, ShowFilterContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowObjectFilter) {
			listener.enterShowObjectFilter(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowObjectFilter) {
			listener.exitShowObjectFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowObjectFilter) {
			return visitor.visitShowObjectFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowColumnsContext extends ShowStatementContext {
	public _columnsFormat!: Token;
	public _tableFormat!: Token;
	public _schemaFormat!: Token;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public KW_FIELDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIELDS, 0); }
	public KW_FROM(): TerminalNode[];
	public KW_FROM(i: number): TerminalNode;
	public KW_FROM(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_FROM);
		} else {
			return this.getToken(MySqlParser.KW_FROM, i);
		}
	}
	public KW_IN(): TerminalNode[];
	public KW_IN(i: number): TerminalNode;
	public KW_IN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_IN);
		} else {
			return this.getToken(MySqlParser.KW_IN, i);
		}
	}
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULL, 0); }
	public databaseName(): DatabaseNameContext | undefined {
		return this.tryGetRuleContext(0, DatabaseNameContext);
	}
	public showFilter(): ShowFilterContext | undefined {
		return this.tryGetRuleContext(0, ShowFilterContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowColumns) {
			listener.enterShowColumns(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowColumns) {
			listener.exitShowColumns(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowColumns) {
			return visitor.visitShowColumns(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateDbContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public databaseNameCreate(): DatabaseNameCreateContext {
		return this.getRuleContext(0, DatabaseNameCreateContext);
	}
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCreateDb) {
			listener.enterShowCreateDb(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCreateDb) {
			listener.exitShowCreateDb(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateDb) {
			return visitor.visitShowCreateDb(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateFullIdObjectContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EVENT, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCEDURE, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRIGGER, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCreateFullIdObject) {
			listener.enterShowCreateFullIdObject(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCreateFullIdObject) {
			listener.exitShowCreateFullIdObject(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateFullIdObject) {
			return visitor.visitShowCreateFullIdObject(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateFunctionContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(MySqlParser.KW_FUNCTION, 0); }
	public functionNameCreate(): FunctionNameCreateContext {
		return this.getRuleContext(0, FunctionNameCreateContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCreateFunction) {
			listener.enterShowCreateFunction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCreateFunction) {
			listener.exitShowCreateFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateFunction) {
			return visitor.visitShowCreateFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateViewContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(MySqlParser.KW_VIEW, 0); }
	public viewNameCreate(): ViewNameCreateContext {
		return this.getRuleContext(0, ViewNameCreateContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCreateView) {
			listener.enterShowCreateView(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCreateView) {
			listener.exitShowCreateView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateView) {
			return visitor.visitShowCreateView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateTableContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCreateTable) {
			listener.enterShowCreateTable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCreateTable) {
			listener.exitShowCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateTable) {
			return visitor.visitShowCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateUserContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_CREATE(): TerminalNode { return this.getToken(MySqlParser.KW_CREATE, 0); }
	public KW_USER(): TerminalNode { return this.getToken(MySqlParser.KW_USER, 0); }
	public userName(): UserNameContext {
		return this.getRuleContext(0, UserNameContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCreateUser) {
			listener.enterShowCreateUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCreateUser) {
			listener.exitShowCreateUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateUser) {
			return visitor.visitShowCreateUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowEngineContext extends ShowStatementContext {
	public _engineOption!: Token;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_ENGINE(): TerminalNode { return this.getToken(MySqlParser.KW_ENGINE, 0); }
	public engineName(): EngineNameContext {
		return this.getRuleContext(0, EngineNameContext);
	}
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATUS, 0); }
	public KW_MUTEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MUTEX, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowEngine) {
			listener.enterShowEngine(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowEngine) {
			listener.exitShowEngine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowEngine) {
			return visitor.visitShowEngine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowGlobalInfoContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public showGlobalInfoClause(): ShowGlobalInfoClauseContext {
		return this.getRuleContext(0, ShowGlobalInfoClauseContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowGlobalInfo) {
			listener.enterShowGlobalInfo(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowGlobalInfo) {
			listener.exitShowGlobalInfo(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowGlobalInfo) {
			return visitor.visitShowGlobalInfo(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowErrorsContext extends ShowStatementContext {
	public _errorFormat!: Token;
	public _offset!: DecimalLiteralContext;
	public _rowCount!: DecimalLiteralContext;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_ERRORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ERRORS, 0); }
	public KW_WARNINGS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WARNINGS, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COMMA, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowErrors) {
			listener.enterShowErrors(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowErrors) {
			listener.exitShowErrors(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowErrors) {
			return visitor.visitShowErrors(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCountErrorsContext extends ShowStatementContext {
	public _errorFormat!: Token;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_COUNT(): TerminalNode { return this.getToken(MySqlParser.KW_COUNT, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public STAR(): TerminalNode { return this.getToken(MySqlParser.STAR, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_ERRORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ERRORS, 0); }
	public KW_WARNINGS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WARNINGS, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCountErrors) {
			listener.enterShowCountErrors(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCountErrors) {
			listener.exitShowCountErrors(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCountErrors) {
			return visitor.visitShowCountErrors(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowSchemaFilterContext extends ShowStatementContext {
	public _schemaFormat!: Token;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public showSchemaEntity(): ShowSchemaEntityContext {
		return this.getRuleContext(0, ShowSchemaEntityContext);
	}
	public databaseName(): DatabaseNameContext | undefined {
		return this.tryGetRuleContext(0, DatabaseNameContext);
	}
	public showFilter(): ShowFilterContext | undefined {
		return this.tryGetRuleContext(0, ShowFilterContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IN, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowSchemaFilter) {
			listener.enterShowSchemaFilter(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowSchemaFilter) {
			listener.exitShowSchemaFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowSchemaFilter) {
			return visitor.visitShowSchemaFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowPercedureCodeContext extends ShowStatementContext {
	public _proc_name!: FullIdContext;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_PROCEDURE(): TerminalNode { return this.getToken(MySqlParser.KW_PROCEDURE, 0); }
	public KW_CODE(): TerminalNode { return this.getToken(MySqlParser.KW_CODE, 0); }
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowPercedureCode) {
			listener.enterShowPercedureCode(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowPercedureCode) {
			listener.exitShowPercedureCode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowPercedureCode) {
			return visitor.visitShowPercedureCode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowFunctionCodeContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(MySqlParser.KW_FUNCTION, 0); }
	public KW_CODE(): TerminalNode { return this.getToken(MySqlParser.KW_CODE, 0); }
	public functionName(): FunctionNameContext {
		return this.getRuleContext(0, FunctionNameContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowFunctionCode) {
			listener.enterShowFunctionCode(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowFunctionCode) {
			listener.exitShowFunctionCode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowFunctionCode) {
			return visitor.visitShowFunctionCode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowGrantsContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_GRANTS(): TerminalNode { return this.getToken(MySqlParser.KW_GRANTS, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public userOrRoleName(): UserOrRoleNameContext | undefined {
		return this.tryGetRuleContext(0, UserOrRoleNameContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public userOrRoleNames(): UserOrRoleNamesContext | undefined {
		return this.tryGetRuleContext(0, UserOrRoleNamesContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowGrants) {
			listener.enterShowGrants(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowGrants) {
			listener.exitShowGrants(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowGrants) {
			return visitor.visitShowGrants(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowIndexesContext extends ShowStatementContext {
	public _indexFormat!: Token;
	public _tableFormat!: Token;
	public _schemaFormat!: Token;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_INDEXES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEXES, 0); }
	public KW_KEYS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEYS, 0); }
	public KW_FROM(): TerminalNode[];
	public KW_FROM(i: number): TerminalNode;
	public KW_FROM(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_FROM);
		} else {
			return this.getToken(MySqlParser.KW_FROM, i);
		}
	}
	public KW_IN(): TerminalNode[];
	public KW_IN(i: number): TerminalNode;
	public KW_IN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_IN);
		} else {
			return this.getToken(MySqlParser.KW_IN, i);
		}
	}
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public databaseName(): DatabaseNameContext | undefined {
		return this.tryGetRuleContext(0, DatabaseNameContext);
	}
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowIndexes) {
			listener.enterShowIndexes(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowIndexes) {
			listener.exitShowIndexes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowIndexes) {
			return visitor.visitShowIndexes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowOpenTablesContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_OPEN(): TerminalNode { return this.getToken(MySqlParser.KW_OPEN, 0); }
	public KW_TABLES(): TerminalNode { return this.getToken(MySqlParser.KW_TABLES, 0); }
	public databaseName(): DatabaseNameContext | undefined {
		return this.tryGetRuleContext(0, DatabaseNameContext);
	}
	public showFilter(): ShowFilterContext | undefined {
		return this.tryGetRuleContext(0, ShowFilterContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FROM, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IN, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowOpenTables) {
			listener.enterShowOpenTables(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowOpenTables) {
			listener.exitShowOpenTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowOpenTables) {
			return visitor.visitShowOpenTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowProfileContext extends ShowStatementContext {
	public _queryCount!: DecimalLiteralContext;
	public _rowCount!: DecimalLiteralContext;
	public _offset!: DecimalLiteralContext;
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_PROFILE(): TerminalNode { return this.getToken(MySqlParser.KW_PROFILE, 0); }
	public showProfileType(): ShowProfileTypeContext[];
	public showProfileType(i: number): ShowProfileTypeContext;
	public showProfileType(i?: number): ShowProfileTypeContext | ShowProfileTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ShowProfileTypeContext);
		} else {
			return this.getRuleContext(i, ShowProfileTypeContext);
		}
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUERY, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIMIT, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFFSET, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowProfile) {
			listener.enterShowProfile(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowProfile) {
			listener.exitShowProfile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowProfile) {
			return visitor.visitShowProfile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowSlaveStatusContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_STATUS(): TerminalNode { return this.getToken(MySqlParser.KW_STATUS, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICA, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowSlaveStatus) {
			listener.enterShowSlaveStatus(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowSlaveStatus) {
			listener.exitShowSlaveStatus(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowSlaveStatus) {
			return visitor.visitShowSlaveStatus(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowReplicasContext extends ShowStatementContext {
	public KW_SHOW(): TerminalNode { return this.getToken(MySqlParser.KW_SHOW, 0); }
	public KW_REPLICAS(): TerminalNode { return this.getToken(MySqlParser.KW_REPLICAS, 0); }
	constructor(ctx: ShowStatementContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowReplicas) {
			listener.enterShowReplicas(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowReplicas) {
			listener.exitShowReplicas(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowReplicas) {
			return visitor.visitShowReplicas(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariableClauseContext extends ParserRuleContext {
	public _target!: UidContext;
	public LOCAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LOCAL_ID, 0); }
	public GLOBAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.GLOBAL_ID, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GLOBAL, 0); }
	public KW_PERSIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERSIST, 0); }
	public KW_PERSIST_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERSIST_ONLY, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public AT_SIGN(): TerminalNode[];
	public AT_SIGN(i: number): TerminalNode;
	public AT_SIGN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.AT_SIGN);
		} else {
			return this.getToken(MySqlParser.AT_SIGN, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_variableClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterVariableClause) {
			listener.enterVariableClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitVariableClause) {
			listener.exitVariableClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitVariableClause) {
			return visitor.visitVariableClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowCommonEntityContext extends ParserRuleContext {
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_CHARSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARSET, 0); }
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATION, 0); }
	public KW_DATABASES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASES, 0); }
	public KW_SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMAS, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FUNCTION, 0); }
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATUS, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCEDURE, 0); }
	public KW_VARIABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARIABLES, 0); }
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GLOBAL, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_showCommonEntity; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowCommonEntity) {
			listener.enterShowCommonEntity(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowCommonEntity) {
			listener.exitShowCommonEntity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowCommonEntity) {
			return visitor.visitShowCommonEntity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowFilterContext extends ParserRuleContext {
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIKE, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WHERE, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_showFilter; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowFilter) {
			listener.enterShowFilter(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowFilter) {
			listener.exitShowFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowFilter) {
			return visitor.visitShowFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowGlobalInfoClauseContext extends ParserRuleContext {
	public KW_ENGINES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINES, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STORAGE, 0); }
	public KW_MASTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER, 0); }
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATUS, 0); }
	public KW_PLUGINS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PLUGINS, 0); }
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGES, 0); }
	public KW_PROCESSLIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCESSLIST, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULL, 0); }
	public KW_PROFILES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROFILES, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public KW_HOSTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOSTS, 0); }
	public KW_AUTHORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTHORS, 0); }
	public KW_CONTRIBUTORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTRIBUTORS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_showGlobalInfoClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowGlobalInfoClause) {
			listener.enterShowGlobalInfoClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowGlobalInfoClause) {
			listener.exitShowGlobalInfoClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowGlobalInfoClause) {
			return visitor.visitShowGlobalInfoClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowSchemaEntityContext extends ParserRuleContext {
	public KW_EVENTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EVENTS, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATUS, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULL, 0); }
	public KW_TRIGGERS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRIGGERS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_showSchemaEntity; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowSchemaEntity) {
			listener.enterShowSchemaEntity(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowSchemaEntity) {
			listener.exitShowSchemaEntity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowSchemaEntity) {
			return visitor.visitShowSchemaEntity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowProfileTypeContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_BLOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BLOCK, 0); }
	public KW_IO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IO, 0); }
	public KW_CONTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTEXT, 0); }
	public KW_SWITCHES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SWITCHES, 0); }
	public KW_CPU(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CPU, 0); }
	public KW_IPC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IPC, 0); }
	public KW_MEMORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEMORY, 0); }
	public KW_PAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PAGE, 0); }
	public KW_FAULTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FAULTS, 0); }
	public KW_SOURCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE, 0); }
	public KW_SWAPS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SWAPS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_showProfileType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShowProfileType) {
			listener.enterShowProfileType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShowProfileType) {
			listener.exitShowProfileType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShowProfileType) {
			return visitor.visitShowProfileType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BinlogStatementContext extends ParserRuleContext {
	public KW_BINLOG(): TerminalNode { return this.getToken(MySqlParser.KW_BINLOG, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_binlogStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBinlogStatement) {
			listener.enterBinlogStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBinlogStatement) {
			listener.exitBinlogStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBinlogStatement) {
			return visitor.visitBinlogStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CacheIndexStatementContext extends ParserRuleContext {
	public KW_CACHE(): TerminalNode { return this.getToken(MySqlParser.KW_CACHE, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public KW_IN(): TerminalNode { return this.getToken(MySqlParser.KW_IN, 0); }
	public databaseName(): DatabaseNameContext {
		return this.getRuleContext(0, DatabaseNameContext);
	}
	public tableIndex(): TableIndexContext[];
	public tableIndex(i: number): TableIndexContext;
	public tableIndex(i?: number): TableIndexContext | TableIndexContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableIndexContext);
		} else {
			return this.getRuleContext(i, TableIndexContext);
		}
	}
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_cacheIndexStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCacheIndexStatement) {
			listener.enterCacheIndexStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCacheIndexStatement) {
			listener.exitCacheIndexStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCacheIndexStatement) {
			return visitor.visitCacheIndexStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FlushStatementContext extends ParserRuleContext {
	public KW_FLUSH(): TerminalNode { return this.getToken(MySqlParser.KW_FLUSH, 0); }
	public flushOption(): FlushOptionContext[];
	public flushOption(i: number): FlushOptionContext;
	public flushOption(i?: number): FlushOptionContext | FlushOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FlushOptionContext);
		} else {
			return this.getRuleContext(i, FlushOptionContext);
		}
	}
	public tableActionOption(): TableActionOptionContext | undefined {
		return this.tryGetRuleContext(0, TableActionOptionContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_flushStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFlushStatement) {
			listener.enterFlushStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFlushStatement) {
			listener.exitFlushStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFlushStatement) {
			return visitor.visitFlushStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KillStatementContext extends ParserRuleContext {
	public _connectionFormat!: Token;
	public KW_KILL(): TerminalNode { return this.getToken(MySqlParser.KW_KILL, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_CONNECTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONNECTION, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUERY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_killStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterKillStatement) {
			listener.enterKillStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitKillStatement) {
			listener.exitKillStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitKillStatement) {
			return visitor.visitKillStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadIndexIntoCacheContext extends ParserRuleContext {
	public KW_LOAD(): TerminalNode { return this.getToken(MySqlParser.KW_LOAD, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(MySqlParser.KW_INDEX, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(MySqlParser.KW_INTO, 0); }
	public KW_CACHE(): TerminalNode { return this.getToken(MySqlParser.KW_CACHE, 0); }
	public loadedTableIndexes(): LoadedTableIndexesContext[];
	public loadedTableIndexes(i: number): LoadedTableIndexesContext;
	public loadedTableIndexes(i?: number): LoadedTableIndexesContext | LoadedTableIndexesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LoadedTableIndexesContext);
		} else {
			return this.getRuleContext(i, LoadedTableIndexesContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_loadIndexIntoCache; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLoadIndexIntoCache) {
			listener.enterLoadIndexIntoCache(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLoadIndexIntoCache) {
			listener.exitLoadIndexIntoCache(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLoadIndexIntoCache) {
			return visitor.visitLoadIndexIntoCache(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetStatementContext extends ParserRuleContext {
	public KW_RESET(): TerminalNode { return this.getToken(MySqlParser.KW_RESET, 0); }
	public resetOption(): ResetOptionContext[];
	public resetOption(i: number): ResetOptionContext;
	public resetOption(i?: number): ResetOptionContext | ResetOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ResetOptionContext);
		} else {
			return this.getRuleContext(i, ResetOptionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_resetStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterResetStatement) {
			listener.enterResetStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitResetStatement) {
			listener.exitResetStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitResetStatement) {
			return visitor.visitResetStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetOptionContext extends ParserRuleContext {
	public KW_MASTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICA, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUERY, 0); }
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CACHE, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_resetOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterResetOption) {
			listener.enterResetOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitResetOption) {
			listener.exitResetOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitResetOption) {
			return visitor.visitResetOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetPersistContext extends ParserRuleContext {
	public _system_var_name!: UidContext;
	public KW_RESET(): TerminalNode { return this.getToken(MySqlParser.KW_RESET, 0); }
	public KW_PERSIST(): TerminalNode { return this.getToken(MySqlParser.KW_PERSIST, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_resetPersist; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterResetPersist) {
			listener.enterResetPersist(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitResetPersist) {
			listener.exitResetPersist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitResetPersist) {
			return visitor.visitResetPersist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetAllChannelContext extends ParserRuleContext {
	public KW_RESET(): TerminalNode { return this.getToken(MySqlParser.KW_RESET, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICA, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_resetAllChannel; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterResetAllChannel) {
			listener.enterResetAllChannel(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitResetAllChannel) {
			listener.exitResetAllChannel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitResetAllChannel) {
			return visitor.visitResetAllChannel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReStartStatementContext extends ParserRuleContext {
	public KW_RESTART(): TerminalNode { return this.getToken(MySqlParser.KW_RESTART, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_reStartStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterReStartStatement) {
			listener.enterReStartStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitReStartStatement) {
			listener.exitReStartStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitReStartStatement) {
			return visitor.visitReStartStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShutdownStatementContext extends ParserRuleContext {
	public KW_SHUTDOWN(): TerminalNode { return this.getToken(MySqlParser.KW_SHUTDOWN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_shutdownStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterShutdownStatement) {
			listener.enterShutdownStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitShutdownStatement) {
			listener.exitShutdownStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitShutdownStatement) {
			return visitor.visitShutdownStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableIndexContext extends ParserRuleContext {
	public _indexFormat!: Token;
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public indexNames(): IndexNamesContext | undefined {
		return this.tryGetRuleContext(0, IndexNamesContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableIndex; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableIndex) {
			listener.enterTableIndex(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableIndex) {
			listener.exitTableIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableIndex) {
			return visitor.visitTableIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FlushOptionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_flushOption; }
	public copyFrom(ctx: FlushOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class SimpleFlushOptionContext extends FlushOptionContext {
	public KW_DES_KEY_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DES_KEY_FILE, 0); }
	public KW_HOSTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOSTS, 0); }
	public KW_LOGS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOGS, 0); }
	public KW_OPTIMIZER_COSTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTIMIZER_COSTS, 0); }
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGES, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUERY, 0); }
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CACHE, 0); }
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATUS, 0); }
	public KW_USER_RESOURCES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER_RESOURCES, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCK, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_ENGINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE, 0); }
	public KW_ERROR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ERROR, 0); }
	public KW_GENERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GENERAL, 0); }
	public KW_RELAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY, 0); }
	public KW_SLOW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLOW, 0); }
	constructor(ctx: FlushOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleFlushOption) {
			listener.enterSimpleFlushOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleFlushOption) {
			listener.exitSimpleFlushOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleFlushOption) {
			return visitor.visitSimpleFlushOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ChannelFlushOptionContext extends FlushOptionContext {
	public KW_RELAY(): TerminalNode { return this.getToken(MySqlParser.KW_RELAY, 0); }
	public KW_LOGS(): TerminalNode { return this.getToken(MySqlParser.KW_LOGS, 0); }
	public channelOption(): ChannelOptionContext | undefined {
		return this.tryGetRuleContext(0, ChannelOptionContext);
	}
	constructor(ctx: FlushOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterChannelFlushOption) {
			listener.enterChannelFlushOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitChannelFlushOption) {
			listener.exitChannelFlushOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitChannelFlushOption) {
			return visitor.visitChannelFlushOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableFlushOptionContext extends FlushOptionContext {
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public tableNames(): TableNamesContext | undefined {
		return this.tryGetRuleContext(0, TableNamesContext);
	}
	public flushTableOption(): FlushTableOptionContext | undefined {
		return this.tryGetRuleContext(0, FlushTableOptionContext);
	}
	constructor(ctx: FlushOptionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableFlushOption) {
			listener.enterTableFlushOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableFlushOption) {
			listener.exitTableFlushOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableFlushOption) {
			return visitor.visitTableFlushOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FlushTableOptionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITH, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_READ, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCK, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	public KW_EXPORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPORT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_flushTableOption; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFlushTableOption) {
			listener.enterFlushTableOption(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFlushTableOption) {
			listener.exitFlushTableOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFlushTableOption) {
			return visitor.visitFlushTableOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadedTableIndexesContext extends ParserRuleContext {
	public _indexFormat!: Token;
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITION, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public indexNames(): IndexNamesContext | undefined {
		return this.tryGetRuleContext(0, IndexNamesContext);
	}
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE, 0); }
	public KW_LEAVES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEAVES, 0); }
	public partitionNames(): PartitionNamesContext | undefined {
		return this.tryGetRuleContext(0, PartitionNamesContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEX, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_loadedTableIndexes; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLoadedTableIndexes) {
			listener.enterLoadedTableIndexes(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLoadedTableIndexes) {
			listener.exitLoadedTableIndexes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLoadedTableIndexes) {
			return visitor.visitLoadedTableIndexes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleDescribeStatementContext extends ParserRuleContext {
	public _command!: Token;
	public _column!: ColumnNameContext;
	public _pattern!: Token;
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPLAIN, 0); }
	public KW_DESCRIBE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESCRIBE, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_simpleDescribeStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleDescribeStatement) {
			listener.enterSimpleDescribeStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleDescribeStatement) {
			listener.exitSimpleDescribeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleDescribeStatement) {
			return visitor.visitSimpleDescribeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FullDescribeStatementContext extends ParserRuleContext {
	public _command!: Token;
	public describeObjectClause(): DescribeObjectClauseContext {
		return this.getRuleContext(0, DescribeObjectClauseContext);
	}
	public KW_EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPLAIN, 0); }
	public KW_DESCRIBE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESCRIBE, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITIONS, 0); }
	public KW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FORMAT, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public KW_TRADITIONAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRADITIONAL, 0); }
	public KW_JSON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JSON, 0); }
	public KW_TREE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TREE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_fullDescribeStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFullDescribeStatement) {
			listener.enterFullDescribeStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFullDescribeStatement) {
			listener.exitFullDescribeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFullDescribeStatement) {
			return visitor.visitFullDescribeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnalyzeDescribeStatementContext extends ParserRuleContext {
	public _command!: Token;
	public KW_ANALYZE(): TerminalNode { return this.getToken(MySqlParser.KW_ANALYZE, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public KW_EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPLAIN, 0); }
	public KW_DESCRIBE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESCRIBE, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	public KW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FORMAT, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public KW_TREE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TREE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_analyzeDescribeStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAnalyzeDescribeStatement) {
			listener.enterAnalyzeDescribeStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAnalyzeDescribeStatement) {
			listener.exitAnalyzeDescribeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAnalyzeDescribeStatement) {
			return visitor.visitAnalyzeDescribeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HelpStatementContext extends ParserRuleContext {
	public KW_HELP(): TerminalNode { return this.getToken(MySqlParser.KW_HELP, 0); }
	public STRING_LITERAL(): TerminalNode { return this.getToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_helpStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHelpStatement) {
			listener.enterHelpStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHelpStatement) {
			listener.exitHelpStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHelpStatement) {
			return visitor.visitHelpStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UseStatementContext extends ParserRuleContext {
	public KW_USE(): TerminalNode { return this.getToken(MySqlParser.KW_USE, 0); }
	public databaseName(): DatabaseNameContext {
		return this.getRuleContext(0, DatabaseNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_useStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUseStatement) {
			listener.enterUseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUseStatement) {
			listener.exitUseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUseStatement) {
			return visitor.visitUseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SignalStatementContext extends ParserRuleContext {
	public KW_SIGNAL(): TerminalNode { return this.getToken(MySqlParser.KW_SIGNAL, 0); }
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public REVERSE_QUOTE_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public signalConditionInformation(): SignalConditionInformationContext[];
	public signalConditionInformation(i: number): SignalConditionInformationContext;
	public signalConditionInformation(i?: number): SignalConditionInformationContext | SignalConditionInformationContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SignalConditionInformationContext);
		} else {
			return this.getRuleContext(i, SignalConditionInformationContext);
		}
	}
	public KW_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQLSTATE, 0); }
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_signalStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSignalStatement) {
			listener.enterSignalStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSignalStatement) {
			listener.exitSignalStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSignalStatement) {
			return visitor.visitSignalStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResignalStatementContext extends ParserRuleContext {
	public KW_RESIGNAL(): TerminalNode { return this.getToken(MySqlParser.KW_RESIGNAL, 0); }
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public REVERSE_QUOTE_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public signalConditionInformation(): SignalConditionInformationContext[];
	public signalConditionInformation(i: number): SignalConditionInformationContext;
	public signalConditionInformation(i?: number): SignalConditionInformationContext | SignalConditionInformationContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SignalConditionInformationContext);
		} else {
			return this.getRuleContext(i, SignalConditionInformationContext);
		}
	}
	public KW_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQLSTATE, 0); }
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_resignalStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterResignalStatement) {
			listener.enterResignalStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitResignalStatement) {
			listener.exitResignalStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitResignalStatement) {
			return visitor.visitResignalStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SignalConditionInformationContext extends ParserRuleContext {
	public EQUAL_SYMBOL(): TerminalNode { return this.getToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public KW_CLASS_ORIGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLASS_ORIGIN, 0); }
	public KW_SUBCLASS_ORIGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBCLASS_ORIGIN, 0); }
	public KW_MESSAGE_TEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MESSAGE_TEXT, 0); }
	public KW_MYSQL_ERRNO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYSQL_ERRNO, 0); }
	public KW_CONSTRAINT_CATALOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_CATALOG, 0); }
	public KW_CONSTRAINT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_SCHEMA, 0); }
	public KW_CONSTRAINT_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_NAME, 0); }
	public KW_CATALOG_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CATALOG_NAME, 0); }
	public KW_SCHEMA_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA_NAME, 0); }
	public KW_TABLE_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE_NAME, 0); }
	public KW_COLUMN_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN_NAME, 0); }
	public KW_CURSOR_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURSOR_NAME, 0); }
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public DECIMAL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.DECIMAL_LITERAL, 0); }
	public mysqlVariable(): MysqlVariableContext | undefined {
		return this.tryGetRuleContext(0, MysqlVariableContext);
	}
	public simpleId(): SimpleIdContext | undefined {
		return this.tryGetRuleContext(0, SimpleIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_signalConditionInformation; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSignalConditionInformation) {
			listener.enterSignalConditionInformation(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSignalConditionInformation) {
			listener.exitSignalConditionInformation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSignalConditionInformation) {
			return visitor.visitSignalConditionInformation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithStatementContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(MySqlParser.KW_WITH, 0); }
	public commonTableExpressions(): CommonTableExpressionsContext[];
	public commonTableExpressions(i: number): CommonTableExpressionsContext;
	public commonTableExpressions(i?: number): CommonTableExpressionsContext | CommonTableExpressionsContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CommonTableExpressionsContext);
		} else {
			return this.getRuleContext(i, CommonTableExpressionsContext);
		}
	}
	public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RECURSIVE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_withStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWithStatement) {
			listener.enterWithStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWithStatement) {
			listener.exitWithStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWithStatement) {
			return visitor.visitWithStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableStatementContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode { return this.getToken(MySqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableStatement) {
			listener.enterTableStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableStatement) {
			listener.exitTableStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableStatement) {
			return visitor.visitTableStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DiagnosticsStatementContext extends ParserRuleContext {
	public KW_GET(): TerminalNode { return this.getToken(MySqlParser.KW_GET, 0); }
	public KW_DIAGNOSTICS(): TerminalNode { return this.getToken(MySqlParser.KW_DIAGNOSTICS, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT, 0); }
	public KW_STACKED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STACKED, 0); }
	public variableClause(): VariableClauseContext[];
	public variableClause(i: number): VariableClauseContext;
	public variableClause(i?: number): VariableClauseContext | VariableClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(VariableClauseContext);
		} else {
			return this.getRuleContext(i, VariableClauseContext);
		}
	}
	public EQUAL_SYMBOL(): TerminalNode[];
	public EQUAL_SYMBOL(i: number): TerminalNode;
	public EQUAL_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.EQUAL_SYMBOL);
		} else {
			return this.getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
	}
	public KW_CONDITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONDITION, 0); }
	public diagnosticsConditionInformationName(): DiagnosticsConditionInformationNameContext[];
	public diagnosticsConditionInformationName(i: number): DiagnosticsConditionInformationNameContext;
	public diagnosticsConditionInformationName(i?: number): DiagnosticsConditionInformationNameContext | DiagnosticsConditionInformationNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DiagnosticsConditionInformationNameContext);
		} else {
			return this.getRuleContext(i, DiagnosticsConditionInformationNameContext);
		}
	}
	public KW_NUMBER(): TerminalNode[];
	public KW_NUMBER(i: number): TerminalNode;
	public KW_NUMBER(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_NUMBER);
		} else {
			return this.getToken(MySqlParser.KW_NUMBER, i);
		}
	}
	public KW_ROW_COUNT(): TerminalNode[];
	public KW_ROW_COUNT(i: number): TerminalNode;
	public KW_ROW_COUNT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ROW_COUNT);
		} else {
			return this.getToken(MySqlParser.KW_ROW_COUNT, i);
		}
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_diagnosticsStatement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDiagnosticsStatement) {
			listener.enterDiagnosticsStatement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDiagnosticsStatement) {
			listener.exitDiagnosticsStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDiagnosticsStatement) {
			return visitor.visitDiagnosticsStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DiagnosticsConditionInformationNameContext extends ParserRuleContext {
	public KW_CLASS_ORIGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLASS_ORIGIN, 0); }
	public KW_SUBCLASS_ORIGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBCLASS_ORIGIN, 0); }
	public KW_RETURNED_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RETURNED_SQLSTATE, 0); }
	public KW_MESSAGE_TEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MESSAGE_TEXT, 0); }
	public KW_MYSQL_ERRNO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYSQL_ERRNO, 0); }
	public KW_CONSTRAINT_CATALOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_CATALOG, 0); }
	public KW_CONSTRAINT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_SCHEMA, 0); }
	public KW_CONSTRAINT_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_NAME, 0); }
	public KW_CATALOG_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CATALOG_NAME, 0); }
	public KW_SCHEMA_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA_NAME, 0); }
	public KW_TABLE_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE_NAME, 0); }
	public KW_COLUMN_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN_NAME, 0); }
	public KW_CURSOR_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURSOR_NAME, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_diagnosticsConditionInformationName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDiagnosticsConditionInformationName) {
			listener.enterDiagnosticsConditionInformationName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDiagnosticsConditionInformationName) {
			listener.exitDiagnosticsConditionInformationName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDiagnosticsConditionInformationName) {
			return visitor.visitDiagnosticsConditionInformationName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DescribeObjectClauseContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_describeObjectClause; }
	public copyFrom(ctx: DescribeObjectClauseContext): void {
		super.copyFrom(ctx);
	}
}
export class DescribeStatementsContext extends DescribeObjectClauseContext {
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public deleteStatement(): DeleteStatementContext | undefined {
		return this.tryGetRuleContext(0, DeleteStatementContext);
	}
	public insertStatement(): InsertStatementContext | undefined {
		return this.tryGetRuleContext(0, InsertStatementContext);
	}
	public replaceStatement(): ReplaceStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplaceStatementContext);
	}
	public updateStatement(): UpdateStatementContext | undefined {
		return this.tryGetRuleContext(0, UpdateStatementContext);
	}
	constructor(ctx: DescribeObjectClauseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDescribeStatements) {
			listener.enterDescribeStatements(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDescribeStatements) {
			listener.exitDescribeStatements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDescribeStatements) {
			return visitor.visitDescribeStatements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DescribeConnectionContext extends DescribeObjectClauseContext {
	public _connection_id!: UidContext;
	public KW_FOR(): TerminalNode { return this.getToken(MySqlParser.KW_FOR, 0); }
	public KW_CONNECTION(): TerminalNode { return this.getToken(MySqlParser.KW_CONNECTION, 0); }
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(ctx: DescribeObjectClauseContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDescribeConnection) {
			listener.enterDescribeConnection(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDescribeConnection) {
			listener.exitDescribeConnection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDescribeConnection) {
			return visitor.visitDescribeConnection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DatabaseNameCreateContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_databaseNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDatabaseNameCreate) {
			listener.enterDatabaseNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDatabaseNameCreate) {
			listener.exitDatabaseNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDatabaseNameCreate) {
			return visitor.visitDatabaseNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DatabaseNameContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_databaseName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDatabaseName) {
			listener.enterDatabaseName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDatabaseName) {
			listener.exitDatabaseName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDatabaseName) {
			return visitor.visitDatabaseName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameCreateContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_functionNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFunctionNameCreate) {
			listener.enterFunctionNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFunctionNameCreate) {
			listener.exitFunctionNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionNameCreate) {
			return visitor.visitFunctionNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_functionName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFunctionName) {
			listener.enterFunctionName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFunctionName) {
			listener.exitFunctionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionName) {
			return visitor.visitFunctionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewNameCreateContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_viewNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterViewNameCreate) {
			listener.enterViewNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitViewNameCreate) {
			listener.exitViewNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitViewNameCreate) {
			return visitor.visitViewNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewNameContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_viewName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterViewName) {
			listener.enterViewName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitViewName) {
			listener.exitViewName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitViewName) {
			return visitor.visitViewName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexNameCreateContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexNameCreate) {
			listener.enterIndexNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexNameCreate) {
			listener.exitIndexNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexNameCreate) {
			return visitor.visitIndexNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexNamesContext extends ParserRuleContext {
	public indexName(): IndexNameContext[];
	public indexName(i: number): IndexNameContext;
	public indexName(i?: number): IndexNameContext | IndexNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexNameContext);
		} else {
			return this.getRuleContext(i, IndexNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexNames) {
			listener.enterIndexNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexNames) {
			listener.exitIndexNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexNames) {
			return visitor.visitIndexNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexNameContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexName) {
			listener.enterIndexName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexName) {
			listener.exitIndexName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexName) {
			return visitor.visitIndexName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupNameCreateContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_groupNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGroupNameCreate) {
			listener.enterGroupNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGroupNameCreate) {
			listener.exitGroupNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGroupNameCreate) {
			return visitor.visitGroupNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupNameContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_groupName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGroupName) {
			listener.enterGroupName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGroupName) {
			listener.exitGroupName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGroupName) {
			return visitor.visitGroupName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableNameCreateContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableNameCreate) {
			listener.enterTableNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableNameCreate) {
			listener.exitTableNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableNameCreate) {
			return visitor.visitTableNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableNamesContext extends ParserRuleContext {
	public tableName(): TableNameContext[];
	public tableName(i: number): TableNameContext;
	public tableName(i?: number): TableNameContext | TableNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableNameContext);
		} else {
			return this.getRuleContext(i, TableNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableNames) {
			listener.enterTableNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableNames) {
			listener.exitTableNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableNames) {
			return visitor.visitTableNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableNameContext extends ParserRuleContext {
	public fullId(): FullIdContext {
		return this.getRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tableName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTableName) {
			listener.enterTableName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTableName) {
			listener.exitTableName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTableName) {
			return visitor.visitTableName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserOrRoleNamesContext extends ParserRuleContext {
	public userOrRoleName(): UserOrRoleNameContext[];
	public userOrRoleName(i: number): UserOrRoleNameContext;
	public userOrRoleName(i?: number): UserOrRoleNameContext | UserOrRoleNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UserOrRoleNameContext);
		} else {
			return this.getRuleContext(i, UserOrRoleNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userOrRoleNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserOrRoleNames) {
			listener.enterUserOrRoleNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserOrRoleNames) {
			listener.exitUserOrRoleNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserOrRoleNames) {
			return visitor.visitUserOrRoleNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserOrRoleNameContext extends ParserRuleContext {
	public userName(): UserNameContext | undefined {
		return this.tryGetRuleContext(0, UserNameContext);
	}
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userOrRoleName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserOrRoleName) {
			listener.enterUserOrRoleName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserOrRoleName) {
			listener.exitUserOrRoleName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserOrRoleName) {
			return visitor.visitUserOrRoleName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameCreateContext extends ParserRuleContext {
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public dottedId(): DottedIdContext[];
	public dottedId(i: number): DottedIdContext;
	public dottedId(i?: number): DottedIdContext | DottedIdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DottedIdContext);
		} else {
			return this.getRuleContext(i, DottedIdContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_columnNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterColumnNameCreate) {
			listener.enterColumnNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitColumnNameCreate) {
			listener.exitColumnNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameCreate) {
			return visitor.visitColumnNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNamesContext extends ParserRuleContext {
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_columnNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterColumnNames) {
			listener.enterColumnNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitColumnNames) {
			listener.exitColumnNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNames) {
			return visitor.visitColumnNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameContext extends ParserRuleContext {
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public dottedId(): DottedIdContext[];
	public dottedId(i: number): DottedIdContext;
	public dottedId(i?: number): DottedIdContext | DottedIdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DottedIdContext);
		} else {
			return this.getRuleContext(i, DottedIdContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_columnName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterColumnName) {
			listener.enterColumnName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitColumnName) {
			listener.exitColumnName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitColumnName) {
			return visitor.visitColumnName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablespaceNameCreateContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tablespaceNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTablespaceNameCreate) {
			listener.enterTablespaceNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTablespaceNameCreate) {
			listener.exitTablespaceNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTablespaceNameCreate) {
			return visitor.visitTablespaceNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablespaceNameContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_tablespaceName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTablespaceName) {
			listener.enterTablespaceName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTablespaceName) {
			listener.exitTablespaceName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTablespaceName) {
			return visitor.visitTablespaceName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionNameCreateContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionNameCreate; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionNameCreate) {
			listener.enterPartitionNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionNameCreate) {
			listener.exitPartitionNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionNameCreate) {
			return visitor.visitPartitionNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionNamesContext extends ParserRuleContext {
	public partitionName(): PartitionNameContext[];
	public partitionName(i: number): PartitionNameContext;
	public partitionName(i?: number): PartitionNameContext | PartitionNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionNameContext);
		} else {
			return this.getRuleContext(i, PartitionNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionNames) {
			listener.enterPartitionNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionNames) {
			listener.exitPartitionNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionNames) {
			return visitor.visitPartitionNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionNameContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionName) {
			listener.enterPartitionName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionName) {
			listener.exitPartitionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionName) {
			return visitor.visitPartitionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexColumnNameContext extends ParserRuleContext {
	public _sortType!: Token;
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexColumnName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexColumnName) {
			listener.enterIndexColumnName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexColumnName) {
			listener.exitIndexColumnName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexColumnName) {
			return visitor.visitIndexColumnName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserHostPortContext extends ParserRuleContext {
	public userAtHost(): UserAtHostContext {
		return this.getRuleContext(0, UserAtHostContext);
	}
	public COLON_SYMB(): TerminalNode { return this.getToken(MySqlParser.COLON_SYMB, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userHostPort; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserHostPort) {
			listener.enterUserHostPort(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserHostPort) {
			listener.exitUserHostPort(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserHostPort) {
			return visitor.visitUserHostPort(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserAtHostContext extends ParserRuleContext {
	public simpleUserName(): SimpleUserNameContext {
		return this.getRuleContext(0, SimpleUserNameContext);
	}
	public HOST_IP_ADDRESS(): TerminalNode { return this.getToken(MySqlParser.HOST_IP_ADDRESS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userAtHost; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserAtHost) {
			listener.enterUserAtHost(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserAtHost) {
			listener.exitUserAtHost(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserAtHost) {
			return visitor.visitUserAtHost(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleUserNameContext extends ParserRuleContext {
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ADMIN, 0); }
	public keywordsCanBeId(): KeywordsCanBeIdContext | undefined {
		return this.tryGetRuleContext(0, KeywordsCanBeIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_simpleUserName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleUserName) {
			listener.enterSimpleUserName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleUserName) {
			listener.exitSimpleUserName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleUserName) {
			return visitor.visitSimpleUserName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HostNameContext extends ParserRuleContext {
	public LOCAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LOCAL_ID, 0); }
	public HOST_IP_ADDRESS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.HOST_IP_ADDRESS, 0); }
	public AT_SIGN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.AT_SIGN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_hostName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHostName) {
			listener.enterHostName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHostName) {
			listener.exitHostName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHostName) {
			return visitor.visitHostName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserNameContext extends ParserRuleContext {
	public simpleUserName(): SimpleUserNameContext | undefined {
		return this.tryGetRuleContext(0, SimpleUserNameContext);
	}
	public hostName(): HostNameContext | undefined {
		return this.tryGetRuleContext(0, HostNameContext);
	}
	public currentUserExpression(): CurrentUserExpressionContext | undefined {
		return this.tryGetRuleContext(0, CurrentUserExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserName) {
			listener.enterUserName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserName) {
			listener.exitUserName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserName) {
			return visitor.visitUserName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MysqlVariableContext extends ParserRuleContext {
	public LOCAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LOCAL_ID, 0); }
	public GLOBAL_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.GLOBAL_ID, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_mysqlVariable; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMysqlVariable) {
			listener.enterMysqlVariable(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMysqlVariable) {
			listener.exitMysqlVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMysqlVariable) {
			return visitor.visitMysqlVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharsetNameContext extends ParserRuleContext {
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public charsetNameBase(): CharsetNameBaseContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameBaseContext);
	}
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public CHARSET_REVERSE_QOUTE_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_charsetName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCharsetName) {
			listener.enterCharsetName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCharsetName) {
			listener.exitCharsetName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCharsetName) {
			return visitor.visitCharsetName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CollationNameContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_collationName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCollationName) {
			listener.enterCollationName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCollationName) {
			listener.exitCollationName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCollationName) {
			return visitor.visitCollationName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EngineNameContext extends ParserRuleContext {
	public engineNameBase(): EngineNameBaseContext | undefined {
		return this.tryGetRuleContext(0, EngineNameBaseContext);
	}
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_engineName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterEngineName) {
			listener.enterEngineName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitEngineName) {
			listener.exitEngineName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitEngineName) {
			return visitor.visitEngineName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EngineNameBaseContext extends ParserRuleContext {
	public KW_ARCHIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ARCHIVE, 0); }
	public KW_BLACKHOLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BLACKHOLE, 0); }
	public KW_CONNECT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONNECT, 0); }
	public KW_CSV(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CSV, 0); }
	public KW_FEDERATED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FEDERATED, 0); }
	public KW_INNODB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INNODB, 0); }
	public KW_MEMORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEMORY, 0); }
	public KW_MRG_MYISAM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MRG_MYISAM, 0); }
	public KW_MYISAM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYISAM, 0); }
	public KW_NDB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NDB, 0); }
	public KW_NDBCLUSTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NDBCLUSTER, 0); }
	public KW_PERFORMANCE_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERFORMANCE_SCHEMA, 0); }
	public KW_TOKUDB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TOKUDB, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_engineNameBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterEngineNameBase) {
			listener.enterEngineNameBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitEngineNameBase) {
			listener.exitEngineNameBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitEngineNameBase) {
			return visitor.visitEngineNameBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UuidSetContext extends ParserRuleContext {
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public MINUS(): TerminalNode[];
	public MINUS(i: number): TerminalNode;
	public MINUS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.MINUS);
		} else {
			return this.getToken(MySqlParser.MINUS, i);
		}
	}
	public COLON_SYMB(): TerminalNode[];
	public COLON_SYMB(i: number): TerminalNode;
	public COLON_SYMB(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COLON_SYMB);
		} else {
			return this.getToken(MySqlParser.COLON_SYMB, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_uuidSet; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUuidSet) {
			listener.enterUuidSet(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUuidSet) {
			listener.exitUuidSet(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUuidSet) {
			return visitor.visitUuidSet(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XidContext extends ParserRuleContext {
	public _globalTableUid!: XuidStringIdContext;
	public _qualifier!: XuidStringIdContext;
	public _idFormat!: DecimalLiteralContext;
	public xuidStringId(): XuidStringIdContext[];
	public xuidStringId(i: number): XuidStringIdContext;
	public xuidStringId(i?: number): XuidStringIdContext | XuidStringIdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(XuidStringIdContext);
		} else {
			return this.getRuleContext(i, XuidStringIdContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xid; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXid) {
			listener.enterXid(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXid) {
			listener.exitXid(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXid) {
			return visitor.visitXid(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XuidStringIdContext extends ParserRuleContext {
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public BIT_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.BIT_STRING, 0); }
	public HEXADECIMAL_LITERAL(): TerminalNode[];
	public HEXADECIMAL_LITERAL(i: number): TerminalNode;
	public HEXADECIMAL_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.HEXADECIMAL_LITERAL);
		} else {
			return this.getToken(MySqlParser.HEXADECIMAL_LITERAL, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_xuidStringId; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterXuidStringId) {
			listener.enterXuidStringId(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitXuidStringId) {
			listener.exitXuidStringId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitXuidStringId) {
			return visitor.visitXuidStringId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FullIdContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	public dottedId(): DottedIdContext | undefined {
		return this.tryGetRuleContext(0, DottedIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_fullId; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFullId) {
			listener.enterFullId(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFullId) {
			listener.exitFullId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFullId) {
			return visitor.visitFullId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UidListContext extends ParserRuleContext {
	public uid(): UidContext[];
	public uid(i: number): UidContext;
	public uid(i?: number): UidContext | UidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UidContext);
		} else {
			return this.getRuleContext(i, UidContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_uidList; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUidList) {
			listener.enterUidList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUidList) {
			listener.exitUidList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUidList) {
			return visitor.visitUidList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UidContext extends ParserRuleContext {
	public simpleId(): SimpleIdContext | undefined {
		return this.tryGetRuleContext(0, SimpleIdContext);
	}
	public CHARSET_REVERSE_QOUTE_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_uid; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUid) {
			listener.enterUid(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUid) {
			listener.exitUid(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUid) {
			return visitor.visitUid(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleIdContext extends ParserRuleContext {
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public charsetNameBase(): CharsetNameBaseContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameBaseContext);
	}
	public transactionLevelBase(): TransactionLevelBaseContext | undefined {
		return this.tryGetRuleContext(0, TransactionLevelBaseContext);
	}
	public engineNameBase(): EngineNameBaseContext | undefined {
		return this.tryGetRuleContext(0, EngineNameBaseContext);
	}
	public privilegesBase(): PrivilegesBaseContext | undefined {
		return this.tryGetRuleContext(0, PrivilegesBaseContext);
	}
	public intervalTypeBase(): IntervalTypeBaseContext | undefined {
		return this.tryGetRuleContext(0, IntervalTypeBaseContext);
	}
	public dataTypeBase(): DataTypeBaseContext | undefined {
		return this.tryGetRuleContext(0, DataTypeBaseContext);
	}
	public keywordsCanBeId(): KeywordsCanBeIdContext | undefined {
		return this.tryGetRuleContext(0, KeywordsCanBeIdContext);
	}
	public scalarFunctionName(): ScalarFunctionNameContext | undefined {
		return this.tryGetRuleContext(0, ScalarFunctionNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_simpleId; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleId) {
			listener.enterSimpleId(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleId) {
			listener.exitSimpleId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleId) {
			return visitor.visitSimpleId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DottedIdContext extends ParserRuleContext {
	public DOT(): TerminalNode { return this.getToken(MySqlParser.DOT, 0); }
	public ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ID, 0); }
	public uid(): UidContext | undefined {
		return this.tryGetRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dottedId; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDottedId) {
			listener.enterDottedId(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDottedId) {
			listener.exitDottedId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDottedId) {
			return visitor.visitDottedId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DecimalLiteralContext extends ParserRuleContext {
	public DECIMAL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.DECIMAL_LITERAL, 0); }
	public ZERO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ZERO_DECIMAL, 0); }
	public ONE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.ONE_DECIMAL, 0); }
	public TWO_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.TWO_DECIMAL, 0); }
	public THREE_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.THREE_DECIMAL, 0); }
	public REAL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.REAL_LITERAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_decimalLiteral; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDecimalLiteral) {
			listener.enterDecimalLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDecimalLiteral) {
			listener.exitDecimalLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDecimalLiteral) {
			return visitor.visitDecimalLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FileSizeLiteralContext extends ParserRuleContext {
	public FILESIZE_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.FILESIZE_LITERAL, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_fileSizeLiteral; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFileSizeLiteral) {
			listener.enterFileSizeLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFileSizeLiteral) {
			listener.exitFileSizeLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFileSizeLiteral) {
			return visitor.visitFileSizeLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringLiteralContext extends ParserRuleContext {
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public START_NATIONAL_STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.START_NATIONAL_STRING_LITERAL, 0); }
	public STRING_CHARSET_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_CHARSET_NAME, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_stringLiteral; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStringLiteral) {
			listener.enterStringLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStringLiteral) {
			listener.exitStringLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStringLiteral) {
			return visitor.visitStringLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BooleanLiteralContext extends ParserRuleContext {
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FALSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_booleanLiteral; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBooleanLiteral) {
			listener.enterBooleanLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBooleanLiteral) {
			listener.exitBooleanLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBooleanLiteral) {
			return visitor.visitBooleanLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HexadecimalLiteralContext extends ParserRuleContext {
	public HEXADECIMAL_LITERAL(): TerminalNode { return this.getToken(MySqlParser.HEXADECIMAL_LITERAL, 0); }
	public STRING_CHARSET_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_CHARSET_NAME, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_hexadecimalLiteral; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterHexadecimalLiteral) {
			listener.enterHexadecimalLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitHexadecimalLiteral) {
			listener.exitHexadecimalLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitHexadecimalLiteral) {
			return visitor.visitHexadecimalLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NullNotnullContext extends ParserRuleContext {
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public NULL_SPEC_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.NULL_SPEC_LITERAL, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_nullNotnull; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNullNotnull) {
			listener.enterNullNotnull(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNullNotnull) {
			listener.exitNullNotnull(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNullNotnull) {
			return visitor.visitNullNotnull(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstantContext extends ParserRuleContext {
	public _nullLiteral!: Token;
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MINUS, 0); }
	public hexadecimalLiteral(): HexadecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, HexadecimalLiteralContext);
	}
	public booleanLiteral(): BooleanLiteralContext | undefined {
		return this.tryGetRuleContext(0, BooleanLiteralContext);
	}
	public REAL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.REAL_LITERAL, 0); }
	public BIT_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.BIT_STRING, 0); }
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public NULL_SPEC_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.NULL_SPEC_LITERAL, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_constant; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterConstant) {
			listener.enterConstant(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitConstant) {
			listener.exitConstant(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitConstant) {
			return visitor.visitConstant(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataTypeContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dataType; }
	public copyFrom(ctx: DataTypeContext): void {
		super.copyFrom(ctx);
	}
}
export class StringDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAR, 0); }
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_VARCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARCHAR, 0); }
	public KW_TINYTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TINYTEXT, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEXT, 0); }
	public KW_MEDIUMTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEDIUMTEXT, 0); }
	public KW_LONGTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LONGTEXT, 0); }
	public KW_NCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NCHAR, 0); }
	public KW_NVARCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NVARCHAR, 0); }
	public KW_LONG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LONG, 0); }
	public KW_VARYING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARYING, 0); }
	public lengthOneDimension(): LengthOneDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthOneDimensionContext);
	}
	public KW_BINARY(): TerminalNode[];
	public KW_BINARY(i: number): TerminalNode;
	public KW_BINARY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_BINARY);
		} else {
			return this.getToken(MySqlParser.KW_BINARY, i);
		}
	}
	public charSet(): CharSetContext | undefined {
		return this.tryGetRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterStringDataType) {
			listener.enterStringDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitStringDataType) {
			listener.exitStringDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitStringDataType) {
			return visitor.visitStringDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NationalVaryingStringDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_NATIONAL(): TerminalNode { return this.getToken(MySqlParser.KW_NATIONAL, 0); }
	public KW_VARYING(): TerminalNode { return this.getToken(MySqlParser.KW_VARYING, 0); }
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAR, 0); }
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public lengthOneDimension(): LengthOneDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthOneDimensionContext);
	}
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNationalVaryingStringDataType) {
			listener.enterNationalVaryingStringDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNationalVaryingStringDataType) {
			listener.exitNationalVaryingStringDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNationalVaryingStringDataType) {
			return visitor.visitNationalVaryingStringDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NationalStringDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_NATIONAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NATIONAL, 0); }
	public KW_VARCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARCHAR, 0); }
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARACTER, 0); }
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAR, 0); }
	public lengthOneDimension(): LengthOneDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthOneDimensionContext);
	}
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_NCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NCHAR, 0); }
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNationalStringDataType) {
			listener.enterNationalStringDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNationalStringDataType) {
			listener.exitNationalStringDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNationalStringDataType) {
			return visitor.visitNationalStringDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DimensionDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_TINYINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TINYINT, 0); }
	public KW_SMALLINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SMALLINT, 0); }
	public KW_MEDIUMINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEDIUMINT, 0); }
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTEGER, 0); }
	public KW_BIGINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIGINT, 0); }
	public KW_MIDDLEINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MIDDLEINT, 0); }
	public KW_INT1(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT1, 0); }
	public KW_INT2(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT2, 0); }
	public KW_INT3(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT3, 0); }
	public KW_INT4(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT4, 0); }
	public KW_INT8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT8, 0); }
	public lengthOneDimension(): LengthOneDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthOneDimensionContext);
	}
	public KW_SIGNED(): TerminalNode[];
	public KW_SIGNED(i: number): TerminalNode;
	public KW_SIGNED(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_SIGNED);
		} else {
			return this.getToken(MySqlParser.KW_SIGNED, i);
		}
	}
	public KW_UNSIGNED(): TerminalNode[];
	public KW_UNSIGNED(i: number): TerminalNode;
	public KW_UNSIGNED(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_UNSIGNED);
		} else {
			return this.getToken(MySqlParser.KW_UNSIGNED, i);
		}
	}
	public KW_ZEROFILL(): TerminalNode[];
	public KW_ZEROFILL(i: number): TerminalNode;
	public KW_ZEROFILL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.KW_ZEROFILL);
		} else {
			return this.getToken(MySqlParser.KW_ZEROFILL, i);
		}
	}
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REAL, 0); }
	public lengthTwoDimension(): LengthTwoDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthTwoDimensionContext);
	}
	public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DOUBLE, 0); }
	public KW_PRECISION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRECISION, 0); }
	public KW_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DECIMAL, 0); }
	public KW_DEC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEC, 0); }
	public KW_FIXED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIXED, 0); }
	public KW_NUMERIC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NUMERIC, 0); }
	public KW_FLOAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLOAT, 0); }
	public KW_FLOAT4(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLOAT4, 0); }
	public KW_FLOAT8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLOAT8, 0); }
	public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthTwoOptionalDimensionContext);
	}
	public KW_BIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIME, 0); }
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIMESTAMP, 0); }
	public KW_DATETIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATETIME, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_VARBINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARBINARY, 0); }
	public KW_BLOB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BLOB, 0); }
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_YEAR, 0); }
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDimensionDataType) {
			listener.enterDimensionDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDimensionDataType) {
			listener.exitDimensionDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDimensionDataType) {
			return visitor.visitDimensionDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE, 0); }
	public KW_TINYBLOB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TINYBLOB, 0); }
	public KW_MEDIUMBLOB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEDIUMBLOB, 0); }
	public KW_LONGBLOB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LONGBLOB, 0); }
	public KW_BOOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BOOL, 0); }
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BOOLEAN, 0); }
	public KW_SERIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SERIAL, 0); }
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleDataType) {
			listener.enterSimpleDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleDataType) {
			listener.exitSimpleDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleDataType) {
			return visitor.visitSimpleDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CollectionDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public collectionOptions(): CollectionOptionsContext {
		return this.getRuleContext(0, CollectionOptionsContext);
	}
	public KW_ENUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENUM, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public charSet(): CharSetContext | undefined {
		return this.tryGetRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCollectionDataType) {
			listener.enterCollectionDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCollectionDataType) {
			listener.exitCollectionDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCollectionDataType) {
			return visitor.visitCollectionDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SpatialDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_GEOMETRYCOLLECTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GEOMETRYCOLLECTION, 0); }
	public KW_GEOMCOLLECTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GEOMCOLLECTION, 0); }
	public KW_LINESTRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINESTRING, 0); }
	public KW_MULTILINESTRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MULTILINESTRING, 0); }
	public KW_MULTIPOINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MULTIPOINT, 0); }
	public KW_MULTIPOLYGON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MULTIPOLYGON, 0); }
	public KW_POINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_POINT, 0); }
	public KW_POLYGON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_POLYGON, 0); }
	public KW_JSON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JSON, 0); }
	public KW_GEOMETRY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GEOMETRY, 0); }
	public KW_SRID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SRID, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSpatialDataType) {
			listener.enterSpatialDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSpatialDataType) {
			listener.exitSpatialDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSpatialDataType) {
			return visitor.visitSpatialDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LongVarcharDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	public KW_LONG(): TerminalNode { return this.getToken(MySqlParser.KW_LONG, 0); }
	public KW_VARCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARCHAR, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public charSet(): CharSetContext | undefined {
		return this.tryGetRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext | undefined {
		return this.tryGetRuleContext(0, CollationNameContext);
	}
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLongVarcharDataType) {
			listener.enterLongVarcharDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLongVarcharDataType) {
			listener.exitLongVarcharDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLongVarcharDataType) {
			return visitor.visitLongVarcharDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LongVarbinaryDataTypeContext extends DataTypeContext {
	public KW_LONG(): TerminalNode { return this.getToken(MySqlParser.KW_LONG, 0); }
	public KW_VARBINARY(): TerminalNode { return this.getToken(MySqlParser.KW_VARBINARY, 0); }
	constructor(ctx: DataTypeContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLongVarbinaryDataType) {
			listener.enterLongVarbinaryDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLongVarbinaryDataType) {
			listener.exitLongVarbinaryDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLongVarbinaryDataType) {
			return visitor.visitLongVarbinaryDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CollectionOptionsContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_collectionOptions; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCollectionOptions) {
			listener.enterCollectionOptions(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCollectionOptions) {
			listener.exitCollectionOptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCollectionOptions) {
			return visitor.visitCollectionOptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConvertedDataTypeContext extends ParserRuleContext {
	public _typeName!: Token;
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAR, 0); }
	public KW_SIGNED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SIGNED, 0); }
	public KW_UNSIGNED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNSIGNED, 0); }
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ARRAY, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_NCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NCHAR, 0); }
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE, 0); }
	public KW_DATETIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATETIME, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIME, 0); }
	public KW_JSON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JSON, 0); }
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INTEGER, 0); }
	public KW_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DECIMAL, 0); }
	public KW_DEC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEC, 0); }
	public lengthOneDimension(): LengthOneDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthOneDimensionContext);
	}
	public charSet(): CharSetContext | undefined {
		return this.tryGetRuleContext(0, CharSetContext);
	}
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext | undefined {
		return this.tryGetRuleContext(0, LengthTwoOptionalDimensionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_convertedDataType; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterConvertedDataType) {
			listener.enterConvertedDataType(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitConvertedDataType) {
			listener.exitConvertedDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitConvertedDataType) {
			return visitor.visitConvertedDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LengthOneDimensionContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lengthOneDimension; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLengthOneDimension) {
			listener.enterLengthOneDimension(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLengthOneDimension) {
			listener.exitLengthOneDimension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLengthOneDimension) {
			return visitor.visitLengthOneDimension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LengthTwoDimensionContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lengthTwoDimension; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLengthTwoDimension) {
			listener.enterLengthTwoDimension(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLengthTwoDimension) {
			listener.exitLengthTwoDimension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLengthTwoDimension) {
			return visitor.visitLengthTwoDimension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LengthTwoOptionalDimensionContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COMMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_lengthTwoOptionalDimension; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLengthTwoOptionalDimension) {
			listener.enterLengthTwoOptionalDimension(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLengthTwoOptionalDimension) {
			listener.exitLengthTwoOptionalDimension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLengthTwoOptionalDimension) {
			return visitor.visitLengthTwoOptionalDimension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexColumnNamesContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public indexColumnName(): IndexColumnNameContext[];
	public indexColumnName(i: number): IndexColumnNameContext;
	public indexColumnName(i?: number): IndexColumnNameContext | IndexColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IndexColumnNameContext);
		} else {
			return this.getRuleContext(i, IndexColumnNameContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_indexColumnNames; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIndexColumnNames) {
			listener.enterIndexColumnNames(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIndexColumnNames) {
			listener.exitIndexColumnNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIndexColumnNames) {
			return visitor.visitIndexColumnNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsContext extends ParserRuleContext {
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_expressions; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExpressions) {
			listener.enterExpressions(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExpressions) {
			listener.exitExpressions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExpressions) {
			return visitor.visitExpressions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValuesOrValueListContext extends ParserRuleContext {
	public expressionsWithDefaults(): ExpressionsWithDefaultsContext[];
	public expressionsWithDefaults(i: number): ExpressionsWithDefaultsContext;
	public expressionsWithDefaults(i?: number): ExpressionsWithDefaultsContext | ExpressionsWithDefaultsContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionsWithDefaultsContext);
		} else {
			return this.getRuleContext(i, ExpressionsWithDefaultsContext);
		}
	}
	public KW_VALUES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUES, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_valuesOrValueList; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterValuesOrValueList) {
			listener.enterValuesOrValueList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitValuesOrValueList) {
			listener.exitValuesOrValueList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitValuesOrValueList) {
			return visitor.visitValuesOrValueList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsWithDefaultsContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expressionOrDefault(): ExpressionOrDefaultContext[];
	public expressionOrDefault(i: number): ExpressionOrDefaultContext;
	public expressionOrDefault(i?: number): ExpressionOrDefaultContext | ExpressionOrDefaultContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionOrDefaultContext);
		} else {
			return this.getRuleContext(i, ExpressionOrDefaultContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_expressionsWithDefaults; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExpressionsWithDefaults) {
			listener.enterExpressionsWithDefaults(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExpressionsWithDefaults) {
			listener.exitExpressionsWithDefaults(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionsWithDefaults) {
			return visitor.visitExpressionsWithDefaults(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionOrDefaultContext extends ParserRuleContext {
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_expressionOrDefault; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExpressionOrDefault) {
			listener.enterExpressionOrDefault(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExpressionOrDefault) {
			listener.exitExpressionOrDefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionOrDefault) {
			return visitor.visitExpressionOrDefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstantsContext extends ParserRuleContext {
	public constant(): ConstantContext[];
	public constant(i: number): ConstantContext;
	public constant(i?: number): ConstantContext | ConstantContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ConstantContext);
		} else {
			return this.getRuleContext(i, ConstantContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_constants; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterConstants) {
			listener.enterConstants(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitConstants) {
			listener.exitConstants(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitConstants) {
			return visitor.visitConstants(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleStringsContext extends ParserRuleContext {
	public STRING_LITERAL(): TerminalNode[];
	public STRING_LITERAL(i: number): TerminalNode;
	public STRING_LITERAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.STRING_LITERAL);
		} else {
			return this.getToken(MySqlParser.STRING_LITERAL, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_simpleStrings; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleStrings) {
			listener.enterSimpleStrings(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleStrings) {
			listener.exitSimpleStrings(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleStrings) {
			return visitor.visitSimpleStrings(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserVariablesContext extends ParserRuleContext {
	public LOCAL_ID(): TerminalNode[];
	public LOCAL_ID(i: number): TerminalNode;
	public LOCAL_ID(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LOCAL_ID);
		} else {
			return this.getToken(MySqlParser.LOCAL_ID, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_userVariables; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUserVariables) {
			listener.enterUserVariables(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUserVariables) {
			listener.exitUserVariables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUserVariables) {
			return visitor.visitUserVariables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefaultValueContext extends ParserRuleContext {
	public KW_NULL_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NULL_LITERAL, 0); }
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CAST, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public convertedDataType(): ConvertedDataTypeContext | undefined {
		return this.tryGetRuleContext(0, ConvertedDataTypeContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	public unaryOperator(): UnaryOperatorContext | undefined {
		return this.tryGetRuleContext(0, UnaryOperatorContext);
	}
	public currentTimestamp(): CurrentTimestampContext[];
	public currentTimestamp(i: number): CurrentTimestampContext;
	public currentTimestamp(i?: number): CurrentTimestampContext | CurrentTimestampContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CurrentTimestampContext);
		} else {
			return this.getRuleContext(i, CurrentTimestampContext);
		}
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ON, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPDATE, 0); }
	public fullId(): FullIdContext | undefined {
		return this.tryGetRuleContext(0, FullIdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_defaultValue; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDefaultValue) {
			listener.enterDefaultValue(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDefaultValue) {
			listener.exitDefaultValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultValue) {
			return visitor.visitDefaultValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CurrentTimestampContext extends ParserRuleContext {
	public KW_NOW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOW, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_TIMESTAMP, 0); }
	public KW_LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCALTIME, 0); }
	public KW_LOCALTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCALTIMESTAMP, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_currentTimestamp; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCurrentTimestamp) {
			listener.enterCurrentTimestamp(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCurrentTimestamp) {
			listener.exitCurrentTimestamp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCurrentTimestamp) {
			return visitor.visitCurrentTimestamp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfExistsContext extends ParserRuleContext {
	public KW_IF(): TerminalNode { return this.getToken(MySqlParser.KW_IF, 0); }
	public KW_EXISTS(): TerminalNode { return this.getToken(MySqlParser.KW_EXISTS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_ifExists; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIfExists) {
			listener.enterIfExists(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIfExists) {
			listener.exitIfExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIfExists) {
			return visitor.visitIfExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfNotExistsContext extends ParserRuleContext {
	public KW_IF(): TerminalNode { return this.getToken(MySqlParser.KW_IF, 0); }
	public KW_NOT(): TerminalNode { return this.getToken(MySqlParser.KW_NOT, 0); }
	public KW_EXISTS(): TerminalNode { return this.getToken(MySqlParser.KW_EXISTS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_ifNotExists; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIfNotExists) {
			listener.enterIfNotExists(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIfNotExists) {
			listener.exitIfNotExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIfNotExists) {
			return visitor.visitIfNotExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrReplaceContext extends ParserRuleContext {
	public KW_OR(): TerminalNode { return this.getToken(MySqlParser.KW_OR, 0); }
	public KW_REPLACE(): TerminalNode { return this.getToken(MySqlParser.KW_REPLACE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_orReplace; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOrReplace) {
			listener.enterOrReplace(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOrReplace) {
			listener.exitOrReplace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOrReplace) {
			return visitor.visitOrReplace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionCallContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_functionCall; }
	public copyFrom(ctx: FunctionCallContext): void {
		super.copyFrom(ctx);
	}
}
export class SpecificFunctionCallContext extends FunctionCallContext {
	public specificFunction(): SpecificFunctionContext {
		return this.getRuleContext(0, SpecificFunctionContext);
	}
	constructor(ctx: FunctionCallContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSpecificFunctionCall) {
			listener.enterSpecificFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSpecificFunctionCall) {
			listener.exitSpecificFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSpecificFunctionCall) {
			return visitor.visitSpecificFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AggregateFunctionCallContext extends FunctionCallContext {
	public aggregateWindowedFunction(): AggregateWindowedFunctionContext {
		return this.getRuleContext(0, AggregateWindowedFunctionContext);
	}
	constructor(ctx: FunctionCallContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAggregateFunctionCall) {
			listener.enterAggregateFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAggregateFunctionCall) {
			listener.exitAggregateFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAggregateFunctionCall) {
			return visitor.visitAggregateFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NonAggregateFunctionCallContext extends FunctionCallContext {
	public nonAggregateWindowedFunction(): NonAggregateWindowedFunctionContext {
		return this.getRuleContext(0, NonAggregateWindowedFunctionContext);
	}
	constructor(ctx: FunctionCallContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNonAggregateFunctionCall) {
			listener.enterNonAggregateFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNonAggregateFunctionCall) {
			listener.exitNonAggregateFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNonAggregateFunctionCall) {
			return visitor.visitNonAggregateFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ScalarFunctionCallContext extends FunctionCallContext {
	public scalarFunctionName(): ScalarFunctionNameContext {
		return this.getRuleContext(0, ScalarFunctionNameContext);
	}
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public functionArgs(): FunctionArgsContext | undefined {
		return this.tryGetRuleContext(0, FunctionArgsContext);
	}
	constructor(ctx: FunctionCallContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterScalarFunctionCall) {
			listener.enterScalarFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitScalarFunctionCall) {
			listener.exitScalarFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitScalarFunctionCall) {
			return visitor.visitScalarFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UdfFunctionCallContext extends FunctionCallContext {
	public functionName(): FunctionNameContext {
		return this.getRuleContext(0, FunctionNameContext);
	}
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public functionArgs(): FunctionArgsContext | undefined {
		return this.tryGetRuleContext(0, FunctionArgsContext);
	}
	constructor(ctx: FunctionCallContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUdfFunctionCall) {
			listener.enterUdfFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUdfFunctionCall) {
			listener.exitUdfFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUdfFunctionCall) {
			return visitor.visitUdfFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PasswordFunctionCallContext extends FunctionCallContext {
	public passwordFunctionClause(): PasswordFunctionClauseContext {
		return this.getRuleContext(0, PasswordFunctionClauseContext);
	}
	constructor(ctx: FunctionCallContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPasswordFunctionCall) {
			listener.enterPasswordFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPasswordFunctionCall) {
			listener.exitPasswordFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordFunctionCall) {
			return visitor.visitPasswordFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SpecificFunctionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_specificFunction; }
	public copyFrom(ctx: SpecificFunctionContext): void {
		super.copyFrom(ctx);
	}
}
export class SimpleFunctionCallContext extends SpecificFunctionContext {
	public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_DATE, 0); }
	public KW_CURRENT_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_TIME, 0); }
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_TIMESTAMP, 0); }
	public KW_LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCALTIME, 0); }
	public KW_UTC_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTC_TIMESTAMP, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSimpleFunctionCall) {
			listener.enterSimpleFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSimpleFunctionCall) {
			listener.exitSimpleFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleFunctionCall) {
			return visitor.visitSimpleFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CurrentUserContext extends SpecificFunctionContext {
	public currentUserExpression(): CurrentUserExpressionContext {
		return this.getRuleContext(0, CurrentUserExpressionContext);
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCurrentUser) {
			listener.enterCurrentUser(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCurrentUser) {
			listener.exitCurrentUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCurrentUser) {
			return visitor.visitCurrentUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DataTypeFunctionCallContext extends SpecificFunctionContext {
	public _separator!: Token;
	public KW_CONVERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONVERT, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public convertedDataType(): ConvertedDataTypeContext | undefined {
		return this.tryGetRuleContext(0, ConvertedDataTypeContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.COMMA, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CAST, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDataTypeFunctionCall) {
			listener.enterDataTypeFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDataTypeFunctionCall) {
			listener.exitDataTypeFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDataTypeFunctionCall) {
			return visitor.visitDataTypeFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ValuesFunctionCallContext extends SpecificFunctionContext {
	public KW_VALUES(): TerminalNode { return this.getToken(MySqlParser.KW_VALUES, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterValuesFunctionCall) {
			listener.enterValuesFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitValuesFunctionCall) {
			listener.exitValuesFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitValuesFunctionCall) {
			return visitor.visitValuesFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CaseExpressionFunctionCallContext extends SpecificFunctionContext {
	public _elseArg!: FunctionArgContext;
	public KW_CASE(): TerminalNode { return this.getToken(MySqlParser.KW_CASE, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public caseFuncAlternative(): CaseFuncAlternativeContext[];
	public caseFuncAlternative(i: number): CaseFuncAlternativeContext;
	public caseFuncAlternative(i?: number): CaseFuncAlternativeContext | CaseFuncAlternativeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CaseFuncAlternativeContext);
		} else {
			return this.getRuleContext(i, CaseFuncAlternativeContext);
		}
	}
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ELSE, 0); }
	public functionArg(): FunctionArgContext | undefined {
		return this.tryGetRuleContext(0, FunctionArgContext);
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCaseExpressionFunctionCall) {
			listener.enterCaseExpressionFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCaseExpressionFunctionCall) {
			listener.exitCaseExpressionFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCaseExpressionFunctionCall) {
			return visitor.visitCaseExpressionFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CaseFunctionCallContext extends SpecificFunctionContext {
	public _elseArg!: FunctionArgContext;
	public KW_CASE(): TerminalNode { return this.getToken(MySqlParser.KW_CASE, 0); }
	public KW_END(): TerminalNode { return this.getToken(MySqlParser.KW_END, 0); }
	public caseFuncAlternative(): CaseFuncAlternativeContext[];
	public caseFuncAlternative(i: number): CaseFuncAlternativeContext;
	public caseFuncAlternative(i?: number): CaseFuncAlternativeContext | CaseFuncAlternativeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CaseFuncAlternativeContext);
		} else {
			return this.getRuleContext(i, CaseFuncAlternativeContext);
		}
	}
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ELSE, 0); }
	public functionArg(): FunctionArgContext | undefined {
		return this.tryGetRuleContext(0, FunctionArgContext);
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCaseFunctionCall) {
			listener.enterCaseFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCaseFunctionCall) {
			listener.exitCaseFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCaseFunctionCall) {
			return visitor.visitCaseFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CharFunctionCallContext extends SpecificFunctionContext {
	public KW_CHAR(): TerminalNode { return this.getToken(MySqlParser.KW_CHAR, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public functionArgs(): FunctionArgsContext {
		return this.getRuleContext(0, FunctionArgsContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USING, 0); }
	public charsetName(): CharsetNameContext | undefined {
		return this.tryGetRuleContext(0, CharsetNameContext);
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCharFunctionCall) {
			listener.enterCharFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCharFunctionCall) {
			listener.exitCharFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCharFunctionCall) {
			return visitor.visitCharFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PositionFunctionCallContext extends SpecificFunctionContext {
	public _positionString!: StringLiteralContext;
	public _positionExpression!: ExpressionContext;
	public _inString!: StringLiteralContext;
	public _inExpression!: ExpressionContext;
	public KW_POSITION(): TerminalNode { return this.getToken(MySqlParser.KW_POSITION, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public KW_IN(): TerminalNode { return this.getToken(MySqlParser.KW_IN, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public stringLiteral(): StringLiteralContext[];
	public stringLiteral(i: number): StringLiteralContext;
	public stringLiteral(i?: number): StringLiteralContext | StringLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(StringLiteralContext);
		} else {
			return this.getRuleContext(i, StringLiteralContext);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPositionFunctionCall) {
			listener.enterPositionFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPositionFunctionCall) {
			listener.exitPositionFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPositionFunctionCall) {
			return visitor.visitPositionFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubstrFunctionCallContext extends SpecificFunctionContext {
	public _sourceString!: StringLiteralContext;
	public _sourceExpression!: ExpressionContext;
	public _fromDecimal!: DecimalLiteralContext;
	public _fromExpression!: ExpressionContext;
	public _forDecimal!: DecimalLiteralContext;
	public _forExpression!: ExpressionContext;
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_SUBSTR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBSTR, 0); }
	public KW_SUBSTRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBSTRING, 0); }
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOR, 0); }
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubstrFunctionCall) {
			listener.enterSubstrFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubstrFunctionCall) {
			listener.exitSubstrFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubstrFunctionCall) {
			return visitor.visitSubstrFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TrimFunctionCallContext extends SpecificFunctionContext {
	public _positioinForm!: Token;
	public _sourceString!: StringLiteralContext;
	public _sourceExpression!: ExpressionContext;
	public _fromString!: StringLiteralContext;
	public _fromExpression!: ExpressionContext;
	public KW_TRIM(): TerminalNode { return this.getToken(MySqlParser.KW_TRIM, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_BOTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BOTH, 0); }
	public KW_LEADING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEADING, 0); }
	public KW_TRAILING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRAILING, 0); }
	public stringLiteral(): StringLiteralContext[];
	public stringLiteral(i: number): StringLiteralContext;
	public stringLiteral(i?: number): StringLiteralContext | StringLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(StringLiteralContext);
		} else {
			return this.getRuleContext(i, StringLiteralContext);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTrimFunctionCall) {
			listener.enterTrimFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTrimFunctionCall) {
			listener.exitTrimFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTrimFunctionCall) {
			return visitor.visitTrimFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WeightFunctionCallContext extends SpecificFunctionContext {
	public _stringFormat!: Token;
	public KW_WEIGHT_STRING(): TerminalNode { return this.getToken(MySqlParser.KW_WEIGHT_STRING, 0); }
	public LR_BRACKET(): TerminalNode[];
	public LR_BRACKET(i: number): TerminalNode;
	public LR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LR_BRACKET);
		} else {
			return this.getToken(MySqlParser.LR_BRACKET, i);
		}
	}
	public RR_BRACKET(): TerminalNode[];
	public RR_BRACKET(i: number): TerminalNode;
	public RR_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.RR_BRACKET);
		} else {
			return this.getToken(MySqlParser.RR_BRACKET, i);
		}
	}
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AS, 0); }
	public decimalLiteral(): DecimalLiteralContext | undefined {
		return this.tryGetRuleContext(0, DecimalLiteralContext);
	}
	public levelsInWeightString(): LevelsInWeightStringContext | undefined {
		return this.tryGetRuleContext(0, LevelsInWeightStringContext);
	}
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAR, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWeightFunctionCall) {
			listener.enterWeightFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWeightFunctionCall) {
			listener.exitWeightFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWeightFunctionCall) {
			return visitor.visitWeightFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExtractFunctionCallContext extends SpecificFunctionContext {
	public _sourceString!: StringLiteralContext;
	public _sourceExpression!: ExpressionContext;
	public KW_EXTRACT(): TerminalNode { return this.getToken(MySqlParser.KW_EXTRACT, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public intervalType(): IntervalTypeContext {
		return this.getRuleContext(0, IntervalTypeContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(MySqlParser.KW_FROM, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public stringLiteral(): StringLiteralContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExtractFunctionCall) {
			listener.enterExtractFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExtractFunctionCall) {
			listener.exitExtractFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExtractFunctionCall) {
			return visitor.visitExtractFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GetFormatFunctionCallContext extends SpecificFunctionContext {
	public _datetimeFormat!: Token;
	public KW_GET_FORMAT(): TerminalNode { return this.getToken(MySqlParser.KW_GET_FORMAT, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public stringLiteral(): StringLiteralContext {
		return this.getRuleContext(0, StringLiteralContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIME, 0); }
	public KW_DATETIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATETIME, 0); }
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterGetFormatFunctionCall) {
			listener.enterGetFormatFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitGetFormatFunctionCall) {
			listener.exitGetFormatFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitGetFormatFunctionCall) {
			return visitor.visitGetFormatFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class JsonValueFunctionCallContext extends SpecificFunctionContext {
	public KW_JSON_VALUE(): TerminalNode { return this.getToken(MySqlParser.KW_JSON_VALUE, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public COMMA(): TerminalNode { return this.getToken(MySqlParser.COMMA, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_RETURNING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RETURNING, 0); }
	public convertedDataType(): ConvertedDataTypeContext | undefined {
		return this.tryGetRuleContext(0, ConvertedDataTypeContext);
	}
	public jsonOnEmpty(): JsonOnEmptyContext | undefined {
		return this.tryGetRuleContext(0, JsonOnEmptyContext);
	}
	public jsonOnError(): JsonOnErrorContext | undefined {
		return this.tryGetRuleContext(0, JsonOnErrorContext);
	}
	constructor(ctx: SpecificFunctionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonValueFunctionCall) {
			listener.enterJsonValueFunctionCall(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonValueFunctionCall) {
			listener.exitJsonValueFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonValueFunctionCall) {
			return visitor.visitJsonValueFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseFuncAlternativeContext extends ParserRuleContext {
	public _condition!: FunctionArgContext;
	public _consequent!: FunctionArgContext;
	public KW_WHEN(): TerminalNode { return this.getToken(MySqlParser.KW_WHEN, 0); }
	public KW_THEN(): TerminalNode { return this.getToken(MySqlParser.KW_THEN, 0); }
	public functionArg(): FunctionArgContext[];
	public functionArg(i: number): FunctionArgContext;
	public functionArg(i?: number): FunctionArgContext | FunctionArgContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FunctionArgContext);
		} else {
			return this.getRuleContext(i, FunctionArgContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_caseFuncAlternative; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCaseFuncAlternative) {
			listener.enterCaseFuncAlternative(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCaseFuncAlternative) {
			listener.exitCaseFuncAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCaseFuncAlternative) {
			return visitor.visitCaseFuncAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LevelsInWeightStringContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_levelsInWeightString; }
	public copyFrom(ctx: LevelsInWeightStringContext): void {
		super.copyFrom(ctx);
	}
}
export class LevelWeightListContext extends LevelsInWeightStringContext {
	public KW_LEVEL(): TerminalNode { return this.getToken(MySqlParser.KW_LEVEL, 0); }
	public levelInWeightListElement(): LevelInWeightListElementContext[];
	public levelInWeightListElement(i: number): LevelInWeightListElementContext;
	public levelInWeightListElement(i?: number): LevelInWeightListElementContext | LevelInWeightListElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LevelInWeightListElementContext);
		} else {
			return this.getRuleContext(i, LevelInWeightListElementContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: LevelsInWeightStringContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLevelWeightList) {
			listener.enterLevelWeightList(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLevelWeightList) {
			listener.exitLevelWeightList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLevelWeightList) {
			return visitor.visitLevelWeightList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LevelWeightRangeContext extends LevelsInWeightStringContext {
	public _firstLevel!: DecimalLiteralContext;
	public _lastLevel!: DecimalLiteralContext;
	public KW_LEVEL(): TerminalNode { return this.getToken(MySqlParser.KW_LEVEL, 0); }
	public MINUS(): TerminalNode { return this.getToken(MySqlParser.MINUS, 0); }
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	constructor(ctx: LevelsInWeightStringContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLevelWeightRange) {
			listener.enterLevelWeightRange(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLevelWeightRange) {
			listener.exitLevelWeightRange(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLevelWeightRange) {
			return visitor.visitLevelWeightRange(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LevelInWeightListElementContext extends ParserRuleContext {
	public _orderType!: Token;
	public decimalLiteral(): DecimalLiteralContext {
		return this.getRuleContext(0, DecimalLiteralContext);
	}
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DESC, 0); }
	public KW_REVERSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REVERSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_levelInWeightListElement; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLevelInWeightListElement) {
			listener.enterLevelInWeightListElement(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLevelInWeightListElement) {
			listener.exitLevelInWeightListElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLevelInWeightListElement) {
			return visitor.visitLevelInWeightListElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AggregateWindowedFunctionContext extends ParserRuleContext {
	public _aggregator!: Token;
	public _starArg!: Token;
	public _separator!: Token;
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public functionArg(): FunctionArgContext | undefined {
		return this.tryGetRuleContext(0, FunctionArgContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_AVG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AVG, 0); }
	public KW_MAX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX, 0); }
	public KW_MIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MIN, 0); }
	public KW_SUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUM, 0); }
	public overClause(): OverClauseContext | undefined {
		return this.tryGetRuleContext(0, OverClauseContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISTINCT, 0); }
	public KW_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COUNT, 0); }
	public functionArgs(): FunctionArgsContext | undefined {
		return this.tryGetRuleContext(0, FunctionArgsContext);
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STAR, 0); }
	public KW_BIT_AND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT_AND, 0); }
	public KW_BIT_OR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT_OR, 0); }
	public KW_BIT_XOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT_XOR, 0); }
	public KW_STD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STD, 0); }
	public KW_STDDEV(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STDDEV, 0); }
	public KW_STDDEV_POP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STDDEV_POP, 0); }
	public KW_STDDEV_SAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STDDEV_SAMP, 0); }
	public KW_VAR_POP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VAR_POP, 0); }
	public KW_VAR_SAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VAR_SAMP, 0); }
	public KW_VARIANCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARIANCE, 0); }
	public KW_GROUP_CONCAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP_CONCAT, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BY, 0); }
	public orderByExpression(): OrderByExpressionContext[];
	public orderByExpression(i: number): OrderByExpressionContext;
	public orderByExpression(i?: number): OrderByExpressionContext | OrderByExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(OrderByExpressionContext);
		} else {
			return this.getRuleContext(i, OrderByExpressionContext);
		}
	}
	public KW_SEPARATOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SEPARATOR, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_aggregateWindowedFunction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterAggregateWindowedFunction) {
			listener.enterAggregateWindowedFunction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitAggregateWindowedFunction) {
			listener.exitAggregateWindowedFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitAggregateWindowedFunction) {
			return visitor.visitAggregateWindowedFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NonAggregateWindowedFunctionContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public overClause(): OverClauseContext {
		return this.getRuleContext(0, OverClauseContext);
	}
	public KW_LAG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAG, 0); }
	public KW_LEAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEAD, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	public decimalLiteral(): DecimalLiteralContext[];
	public decimalLiteral(i: number): DecimalLiteralContext;
	public decimalLiteral(i?: number): DecimalLiteralContext | DecimalLiteralContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DecimalLiteralContext);
		} else {
			return this.getRuleContext(i, DecimalLiteralContext);
		}
	}
	public KW_FIRST_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST_VALUE, 0); }
	public KW_LAST_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAST_VALUE, 0); }
	public KW_CUME_DIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CUME_DIST, 0); }
	public KW_DENSE_RANK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DENSE_RANK, 0); }
	public KW_PERCENT_RANK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERCENT_RANK, 0); }
	public KW_RANK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANK, 0); }
	public KW_ROW_NUMBER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROW_NUMBER, 0); }
	public KW_NTH_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NTH_VALUE, 0); }
	public KW_NTILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NTILE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_nonAggregateWindowedFunction; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNonAggregateWindowedFunction) {
			listener.enterNonAggregateWindowedFunction(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNonAggregateWindowedFunction) {
			listener.exitNonAggregateWindowedFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNonAggregateWindowedFunction) {
			return visitor.visitNonAggregateWindowedFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OverClauseContext extends ParserRuleContext {
	public KW_OVER(): TerminalNode { return this.getToken(MySqlParser.KW_OVER, 0); }
	public LR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LR_BRACKET, 0); }
	public windowSpec(): WindowSpecContext | undefined {
		return this.tryGetRuleContext(0, WindowSpecContext);
	}
	public RR_BRACKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.RR_BRACKET, 0); }
	public windowName(): WindowNameContext | undefined {
		return this.tryGetRuleContext(0, WindowNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_overClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterOverClause) {
			listener.enterOverClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitOverClause) {
			listener.exitOverClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitOverClause) {
			return visitor.visitOverClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WindowSpecContext extends ParserRuleContext {
	public windowName(): WindowNameContext | undefined {
		return this.tryGetRuleContext(0, WindowNameContext);
	}
	public partitionClause(): PartitionClauseContext | undefined {
		return this.tryGetRuleContext(0, PartitionClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public frameClause(): FrameClauseContext | undefined {
		return this.tryGetRuleContext(0, FrameClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_windowSpec; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWindowSpec) {
			listener.enterWindowSpec(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWindowSpec) {
			listener.exitWindowSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWindowSpec) {
			return visitor.visitWindowSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WindowNameContext extends ParserRuleContext {
	public uid(): UidContext {
		return this.getRuleContext(0, UidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_windowName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterWindowName) {
			listener.enterWindowName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitWindowName) {
			listener.exitWindowName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitWindowName) {
			return visitor.visitWindowName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FrameClauseContext extends ParserRuleContext {
	public frameUnits(): FrameUnitsContext {
		return this.getRuleContext(0, FrameUnitsContext);
	}
	public frameExtent(): FrameExtentContext {
		return this.getRuleContext(0, FrameExtentContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_frameClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFrameClause) {
			listener.enterFrameClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFrameClause) {
			listener.exitFrameClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFrameClause) {
			return visitor.visitFrameClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FrameUnitsContext extends ParserRuleContext {
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROWS, 0); }
	public KW_RANGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANGE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_frameUnits; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFrameUnits) {
			listener.enterFrameUnits(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFrameUnits) {
			listener.exitFrameUnits(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFrameUnits) {
			return visitor.visitFrameUnits(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FrameExtentContext extends ParserRuleContext {
	public frameRange(): FrameRangeContext | undefined {
		return this.tryGetRuleContext(0, FrameRangeContext);
	}
	public frameBetween(): FrameBetweenContext | undefined {
		return this.tryGetRuleContext(0, FrameBetweenContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_frameExtent; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFrameExtent) {
			listener.enterFrameExtent(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFrameExtent) {
			listener.exitFrameExtent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFrameExtent) {
			return visitor.visitFrameExtent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FrameBetweenContext extends ParserRuleContext {
	public KW_BETWEEN(): TerminalNode { return this.getToken(MySqlParser.KW_BETWEEN, 0); }
	public frameRange(): FrameRangeContext[];
	public frameRange(i: number): FrameRangeContext;
	public frameRange(i?: number): FrameRangeContext | FrameRangeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FrameRangeContext);
		} else {
			return this.getRuleContext(i, FrameRangeContext);
		}
	}
	public KW_AND(): TerminalNode { return this.getToken(MySqlParser.KW_AND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_frameBetween; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFrameBetween) {
			listener.enterFrameBetween(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFrameBetween) {
			listener.exitFrameBetween(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFrameBetween) {
			return visitor.visitFrameBetween(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FrameRangeContext extends ParserRuleContext {
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROW, 0); }
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNBOUNDED, 0); }
	public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRECEDING, 0); }
	public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOLLOWING, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_frameRange; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFrameRange) {
			listener.enterFrameRange(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFrameRange) {
			listener.exitFrameRange(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFrameRange) {
			return visitor.visitFrameRange(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionClauseContext extends ParserRuleContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(MySqlParser.KW_PARTITION, 0); }
	public KW_BY(): TerminalNode { return this.getToken(MySqlParser.KW_BY, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_partitionClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPartitionClause) {
			listener.enterPartitionClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPartitionClause) {
			listener.exitPartitionClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionClause) {
			return visitor.visitPartitionClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ScalarFunctionNameContext extends ParserRuleContext {
	public functionNameBase(): FunctionNameBaseContext | undefined {
		return this.tryGetRuleContext(0, FunctionNameBaseContext);
	}
	public KW_ASCII(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASCII, 0); }
	public KW_CURDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURDATE, 0); }
	public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_DATE, 0); }
	public KW_CURRENT_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_TIME, 0); }
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_TIMESTAMP, 0); }
	public KW_CURTIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURTIME, 0); }
	public KW_DATE_ADD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE_ADD, 0); }
	public KW_DATE_SUB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE_SUB, 0); }
	public KW_IF(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IF, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSERT, 0); }
	public KW_LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCALTIME, 0); }
	public KW_LOCALTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCALTIMESTAMP, 0); }
	public KW_MID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MID, 0); }
	public KW_NOW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOW, 0); }
	public KW_REPEAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPEAT, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLACE, 0); }
	public KW_SUBSTR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBSTR, 0); }
	public KW_SUBSTRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBSTRING, 0); }
	public KW_SYSDATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SYSDATE, 0); }
	public KW_TRIM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRIM, 0); }
	public KW_UTC_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTC_DATE, 0); }
	public KW_UTC_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTC_TIME, 0); }
	public KW_UTC_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTC_TIMESTAMP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_scalarFunctionName; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterScalarFunctionName) {
			listener.enterScalarFunctionName(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitScalarFunctionName) {
			listener.exitScalarFunctionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitScalarFunctionName) {
			return visitor.visitScalarFunctionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PasswordFunctionClauseContext extends ParserRuleContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public functionArg(): FunctionArgContext {
		return this.getRuleContext(0, FunctionArgContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_OLD_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OLD_PASSWORD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_passwordFunctionClause; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPasswordFunctionClause) {
			listener.enterPasswordFunctionClause(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPasswordFunctionClause) {
			listener.exitPasswordFunctionClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordFunctionClause) {
			return visitor.visitPasswordFunctionClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionArgsContext extends ParserRuleContext {
	public functionArg(): FunctionArgContext[];
	public functionArg(i: number): FunctionArgContext;
	public functionArg(i?: number): FunctionArgContext | FunctionArgContext[] {
		if (i === undefined) {
			return this.getRuleContexts(FunctionArgContext);
		} else {
			return this.getRuleContext(i, FunctionArgContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_functionArgs; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFunctionArgs) {
			listener.enterFunctionArgs(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFunctionArgs) {
			listener.exitFunctionArgs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionArgs) {
			return visitor.visitFunctionArgs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionArgContext extends ParserRuleContext {
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public functionCall(): FunctionCallContext | undefined {
		return this.tryGetRuleContext(0, FunctionCallContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_functionArg; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFunctionArg) {
			listener.enterFunctionArg(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFunctionArg) {
			listener.exitFunctionArg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionArg) {
			return visitor.visitFunctionArg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_expression; }
	public copyFrom(ctx: ExpressionContext): void {
		super.copyFrom(ctx);
	}
}
export class NotExpressionContext extends ExpressionContext {
	public _notOperator!: Token;
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	public EXCLAMATION_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
	constructor(ctx: ExpressionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNotExpression) {
			listener.enterNotExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNotExpression) {
			listener.exitNotExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNotExpression) {
			return visitor.visitNotExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LogicalExpressionContext extends ExpressionContext {
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public logicalOperator(): LogicalOperatorContext {
		return this.getRuleContext(0, LogicalOperatorContext);
	}
	constructor(ctx: ExpressionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLogicalExpression) {
			listener.enterLogicalExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLogicalExpression) {
			listener.exitLogicalExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLogicalExpression) {
			return visitor.visitLogicalExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IsExpressionContext extends ExpressionContext {
	public _testValue!: Token;
	public predicate(): PredicateContext {
		return this.getRuleContext(0, PredicateContext);
	}
	public KW_IS(): TerminalNode { return this.getToken(MySqlParser.KW_IS, 0); }
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FALSE, 0); }
	public KW_UNKNOWN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNKNOWN, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(ctx: ExpressionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIsExpression) {
			listener.enterIsExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIsExpression) {
			listener.exitIsExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIsExpression) {
			return visitor.visitIsExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PredicateExpressionContext extends ExpressionContext {
	public predicate(): PredicateContext {
		return this.getRuleContext(0, PredicateContext);
	}
	constructor(ctx: ExpressionContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPredicateExpression) {
			listener.enterPredicateExpression(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPredicateExpression) {
			listener.exitPredicateExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPredicateExpression) {
			return visitor.visitPredicateExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PredicateContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_predicate; }
	public copyFrom(ctx: PredicateContext): void {
		super.copyFrom(ctx);
	}
}
export class InPredicateContext extends PredicateContext {
	public predicate(): PredicateContext {
		return this.getRuleContext(0, PredicateContext);
	}
	public KW_IN(): TerminalNode { return this.getToken(MySqlParser.KW_IN, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public expressions(): ExpressionsContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterInPredicate) {
			listener.enterInPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitInPredicate) {
			listener.exitInPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitInPredicate) {
			return visitor.visitInPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IsNullPredicateContext extends PredicateContext {
	public predicate(): PredicateContext {
		return this.getRuleContext(0, PredicateContext);
	}
	public KW_IS(): TerminalNode { return this.getToken(MySqlParser.KW_IS, 0); }
	public nullNotnull(): NullNotnullContext {
		return this.getRuleContext(0, NullNotnullContext);
	}
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIsNullPredicate) {
			listener.enterIsNullPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIsNullPredicate) {
			listener.exitIsNullPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIsNullPredicate) {
			return visitor.visitIsNullPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BinaryComparisonPredicateContext extends PredicateContext {
	public _left!: PredicateContext;
	public _right!: PredicateContext;
	public comparisonOperator(): ComparisonOperatorContext {
		return this.getRuleContext(0, ComparisonOperatorContext);
	}
	public predicate(): PredicateContext[];
	public predicate(i: number): PredicateContext;
	public predicate(i?: number): PredicateContext | PredicateContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PredicateContext);
		} else {
			return this.getRuleContext(i, PredicateContext);
		}
	}
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBinaryComparisonPredicate) {
			listener.enterBinaryComparisonPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBinaryComparisonPredicate) {
			listener.exitBinaryComparisonPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBinaryComparisonPredicate) {
			return visitor.visitBinaryComparisonPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubqueryComparisonPredicateContext extends PredicateContext {
	public _quantifier!: Token;
	public predicate(): PredicateContext {
		return this.getRuleContext(0, PredicateContext);
	}
	public comparisonOperator(): ComparisonOperatorContext {
		return this.getRuleContext(0, ComparisonOperatorContext);
	}
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALL, 0); }
	public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ANY, 0); }
	public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOME, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubqueryComparisonPredicate) {
			listener.enterSubqueryComparisonPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubqueryComparisonPredicate) {
			listener.exitSubqueryComparisonPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubqueryComparisonPredicate) {
			return visitor.visitSubqueryComparisonPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BetweenPredicateContext extends PredicateContext {
	public predicate(): PredicateContext[];
	public predicate(i: number): PredicateContext;
	public predicate(i?: number): PredicateContext | PredicateContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PredicateContext);
		} else {
			return this.getRuleContext(i, PredicateContext);
		}
	}
	public KW_BETWEEN(): TerminalNode { return this.getToken(MySqlParser.KW_BETWEEN, 0); }
	public KW_AND(): TerminalNode { return this.getToken(MySqlParser.KW_AND, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBetweenPredicate) {
			listener.enterBetweenPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBetweenPredicate) {
			listener.exitBetweenPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBetweenPredicate) {
			return visitor.visitBetweenPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SoundsLikePredicateContext extends PredicateContext {
	public predicate(): PredicateContext[];
	public predicate(i: number): PredicateContext;
	public predicate(i?: number): PredicateContext | PredicateContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PredicateContext);
		} else {
			return this.getRuleContext(i, PredicateContext);
		}
	}
	public KW_SOUNDS(): TerminalNode { return this.getToken(MySqlParser.KW_SOUNDS, 0); }
	public KW_LIKE(): TerminalNode { return this.getToken(MySqlParser.KW_LIKE, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSoundsLikePredicate) {
			listener.enterSoundsLikePredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSoundsLikePredicate) {
			listener.exitSoundsLikePredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSoundsLikePredicate) {
			return visitor.visitSoundsLikePredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LikePredicateContext extends PredicateContext {
	public predicate(): PredicateContext[];
	public predicate(i: number): PredicateContext;
	public predicate(i?: number): PredicateContext | PredicateContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PredicateContext);
		} else {
			return this.getRuleContext(i, PredicateContext);
		}
	}
	public KW_LIKE(): TerminalNode { return this.getToken(MySqlParser.KW_LIKE, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ESCAPE, 0); }
	public STRING_LITERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STRING_LITERAL, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLikePredicate) {
			listener.enterLikePredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLikePredicate) {
			listener.exitLikePredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLikePredicate) {
			return visitor.visitLikePredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RegexpPredicateContext extends PredicateContext {
	public _regex!: Token;
	public predicate(): PredicateContext[];
	public predicate(i: number): PredicateContext;
	public predicate(i?: number): PredicateContext | PredicateContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PredicateContext);
		} else {
			return this.getRuleContext(i, PredicateContext);
		}
	}
	public KW_REGEXP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REGEXP, 0); }
	public KW_RLIKE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RLIKE, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterRegexpPredicate) {
			listener.enterRegexpPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitRegexpPredicate) {
			listener.exitRegexpPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitRegexpPredicate) {
			return visitor.visitRegexpPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class JsonMemberOfPredicateContext extends PredicateContext {
	public predicate(): PredicateContext[];
	public predicate(i: number): PredicateContext;
	public predicate(i?: number): PredicateContext | PredicateContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PredicateContext);
		} else {
			return this.getRuleContext(i, PredicateContext);
		}
	}
	public KW_MEMBER(): TerminalNode { return this.getToken(MySqlParser.KW_MEMBER, 0); }
	public KW_OF(): TerminalNode { return this.getToken(MySqlParser.KW_OF, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonMemberOfPredicate) {
			listener.enterJsonMemberOfPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonMemberOfPredicate) {
			listener.exitJsonMemberOfPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonMemberOfPredicate) {
			return visitor.visitJsonMemberOfPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExpressionAtomPredicateContext extends PredicateContext {
	public expressionAtom(): ExpressionAtomContext {
		return this.getRuleContext(0, ExpressionAtomContext);
	}
	constructor(ctx: PredicateContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExpressionAtomPredicate) {
			listener.enterExpressionAtomPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExpressionAtomPredicate) {
			listener.exitExpressionAtomPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionAtomPredicate) {
			return visitor.visitExpressionAtomPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionAtomContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_expressionAtom; }
	public copyFrom(ctx: ExpressionAtomContext): void {
		super.copyFrom(ctx);
	}
}
export class ConstantExpressionAtomContext extends ExpressionAtomContext {
	public constant(): ConstantContext {
		return this.getRuleContext(0, ConstantContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterConstantExpressionAtom) {
			listener.enterConstantExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitConstantExpressionAtom) {
			listener.exitConstantExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitConstantExpressionAtom) {
			return visitor.visitConstantExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ColumnNameExpressionAtomContext extends ExpressionAtomContext {
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterColumnNameExpressionAtom) {
			listener.enterColumnNameExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitColumnNameExpressionAtom) {
			listener.exitColumnNameExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameExpressionAtom) {
			return visitor.visitColumnNameExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FunctionCallExpressionAtomContext extends ExpressionAtomContext {
	public functionCall(): FunctionCallContext {
		return this.getRuleContext(0, FunctionCallContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFunctionCallExpressionAtom) {
			listener.enterFunctionCallExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFunctionCallExpressionAtom) {
			listener.exitFunctionCallExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionCallExpressionAtom) {
			return visitor.visitFunctionCallExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CollateExpressionAtomContext extends ExpressionAtomContext {
	public expressionAtom(): ExpressionAtomContext {
		return this.getRuleContext(0, ExpressionAtomContext);
	}
	public KW_COLLATE(): TerminalNode { return this.getToken(MySqlParser.KW_COLLATE, 0); }
	public collationName(): CollationNameContext {
		return this.getRuleContext(0, CollationNameContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCollateExpressionAtom) {
			listener.enterCollateExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCollateExpressionAtom) {
			listener.exitCollateExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCollateExpressionAtom) {
			return visitor.visitCollateExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MysqlVariableExpressionAtomContext extends ExpressionAtomContext {
	public mysqlVariable(): MysqlVariableContext {
		return this.getRuleContext(0, MysqlVariableContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMysqlVariableExpressionAtom) {
			listener.enterMysqlVariableExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMysqlVariableExpressionAtom) {
			listener.exitMysqlVariableExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMysqlVariableExpressionAtom) {
			return visitor.visitMysqlVariableExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UnaryExpressionAtomContext extends ExpressionAtomContext {
	public unaryOperator(): UnaryOperatorContext {
		return this.getRuleContext(0, UnaryOperatorContext);
	}
	public expressionAtom(): ExpressionAtomContext {
		return this.getRuleContext(0, ExpressionAtomContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnaryExpressionAtom) {
			listener.enterUnaryExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnaryExpressionAtom) {
			listener.exitUnaryExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnaryExpressionAtom) {
			return visitor.visitUnaryExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BinaryExpressionAtomContext extends ExpressionAtomContext {
	public KW_BINARY(): TerminalNode { return this.getToken(MySqlParser.KW_BINARY, 0); }
	public expressionAtom(): ExpressionAtomContext {
		return this.getRuleContext(0, ExpressionAtomContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBinaryExpressionAtom) {
			listener.enterBinaryExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBinaryExpressionAtom) {
			listener.exitBinaryExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBinaryExpressionAtom) {
			return visitor.visitBinaryExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class VariableAssignExpressionAtomContext extends ExpressionAtomContext {
	public LOCAL_ID(): TerminalNode { return this.getToken(MySqlParser.LOCAL_ID, 0); }
	public VAR_ASSIGN(): TerminalNode { return this.getToken(MySqlParser.VAR_ASSIGN, 0); }
	public expressionAtom(): ExpressionAtomContext {
		return this.getRuleContext(0, ExpressionAtomContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterVariableAssignExpressionAtom) {
			listener.enterVariableAssignExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitVariableAssignExpressionAtom) {
			listener.exitVariableAssignExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitVariableAssignExpressionAtom) {
			return visitor.visitVariableAssignExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NestedExpressionAtomContext extends ExpressionAtomContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNestedExpressionAtom) {
			listener.enterNestedExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNestedExpressionAtom) {
			listener.exitNestedExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNestedExpressionAtom) {
			return visitor.visitNestedExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NestedRowExpressionAtomContext extends ExpressionAtomContext {
	public KW_ROW(): TerminalNode { return this.getToken(MySqlParser.KW_ROW, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.COMMA);
		} else {
			return this.getToken(MySqlParser.COMMA, i);
		}
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterNestedRowExpressionAtom) {
			listener.enterNestedRowExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitNestedRowExpressionAtom) {
			listener.exitNestedRowExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitNestedRowExpressionAtom) {
			return visitor.visitNestedRowExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExistsExpressionAtomContext extends ExpressionAtomContext {
	public KW_EXISTS(): TerminalNode { return this.getToken(MySqlParser.KW_EXISTS, 0); }
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterExistsExpressionAtom) {
			listener.enterExistsExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitExistsExpressionAtom) {
			listener.exitExistsExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitExistsExpressionAtom) {
			return visitor.visitExistsExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubqueryExpressionAtomContext extends ExpressionAtomContext {
	public LR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.LR_BRACKET, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public RR_BRACKET(): TerminalNode { return this.getToken(MySqlParser.RR_BRACKET, 0); }
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterSubqueryExpressionAtom) {
			listener.enterSubqueryExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitSubqueryExpressionAtom) {
			listener.exitSubqueryExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitSubqueryExpressionAtom) {
			return visitor.visitSubqueryExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IntervalExpressionAtomContext extends ExpressionAtomContext {
	public KW_INTERVAL(): TerminalNode { return this.getToken(MySqlParser.KW_INTERVAL, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public intervalType(): IntervalTypeContext {
		return this.getRuleContext(0, IntervalTypeContext);
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIntervalExpressionAtom) {
			listener.enterIntervalExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIntervalExpressionAtom) {
			listener.exitIntervalExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalExpressionAtom) {
			return visitor.visitIntervalExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BitExpressionAtomContext extends ExpressionAtomContext {
	public _left!: ExpressionAtomContext;
	public _right!: ExpressionAtomContext;
	public bitOperator(): BitOperatorContext {
		return this.getRuleContext(0, BitOperatorContext);
	}
	public expressionAtom(): ExpressionAtomContext[];
	public expressionAtom(i: number): ExpressionAtomContext;
	public expressionAtom(i?: number): ExpressionAtomContext | ExpressionAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionAtomContext);
		} else {
			return this.getRuleContext(i, ExpressionAtomContext);
		}
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBitExpressionAtom) {
			listener.enterBitExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBitExpressionAtom) {
			listener.exitBitExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBitExpressionAtom) {
			return visitor.visitBitExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MathExpressionAtomContext extends ExpressionAtomContext {
	public _left!: ExpressionAtomContext;
	public _right!: ExpressionAtomContext;
	public mathOperator(): MathOperatorContext {
		return this.getRuleContext(0, MathOperatorContext);
	}
	public expressionAtom(): ExpressionAtomContext[];
	public expressionAtom(i: number): ExpressionAtomContext;
	public expressionAtom(i?: number): ExpressionAtomContext | ExpressionAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionAtomContext);
		} else {
			return this.getRuleContext(i, ExpressionAtomContext);
		}
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMathExpressionAtom) {
			listener.enterMathExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMathExpressionAtom) {
			listener.exitMathExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMathExpressionAtom) {
			return visitor.visitMathExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class JsonExpressionAtomContext extends ExpressionAtomContext {
	public _left!: ExpressionAtomContext;
	public _right!: ExpressionAtomContext;
	public jsonOperator(): JsonOperatorContext {
		return this.getRuleContext(0, JsonOperatorContext);
	}
	public expressionAtom(): ExpressionAtomContext[];
	public expressionAtom(i: number): ExpressionAtomContext;
	public expressionAtom(i?: number): ExpressionAtomContext | ExpressionAtomContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionAtomContext);
		} else {
			return this.getRuleContext(i, ExpressionAtomContext);
		}
	}
	constructor(ctx: ExpressionAtomContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonExpressionAtom) {
			listener.enterJsonExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonExpressionAtom) {
			listener.exitJsonExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonExpressionAtom) {
			return visitor.visitJsonExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnaryOperatorContext extends ParserRuleContext {
	public EXCLAMATION_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
	public BIT_NOT_OP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.BIT_NOT_OP, 0); }
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MINUS, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_unaryOperator; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterUnaryOperator) {
			listener.enterUnaryOperator(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitUnaryOperator) {
			listener.exitUnaryOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitUnaryOperator) {
			return visitor.visitUnaryOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComparisonOperatorContext extends ParserRuleContext {
	public comparisonBase(): ComparisonBaseContext | undefined {
		return this.tryGetRuleContext(0, ComparisonBaseContext);
	}
	public LESS_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LESS_SYMBOL, 0); }
	public GREATER_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.GREATER_SYMBOL, 0); }
	public EXCLAMATION_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_comparisonOperator; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterComparisonOperator) {
			listener.enterComparisonOperator(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitComparisonOperator) {
			listener.exitComparisonOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitComparisonOperator) {
			return visitor.visitComparisonOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComparisonBaseContext extends ParserRuleContext {
	public EQUAL_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.EQUAL_SYMBOL, 0); }
	public GREATER_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.GREATER_SYMBOL, 0); }
	public LESS_SYMBOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.LESS_SYMBOL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_comparisonBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterComparisonBase) {
			listener.enterComparisonBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitComparisonBase) {
			listener.exitComparisonBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitComparisonBase) {
			return visitor.visitComparisonBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LogicalOperatorContext extends ParserRuleContext {
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AND, 0); }
	public BIT_AND_OP(): TerminalNode[];
	public BIT_AND_OP(i: number): TerminalNode;
	public BIT_AND_OP(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.BIT_AND_OP);
		} else {
			return this.getToken(MySqlParser.BIT_AND_OP, i);
		}
	}
	public KW_XOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_XOR, 0); }
	public KW_OR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OR, 0); }
	public BIT_OR_OP(): TerminalNode[];
	public BIT_OR_OP(i: number): TerminalNode;
	public BIT_OR_OP(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.BIT_OR_OP);
		} else {
			return this.getToken(MySqlParser.BIT_OR_OP, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_logicalOperator; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterLogicalOperator) {
			listener.enterLogicalOperator(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitLogicalOperator) {
			listener.exitLogicalOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitLogicalOperator) {
			return visitor.visitLogicalOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BitOperatorContext extends ParserRuleContext {
	public LESS_SYMBOL(): TerminalNode[];
	public LESS_SYMBOL(i: number): TerminalNode;
	public LESS_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.LESS_SYMBOL);
		} else {
			return this.getToken(MySqlParser.LESS_SYMBOL, i);
		}
	}
	public GREATER_SYMBOL(): TerminalNode[];
	public GREATER_SYMBOL(i: number): TerminalNode;
	public GREATER_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.GREATER_SYMBOL);
		} else {
			return this.getToken(MySqlParser.GREATER_SYMBOL, i);
		}
	}
	public BIT_AND_OP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.BIT_AND_OP, 0); }
	public BIT_XOR_OP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.BIT_XOR_OP, 0); }
	public BIT_OR_OP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.BIT_OR_OP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_bitOperator; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterBitOperator) {
			listener.enterBitOperator(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitBitOperator) {
			listener.exitBitOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitBitOperator) {
			return visitor.visitBitOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MathOperatorContext extends ParserRuleContext {
	public STAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.STAR, 0); }
	public DIVIDE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.DIVIDE, 0); }
	public MODULE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MODULE, 0); }
	public DIV(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.DIV, 0); }
	public MOD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MOD, 0); }
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MINUS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_mathOperator; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterMathOperator) {
			listener.enterMathOperator(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitMathOperator) {
			listener.exitMathOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitMathOperator) {
			return visitor.visitMathOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JsonOperatorContext extends ParserRuleContext {
	public MINUS(): TerminalNode { return this.getToken(MySqlParser.MINUS, 0); }
	public GREATER_SYMBOL(): TerminalNode[];
	public GREATER_SYMBOL(i: number): TerminalNode;
	public GREATER_SYMBOL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(MySqlParser.GREATER_SYMBOL);
		} else {
			return this.getToken(MySqlParser.GREATER_SYMBOL, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_jsonOperator; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterJsonOperator) {
			listener.enterJsonOperator(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitJsonOperator) {
			listener.exitJsonOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitJsonOperator) {
			return visitor.visitJsonOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharsetNameBaseContext extends ParserRuleContext {
	public KW_ARMSCII8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ARMSCII8, 0); }
	public KW_ASCII(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ASCII, 0); }
	public KW_BIG5(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIG5, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINARY, 0); }
	public KW_CP1250(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP1250, 0); }
	public KW_CP1251(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP1251, 0); }
	public KW_CP1256(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP1256, 0); }
	public KW_CP1257(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP1257, 0); }
	public KW_CP850(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP850, 0); }
	public KW_CP852(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP852, 0); }
	public KW_CP866(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP866, 0); }
	public KW_CP932(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CP932, 0); }
	public KW_DEC8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEC8, 0); }
	public KW_EUCJPMS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EUCJPMS, 0); }
	public KW_EUCKR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EUCKR, 0); }
	public KW_GB18030(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GB18030, 0); }
	public KW_GB2312(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GB2312, 0); }
	public KW_GBK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GBK, 0); }
	public KW_GEOSTD8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GEOSTD8, 0); }
	public KW_GREEK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GREEK, 0); }
	public KW_HEBREW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HEBREW, 0); }
	public KW_HP8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HP8, 0); }
	public KW_KEYBCS2(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEYBCS2, 0); }
	public KW_KOI8R(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KOI8R, 0); }
	public KW_KOI8U(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KOI8U, 0); }
	public KW_LATIN1(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATIN1, 0); }
	public KW_LATIN2(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATIN2, 0); }
	public KW_LATIN5(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATIN5, 0); }
	public KW_LATIN7(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATIN7, 0); }
	public KW_MACCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MACCE, 0); }
	public KW_MACROMAN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MACROMAN, 0); }
	public KW_SJIS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SJIS, 0); }
	public KW_SWE7(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SWE7, 0); }
	public KW_TIS620(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIS620, 0); }
	public KW_UCS2(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UCS2, 0); }
	public KW_UJIS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UJIS, 0); }
	public KW_UTF16(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTF16, 0); }
	public KW_UTF16LE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTF16LE, 0); }
	public KW_UTF32(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTF32, 0); }
	public KW_UTF8(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTF8, 0); }
	public KW_UTF8MB3(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTF8MB3, 0); }
	public KW_UTF8MB4(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UTF8MB4, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_charsetNameBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterCharsetNameBase) {
			listener.enterCharsetNameBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitCharsetNameBase) {
			listener.exitCharsetNameBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitCharsetNameBase) {
			return visitor.visitCharsetNameBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionLevelBaseContext extends ParserRuleContext {
	public KW_REPEATABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPEATABLE, 0); }
	public KW_COMMITTED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMITTED, 0); }
	public KW_UNCOMMITTED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNCOMMITTED, 0); }
	public KW_SERIALIZABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SERIALIZABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_transactionLevelBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterTransactionLevelBase) {
			listener.enterTransactionLevelBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitTransactionLevelBase) {
			listener.exitTransactionLevelBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionLevelBase) {
			return visitor.visitTransactionLevelBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegesBaseContext extends ParserRuleContext {
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLES, 0); }
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROUTINE, 0); }
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXECUTE, 0); }
	public KW_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FILE, 0); }
	public KW_PROCESS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCESS, 0); }
	public KW_RELOAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELOAD, 0); }
	public KW_SHUTDOWN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHUTDOWN, 0); }
	public KW_SUPER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUPER, 0); }
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIVILEGES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_privilegesBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterPrivilegesBase) {
			listener.enterPrivilegesBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitPrivilegesBase) {
			listener.exitPrivilegesBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegesBase) {
			return visitor.visitPrivilegesBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalTypeBaseContext extends ParserRuleContext {
	public KW_QUARTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUARTER, 0); }
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MONTH, 0); }
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY, 0); }
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOUR, 0); }
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MINUTE, 0); }
	public KW_WEEK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WEEK, 0); }
	public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECOND, 0); }
	public KW_MICROSECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MICROSECOND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_intervalTypeBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterIntervalTypeBase) {
			listener.enterIntervalTypeBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitIntervalTypeBase) {
			listener.exitIntervalTypeBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalTypeBase) {
			return visitor.visitIntervalTypeBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataTypeBaseContext extends ParserRuleContext {
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIME, 0); }
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIMESTAMP, 0); }
	public KW_DATETIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATETIME, 0); }
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_YEAR, 0); }
	public KW_ENUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENUM, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEXT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_dataTypeBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterDataTypeBase) {
			listener.enterDataTypeBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitDataTypeBase) {
			listener.exitDataTypeBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitDataTypeBase) {
			return visitor.visitDataTypeBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KeywordsCanBeIdContext extends ParserRuleContext {
	public KW_ACCOUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ACCOUNT, 0); }
	public KW_ACTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ACTION, 0); }
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ADMIN, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AFTER, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AGGREGATE, 0); }
	public KW_ALGORITHM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ALGORITHM, 0); }
	public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ANY, 0); }
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ARRAY, 0); }
	public KW_AT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AT, 0); }
	public KW_AUDIT_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUDIT_ADMIN, 0); }
	public KW_AUDIT_ABORT_EXEMPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUDIT_ABORT_EXEMPT, 0); }
	public KW_AUTHORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTHORS, 0); }
	public KW_AUTOCOMMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTOCOMMIT, 0); }
	public KW_AUTOEXTEND_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTOEXTEND_SIZE, 0); }
	public KW_AUTO_INCREMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTO_INCREMENT, 0); }
	public KW_AUTHENTICATION_POLICY_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN, 0); }
	public KW_AVG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AVG, 0); }
	public KW_AVG_ROW_LENGTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_AVG_ROW_LENGTH, 0); }
	public KW_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ATTRIBUTE, 0); }
	public KW_BACKUP_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BACKUP_ADMIN, 0); }
	public KW_BEGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BEGIN, 0); }
	public KW_BINLOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINLOG, 0); }
	public KW_BINLOG_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINLOG_ADMIN, 0); }
	public KW_BINLOG_ENCRYPTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN, 0); }
	public KW_BIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT, 0); }
	public KW_BIT_AND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT_AND, 0); }
	public KW_BIT_OR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT_OR, 0); }
	public KW_BIT_XOR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BIT_XOR, 0); }
	public KW_BLOCK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BLOCK, 0); }
	public KW_BOOL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BOOL, 0); }
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BOOLEAN, 0); }
	public KW_BTREE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BTREE, 0); }
	public KW_BUCKETS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_BUCKETS, 0); }
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CACHE, 0); }
	public KW_CASCADED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CASCADED, 0); }
	public KW_CHAIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHAIN, 0); }
	public KW_CHANGED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHANGED, 0); }
	public KW_CHANNEL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHANNEL, 0); }
	public KW_CHECKSUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHECKSUM, 0); }
	public KW_PAGE_CHECKSUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PAGE_CHECKSUM, 0); }
	public KW_CATALOG_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CATALOG_NAME, 0); }
	public KW_CIPHER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CIPHER, 0); }
	public KW_CLASS_ORIGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLASS_ORIGIN, 0); }
	public KW_CLIENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLIENT, 0); }
	public KW_CLONE_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLONE_ADMIN, 0); }
	public KW_CLOSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CLOSE, 0); }
	public KW_COALESCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COALESCE, 0); }
	public KW_CODE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CODE, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMNS, 0); }
	public KW_COLUMN_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN_FORMAT, 0); }
	public KW_COLUMN_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLUMN_NAME, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMENT, 0); }
	public KW_COMMIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMMIT, 0); }
	public KW_COMPACT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPACT, 0); }
	public KW_COMPLETION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPLETION, 0); }
	public KW_COMPRESSED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPRESSED, 0); }
	public KW_COMPRESSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COMPRESSION, 0); }
	public KW_CONCURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONCURRENT, 0); }
	public KW_CONDITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONDITION, 0); }
	public KW_CONNECT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONNECT, 0); }
	public KW_CONNECTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONNECTION, 0); }
	public KW_CONNECTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONNECTION_ADMIN, 0); }
	public KW_CONSISTENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSISTENT, 0); }
	public KW_CONSTRAINT_CATALOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_CATALOG, 0); }
	public KW_CONSTRAINT_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_NAME, 0); }
	public KW_CONSTRAINT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONSTRAINT_SCHEMA, 0); }
	public KW_CONTAINS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTAINS, 0); }
	public KW_CONTEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTEXT, 0); }
	public KW_CONTRIBUTORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CONTRIBUTORS, 0); }
	public KW_COPY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COPY, 0); }
	public KW_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COUNT, 0); }
	public KW_CPU(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CPU, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT, 0); }
	public KW_CURRENT_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURRENT_USER, 0); }
	public KW_CURSOR_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CURSOR_NAME, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATA, 0); }
	public KW_DATAFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATAFILE, 0); }
	public KW_DEALLOCATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEALLOCATE, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT, 0); }
	public KW_DEFAULT_AUTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFAULT_AUTH, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DEFINER, 0); }
	public KW_DELAY_KEY_WRITE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DELAY_KEY_WRITE, 0); }
	public KW_DES_KEY_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DES_KEY_FILE, 0); }
	public KW_DIAGNOSTICS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DIAGNOSTICS, 0); }
	public KW_DIRECTORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DIRECTORY, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISABLE, 0); }
	public KW_DISCARD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISCARD, 0); }
	public KW_DISK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DISK, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DO, 0); }
	public KW_DUMPFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DUMPFILE, 0); }
	public KW_DUPLICATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DUPLICATE, 0); }
	public KW_DYNAMIC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DYNAMIC, 0); }
	public KW_EMPTY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EMPTY, 0); }
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENABLE, 0); }
	public KW_ENCRYPTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENCRYPTION, 0); }
	public KW_ENCRYPTION_KEY_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENCRYPTION_KEY_ADMIN, 0); }
	public KW_END(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_END, 0); }
	public KW_ENDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENDS, 0); }
	public KW_ENGINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE, 0); }
	public KW_ENGINE_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINE_ATTRIBUTE, 0); }
	public KW_ENGINES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENGINES, 0); }
	public KW_ENFORCED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ENFORCED, 0); }
	public KW_ERROR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ERROR, 0); }
	public KW_ERRORS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ERRORS, 0); }
	public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ESCAPE, 0); }
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EVENT, 0); }
	public KW_EVENTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EVENTS, 0); }
	public KW_EVERY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EVERY, 0); }
	public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXCEPT, 0); }
	public KW_EXCHANGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXCHANGE, 0); }
	public KW_EXCLUSIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXCLUSIVE, 0); }
	public KW_EXPIRE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPIRE, 0); }
	public KW_EXPORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXPORT, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENDED, 0); }
	public KW_EXTENT_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_EXTENT_SIZE, 0); }
	public KW_FAILED_LOGIN_ATTEMPTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FAILED_LOGIN_ATTEMPTS, 0); }
	public KW_FAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FAST, 0); }
	public KW_FAULTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FAULTS, 0); }
	public KW_FIELDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIELDS, 0); }
	public KW_FILE_BLOCK_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FILE_BLOCK_SIZE, 0); }
	public KW_FILTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FILTER, 0); }
	public KW_FIREWALL_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIREWALL_ADMIN, 0); }
	public KW_FIREWALL_EXEMPT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIREWALL_EXEMPT, 0); }
	public KW_FIREWALL_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIREWALL_USER, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST, 0); }
	public KW_FIXED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIXED, 0); }
	public KW_FLUSH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FLUSH, 0); }
	public KW_FOLLOWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOLLOWS, 0); }
	public KW_FOUND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FOUND, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FULL, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FUNCTION, 0); }
	public KW_GENERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GENERAL, 0); }
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GLOBAL, 0); }
	public KW_GRANTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GRANTS, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP, 0); }
	public KW_GROUP_CONCAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP_CONCAT, 0); }
	public KW_GROUP_REPLICATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP_REPLICATION, 0); }
	public KW_GROUP_REPLICATION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GROUP_REPLICATION_ADMIN, 0); }
	public KW_HANDLER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HANDLER, 0); }
	public KW_HASH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HASH, 0); }
	public KW_HELP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HELP, 0); }
	public KW_HISTORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HISTORY, 0); }
	public KW_HOST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOST, 0); }
	public KW_HOSTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOSTS, 0); }
	public KW_IDENTIFIED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IDENTIFIED, 0); }
	public KW_IGNORE_SERVER_IDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IGNORE_SERVER_IDS, 0); }
	public KW_IMPORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IMPORT, 0); }
	public KW_INDEXES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INDEXES, 0); }
	public KW_INITIAL_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INITIAL_SIZE, 0); }
	public KW_INNODB_REDO_LOG_ARCHIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE, 0); }
	public KW_INPLACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INPLACE, 0); }
	public KW_INSERT_METHOD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSERT_METHOD, 0); }
	public KW_INSTALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSTALL, 0); }
	public KW_INSTANCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSTANCE, 0); }
	public KW_INSTANT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INSTANT, 0); }
	public KW_INVOKE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVOKE, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVOKER, 0); }
	public KW_IO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IO, 0); }
	public KW_IO_THREAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IO_THREAD, 0); }
	public KW_IPC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_IPC, 0); }
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ISOLATION, 0); }
	public KW_ISSUER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ISSUER, 0); }
	public KW_JSON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JSON, 0); }
	public KW_KEY_BLOCK_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_KEY_BLOCK_SIZE, 0); }
	public KW_LAMBDA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAMBDA, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LANGUAGE, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAST, 0); }
	public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LATERAL, 0); }
	public KW_LEAVES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEAVES, 0); }
	public KW_LESS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LESS, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEVEL, 0); }
	public KW_LIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LIST, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOCAL, 0); }
	public KW_LOGFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOGFILE, 0); }
	public KW_LOGS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LOGS, 0); }
	public KW_MASTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER, 0); }
	public KW_MASTER_AUTO_POSITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_AUTO_POSITION, 0); }
	public KW_MASTER_CONNECT_RETRY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_CONNECT_RETRY, 0); }
	public KW_MASTER_DELAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_DELAY, 0); }
	public KW_MASTER_HEARTBEAT_PERIOD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_HEARTBEAT_PERIOD, 0); }
	public KW_MASTER_HOST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_HOST, 0); }
	public KW_MASTER_LOG_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_LOG_FILE, 0); }
	public KW_MASTER_LOG_POS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_LOG_POS, 0); }
	public KW_MASTER_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_PASSWORD, 0); }
	public KW_MASTER_PORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_PORT, 0); }
	public KW_MASTER_RETRY_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_RETRY_COUNT, 0); }
	public KW_MASTER_SSL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL, 0); }
	public KW_MASTER_SSL_CA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CA, 0); }
	public KW_MASTER_SSL_CAPATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CAPATH, 0); }
	public KW_MASTER_SSL_CERT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CERT, 0); }
	public KW_MASTER_SSL_CIPHER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CIPHER, 0); }
	public KW_MASTER_SSL_CRL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CRL, 0); }
	public KW_MASTER_SSL_CRLPATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_CRLPATH, 0); }
	public KW_MASTER_SSL_KEY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_SSL_KEY, 0); }
	public KW_MASTER_TLS_VERSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_TLS_VERSION, 0); }
	public KW_MASTER_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MASTER_USER, 0); }
	public KW_MAX_CONNECTIONS_PER_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR, 0); }
	public KW_MAX_QUERIES_PER_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_QUERIES_PER_HOUR, 0); }
	public KW_MAX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX, 0); }
	public KW_MAX_ROWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_ROWS, 0); }
	public KW_MAX_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_SIZE, 0); }
	public KW_MAX_UPDATES_PER_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_UPDATES_PER_HOUR, 0); }
	public KW_MAX_USER_CONNECTIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MAX_USER_CONNECTIONS, 0); }
	public KW_MEDIUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEDIUM, 0); }
	public KW_MEMBER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEMBER, 0); }
	public KW_MEMORY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MEMORY, 0); }
	public KW_MERGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MERGE, 0); }
	public KW_MESSAGE_TEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MESSAGE_TEXT, 0); }
	public KW_MID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MID, 0); }
	public KW_MIGRATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MIGRATE, 0); }
	public KW_MIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MIN, 0); }
	public KW_MIN_ROWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MIN_ROWS, 0); }
	public KW_MODE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MODE, 0); }
	public KW_MODIFY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MODIFY, 0); }
	public KW_MUTEX(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MUTEX, 0); }
	public KW_MYSQL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYSQL, 0); }
	public KW_MYSQL_ERRNO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MYSQL_ERRNO, 0); }
	public KW_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NAME, 0); }
	public KW_NAMES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NAMES, 0); }
	public KW_NCHAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NCHAR, 0); }
	public KW_NDB_STORED_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NDB_STORED_USER, 0); }
	public KW_NESTED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NESTED, 0); }
	public KW_NEVER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NEVER, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NEXT, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NO, 0); }
	public KW_NODEGROUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NODEGROUP, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NONE, 0); }
	public KW_NOWAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NOWAIT, 0); }
	public KW_NUMBER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NUMBER, 0); }
	public KW_ODBC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ODBC, 0); }
	public KW_OFFLINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFFLINE, 0); }
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OFFSET, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OF, 0); }
	public KW_OLD_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OLD_PASSWORD, 0); }
	public KW_ONE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONE, 0); }
	public KW_ONLINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLINE, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ONLY, 0); }
	public KW_OPEN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPEN, 0); }
	public KW_OPTIMIZER_COSTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTIMIZER_COSTS, 0); }
	public KW_OPTIONAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTIONAL, 0); }
	public KW_OPTIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OPTIONS, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ORDER, 0); }
	public KW_ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ORDINALITY, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_OWNER, 0); }
	public KW_PACK_KEYS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PACK_KEYS, 0); }
	public KW_PAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PAGE, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARSER, 0); }
	public KW_PARTIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTIAL, 0); }
	public KW_PARTITIONING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITIONING, 0); }
	public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PARTITIONS, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD, 0); }
	public KW_PASSWORDLESS_USER_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORDLESS_USER_ADMIN, 0); }
	public KW_PASSWORD_LOCK_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PASSWORD_LOCK_TIME, 0); }
	public KW_PATH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PATH, 0); }
	public KW_PERSIST_RO_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN, 0); }
	public KW_PHASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PHASE, 0); }
	public KW_PLUGINS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PLUGINS, 0); }
	public KW_PLUGIN_DIR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PLUGIN_DIR, 0); }
	public KW_PLUGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PLUGIN, 0); }
	public KW_PORT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PORT, 0); }
	public KW_PRECEDES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRECEDES, 0); }
	public KW_PREPARE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PREPARE, 0); }
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRESERVE, 0); }
	public KW_PREV(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PREV, 0); }
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PRIMARY, 0); }
	public KW_PROCESSLIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROCESSLIST, 0); }
	public KW_PROFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROFILE, 0); }
	public KW_PROFILES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROFILES, 0); }
	public KW_PROXY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PROXY, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUERY, 0); }
	public KW_QUICK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUICK, 0); }
	public KW_REBUILD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REBUILD, 0); }
	public KW_RECOVER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RECOVER, 0); }
	public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RECURSIVE, 0); }
	public KW_REDO_BUFFER_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REDO_BUFFER_SIZE, 0); }
	public KW_REDUNDANT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REDUNDANT, 0); }
	public KW_RELAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY, 0); }
	public KW_RELAYLOG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAYLOG, 0); }
	public KW_RELAY_LOG_FILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY_LOG_FILE, 0); }
	public KW_RELAY_LOG_POS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RELAY_LOG_POS, 0); }
	public KW_REMOVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REMOVE, 0); }
	public KW_REORGANIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REORGANIZE, 0); }
	public KW_REPAIR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPAIR, 0); }
	public KW_REPLICATE_DO_DB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_DO_DB, 0); }
	public KW_REPLICATE_DO_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_DO_TABLE, 0); }
	public KW_REPLICATE_IGNORE_DB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_IGNORE_DB, 0); }
	public KW_REPLICATE_IGNORE_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_IGNORE_TABLE, 0); }
	public KW_REPLICATE_REWRITE_DB(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_REWRITE_DB, 0); }
	public KW_REPLICATE_WILD_DO_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_WILD_DO_TABLE, 0); }
	public KW_REPLICATE_WILD_IGNORE_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE, 0); }
	public KW_REPLICATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATION, 0); }
	public KW_REPLICATION_APPLIER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATION_APPLIER, 0); }
	public KW_REPLICATION_SLAVE_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REPLICATION_SLAVE_ADMIN, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESET, 0); }
	public KW_RESOURCE_GROUP_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESOURCE_GROUP_ADMIN, 0); }
	public KW_RESOURCE_GROUP_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESOURCE_GROUP_USER, 0); }
	public KW_RESUME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RESUME, 0); }
	public KW_RETURNED_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RETURNED_SQLSTATE, 0); }
	public KW_RETURNS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RETURNS, 0); }
	public KW_REUSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REUSE, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE, 0); }
	public KW_ROLE_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLE_ADMIN, 0); }
	public KW_ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLLBACK, 0); }
	public KW_ROLLUP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROLLUP, 0); }
	public KW_ROTATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROTATE, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROW, 0); }
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROWS, 0); }
	public KW_ROW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROW_FORMAT, 0); }
	public KW_S3(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_S3, 0); }
	public KW_SAVEPOINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SAVEPOINT, 0); }
	public KW_SCHEDULE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEDULE, 0); }
	public KW_SCHEMA_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA_NAME, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECURITY, 0); }
	public KW_SECONDARY_ENGINE_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE, 0); }
	public KW_SERIAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SERIAL, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SERVER, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION, 0); }
	public KW_SESSION_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION_VARIABLES_ADMIN, 0); }
	public KW_SET_USER_ID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SET_USER_ID, 0); }
	public KW_SHARE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHARE, 0); }
	public KW_SHARED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHARED, 0); }
	public KW_SHOW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SHOW_ROUTINE, 0); }
	public KW_SIGNED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SIGNED, 0); }
	public KW_SIMPLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SIMPLE, 0); }
	public KW_SLAVE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLAVE, 0); }
	public KW_SLOW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SLOW, 0); }
	public KW_SKIP_QUERY_REWRITE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SKIP_QUERY_REWRITE, 0); }
	public KW_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SNAPSHOT, 0); }
	public KW_SOCKET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOCKET, 0); }
	public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOME, 0); }
	public KW_SONAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SONAME, 0); }
	public KW_SOUNDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOUNDS, 0); }
	public KW_SOURCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SOURCE, 0); }
	public KW_SQL_AFTER_GTIDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_AFTER_GTIDS, 0); }
	public KW_SQL_AFTER_MTS_GAPS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_AFTER_MTS_GAPS, 0); }
	public KW_SQL_BEFORE_GTIDS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_BEFORE_GTIDS, 0); }
	public KW_SQL_BUFFER_RESULT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_BUFFER_RESULT, 0); }
	public KW_SQL_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_CACHE, 0); }
	public KW_SQL_NO_CACHE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_NO_CACHE, 0); }
	public KW_SQL_THREAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SQL_THREAD, 0); }
	public KW_STACKED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STACKED, 0); }
	public KW_START(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_START, 0); }
	public KW_STARTS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STARTS, 0); }
	public KW_STATS_AUTO_RECALC(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATS_AUTO_RECALC, 0); }
	public KW_STATS_PERSISTENT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATS_PERSISTENT, 0); }
	public KW_STATS_SAMPLE_PAGES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATS_SAMPLE_PAGES, 0); }
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STATUS, 0); }
	public KW_STD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STD, 0); }
	public KW_STDDEV(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STDDEV, 0); }
	public KW_STDDEV_POP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STDDEV_POP, 0); }
	public KW_STDDEV_SAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STDDEV_SAMP, 0); }
	public KW_STOP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STOP, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STORAGE, 0); }
	public KW_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_STRING, 0); }
	public KW_SUBCLASS_ORIGIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBCLASS_ORIGIN, 0); }
	public KW_SUBJECT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBJECT, 0); }
	public KW_SUBPARTITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBPARTITION, 0); }
	public KW_SUBPARTITIONS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUBPARTITIONS, 0); }
	public KW_SUM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUM, 0); }
	public KW_SUSPEND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SUSPEND, 0); }
	public KW_SWAPS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SWAPS, 0); }
	public KW_SWITCHES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SWITCHES, 0); }
	public KW_SYSTEM_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SYSTEM_VARIABLES_ADMIN, 0); }
	public KW_TABLE_NAME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE_NAME, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLESPACE, 0); }
	public KW_TABLE_ENCRYPTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE_ENCRYPTION_ADMIN, 0); }
	public KW_TABLE_TYPE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TABLE_TYPE, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPORARY, 0); }
	public KW_TEMPTABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TEMPTABLE, 0); }
	public KW_THAN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_THAN, 0); }
	public KW_TP_CONNECTION_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TP_CONNECTION_ADMIN, 0); }
	public KW_TRADITIONAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRADITIONAL, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRANSACTION, 0); }
	public KW_TRANSACTIONAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRANSACTIONAL, 0); }
	public KW_TRIGGERS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRIGGERS, 0); }
	public KW_TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TRUNCATE, 0); }
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNBOUNDED, 0); }
	public KW_UNDEFINED(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDEFINED, 0); }
	public KW_UNDOFILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDOFILE, 0); }
	public KW_UNDO_BUFFER_SIZE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNDO_BUFFER_SIZE, 0); }
	public KW_UNINSTALL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNINSTALL, 0); }
	public KW_UNKNOWN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNKNOWN, 0); }
	public KW_UNTIL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UNTIL, 0); }
	public KW_UPGRADE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_UPGRADE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER, 0); }
	public KW_USE_FRM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USE_FRM, 0); }
	public KW_USER_RESOURCES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_USER_RESOURCES, 0); }
	public KW_VALIDATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALIDATION, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VALUE, 0); }
	public KW_VAR_POP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VAR_POP, 0); }
	public KW_VAR_SAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VAR_SAMP, 0); }
	public KW_VARIABLES(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARIABLES, 0); }
	public KW_VARIANCE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VARIANCE, 0); }
	public KW_VERSION_TOKEN_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VERSION_TOKEN_ADMIN, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VIEW, 0); }
	public KW_VIRTUAL(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VIRTUAL, 0); }
	public KW_WAIT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WAIT, 0); }
	public KW_WARNINGS(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WARNINGS, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WITHOUT, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WORK, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WRAPPER, 0); }
	public KW_X509(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_X509, 0); }
	public KW_XA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_XA, 0); }
	public KW_XA_RECOVER_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_XA_RECOVER_ADMIN, 0); }
	public KW_XML(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_XML, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_keywordsCanBeId; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterKeywordsCanBeId) {
			listener.enterKeywordsCanBeId(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitKeywordsCanBeId) {
			listener.exitKeywordsCanBeId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitKeywordsCanBeId) {
			return visitor.visitKeywordsCanBeId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameBaseContext extends ParserRuleContext {
	public KW_CHARSET(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CHARSET, 0); }
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COLLATION, 0); }
	public KW_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_COUNT, 0); }
	public KW_CUME_DIST(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_CUME_DIST, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATABASE, 0); }
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DATE, 0); }
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DAY, 0); }
	public KW_DENSE_RANK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_DENSE_RANK, 0); }
	public KW_FIRST_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FIRST_VALUE, 0); }
	public KW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_FORMAT, 0); }
	public KW_GEOMETRYCOLLECTION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GEOMETRYCOLLECTION, 0); }
	public KW_GET_FORMAT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_GET_FORMAT, 0); }
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_HOUR, 0); }
	public KW_INVISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_INVISIBLE, 0); }
	public KW_LAG(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAG, 0); }
	public KW_LAST_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LAST_VALUE, 0); }
	public KW_LEAD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEAD, 0); }
	public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LEFT, 0); }
	public KW_LINESTRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_LINESTRING, 0); }
	public KW_MICROSECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MICROSECOND, 0); }
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MINUTE, 0); }
	public MOD(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.MOD, 0); }
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MONTH, 0); }
	public KW_MULTILINESTRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MULTILINESTRING, 0); }
	public KW_MULTIPOINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MULTIPOINT, 0); }
	public KW_MULTIPOLYGON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_MULTIPOLYGON, 0); }
	public KW_NTH_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NTH_VALUE, 0); }
	public KW_NTILE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_NTILE, 0); }
	public KW_PERCENT_RANK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_PERCENT_RANK, 0); }
	public KW_POINT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_POINT, 0); }
	public KW_POLYGON(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_POLYGON, 0); }
	public KW_POSITION(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_POSITION, 0); }
	public KW_QUARTER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_QUARTER, 0); }
	public KW_RANDOM(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANDOM, 0); }
	public KW_RANK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RANK, 0); }
	public KW_REVERSE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_REVERSE, 0); }
	public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_RIGHT, 0); }
	public KW_ROW_COUNT(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROW_COUNT, 0); }
	public KW_ROW_NUMBER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_ROW_NUMBER, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SCHEMA, 0); }
	public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SECOND, 0); }
	public KW_SESSION_VARIABLES_ADMIN(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SESSION_VARIABLES_ADMIN, 0); }
	public KW_SRID(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SRID, 0); }
	public KW_SYSTEM_USER(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_SYSTEM_USER, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIME, 0); }
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_TIMESTAMP, 0); }
	public KW_VISIBLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_VISIBLE, 0); }
	public KW_WEEK(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WEEK, 0); }
	public KW_WEIGHT_STRING(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_WEIGHT_STRING, 0); }
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_YEAR, 0); }
	public KW_JSON_VALUE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JSON_VALUE, 0); }
	public KW_JSON_TABLE(): TerminalNode | undefined { return this.tryGetToken(MySqlParser.KW_JSON_TABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return MySqlParser.RULE_functionNameBase; }
	// @Override
	public enterRule(listener: MySqlParserListener): void {
		if (listener.enterFunctionNameBase) {
			listener.enterFunctionNameBase(this);
		}
	}
	// @Override
	public exitRule(listener: MySqlParserListener): void {
		if (listener.exitFunctionNameBase) {
			listener.exitFunctionNameBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: MySqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionNameBase) {
			return visitor.visitFunctionNameBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


